OAuthProvider::generateToken

(PECL OAuth >= 1.0.0)

OAuthProvider::generateToken生成随机令牌

说明

final public static OAuthProvider::generateToken(int $size, bool $strong = false): string

生成一个 string 类型的伪随机字节。

参数

size

所需的令牌长度(以字节为单位)。

strong

设置为 true 表示将使用 /dev/random 作为熵源,否则将使用非阻塞 /dev/urandom。此参数在 Windows 上被忽略。

返回值

生成的令牌,为 string 类型的字节。

错误/异常

如果 strong 参数为 true,则当回退 rand() 实现用于填充剩余的随机字节时(例如,当最初没有找到足够的随机数据时),将发出 E_WARNING 级别的错误。

范例

范例 #1 OAuthProvider::generateToken() 示例

<?php
$p
= new OAuthProvider();

$t = $p->generateToken(4);

echo
strlen($t), PHP_EOL;
echo
bin2hex($t), PHP_EOL;

?>

以上示例将输出类似于以下内容:

4
b6a82c27

注释

注意:

当系统没有足够的随机数据可用时,此函数将使用内部 PHP rand() 实现来填充剩余的随机字节。

参见

添加注释

用户贡献的注释 1 个注释

carlosouza at me dot com
12 年前
在将 'strong' 参数设置为 true 时要小心。

如果您的系统没有足够的熵,您的脚本将被阻塞,这会导致代码的其他部分出现超时。

在我的案例中,最严重的症状是当我的脚本尝试从 /dev/random 读取时被阻塞,并导致 'MySQL has gone away' 错误。

希望这能帮助人们在决定使用 /dev/random 熵时避免麻烦。
To Top