PHP Conference Japan 2024

OAuthProvider::generateToken

(PECL OAuth >= 1.0.0)

OAuthProvider::generateToken生成随机令牌

描述

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

生成一个伪随机字节的字符串

参数

size

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

strong

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

返回值

生成的令牌,作为一个字节的字符串

错误/异常

如果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 条注释

0
carlosouza at me dot com
12 年前
设置“strong”参数为true时要小心。

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

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

希望这能节省一些人在决定使用/dev/random熵时的麻烦
To Top