[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 メーリングリストの案内