[PHP-users 29461] uniqid()の引数について
shima tetuo
mlmlml @ lily.freemail.ne.jp
2006年 6月 21日 (水) 19:54:13 JST
tetuoです。
uniqidのマニュアルには下のような説明があります。
/////////////////////////////////////////////////////
uniqid
http://jp.php.net/manual/ja/function.uniqid.php
string uniqid ( [string prefix [, bool more_entropy]] )
uniqid() は、ミリ秒単位の現在時刻に基づき 先頭辞(prefix)を付けたユニー
クな ID を返します。prefix は オプションですが、有用です。....
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ユニークな ID またはトークンが必要な場合、そして、ネットワーク経由で ユー
ザにそのトークンを渡そうとする場合(例えば、セッションクッキー)、 次の
例のようにするのが推奨されます。
<?php
// prefix なし
$token = md5(uniqid());
^^^^^^^^^^^^^^^^^^^^^^^
// よりよい方法。推測されにくい
$better_token = md5(uniqid(rand(), true));
?>
/////////////////////////////////////////////////////
prefixはオプションと言うことなので、uniqid()だけでの呼び出しは問題ないは
ずですが、下のようなサンプルコードを実行するとWarningが発生し、uniqidの
戻り値もnullになってしまいます。
/////////////////////////////////////////////////////
<?php
var_dump(phpversion());
var_dump(uniqid()); //null
var_dump(md5(null)); //d41d8cd98f00b204e9800998ecf8427e
var_dump(md5(uniqid())); //d41d8cd98f00b204e9800998ecf8427e
/////////////////////////////////////////////////////
4.4.2
Warning: uniqid() expects at least 1 parameter, 0 given in
/path/to/this/script.php on line 4
Warning: uniqid() expects at least 1 parameter, 0 given in
/path/to/this/script.php on line 6
**********
環境
**********
windows 2000 server
php 4.4.2
**********
問題
**********
prefixは”オプション”と言うことにもかかわらず、指定しないとWarningが発
生することと、prefixを指定しないことにより?戻り値もnullというユニークな
IDではなく、マニュアルの使用例のようにするといつも同じIDが発生します。
これはマニュアルの問題なのでしょうか?uniqid()の実装の問題なのでしょうか?
分かる方、ご連絡お待ちしています。
tetuo
mlmlml @ lily.freemail.ne.jp
PHP-users メーリングリストの案内