2024 日本 PHP 研討會

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