アフィリエイト広告を利用しています

2021年12月29日

microtime()でトークン作成

トークンの作成は以下のようにしている。


$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()をよく理解していないということ。







posted by db-engineer at 00:00 | Comment(0) | PHP

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド