$token = md5(microtime());
microtime()は「現在の Unix タイムスタンプをマイクロ秒まで返す」
ということだが、どういう値が返されるのかを理解していなかった。
print (microtime());
print (microtime(true));
結果は以下。
microtime() : 0.31242700 1640518960
microtime(true) : 1640518960.3124
えらい違いだ。10000分の1秒単位で更新されているので、
md5(microtime()) が同じ値を返すことはまずないが、中身を知らないまま使用していた。
先日、誤って以下のようにしてしまった。
$token = md5(time());
ページにアクセスがあったときにトークンを発生させるのだが、
同時アクセスがあると、高い確率で同じトークンが作成されてしまう。
このようなミスをするのは、microtime()をよく理解していないということ。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image