OAuthProvider::generateToken
(PECL OAuth >= 1.0.0)
OAuthProvider::generateToken — ランダムなトークンを生成する
説明
擬似乱数を使ってランダムなバイトの文字列を生成します。
パラメータ
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() 関数の実装を使って残りのバイトを埋めます。
参考
- openssl_random_pseudo_bytes() - 疑似ランダムなバイト文字列を生成する
- mcrypt_create_iv() - Creates an initialization vector (IV) from a random source
+add a note
User Contributed Notes 1 note
carlosouza at me dot com ¶
12 years ago
Be careful when setting the 'strong' parameter to true.
If you system doesn't have enough entropy your script will block which can cause timeouts in other parts of your code.
In my case, the most serious symptom was my script blocking when trying to read from /dev/random and causing a 'MySQL has gone away' error.
Hopefully this saves someone the trouble when deciding to use /dev/random entropy
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google