• このエントリーをはてなブックマークに追加

PHPでユニークな値を取得したい。
どうしても値を同じにしたくない時に便利な関数があります。uniqidってやつです。
次のようにこの関数を利用すれば被る可能性の比較的低い値を取得することができます。

$value = md5(uniqid(rand(), true));

uniqidじゃ他とかぶるからどうするかっていうとrandなどと組み合わせてさらに複雑化する。
さらに日付などを付加すると被る可能性は下がる。ただ何しても完全にバッティングしないという保証はできない。
どうしてもって時はIDをDBやテキストファイル等に保存しておくなどの措置が必要かと思う。それを利用して生成する。

経緯

ユーザー情報を登録するプログラムを遊びで考えていた時にどうしてもかぶってほしくないデータを登録したいと思った。
それで完璧は無理だと思いつつも、かぶりにくい関数やらを探していた。

最初は日付にしようとしていたけれども、それだけでは同じ時刻にアクセスした人と被る可能性が(ごくわずかだけど。)。
そこで、ランダムにしようとしたけれども、randじゃあ範囲が狭いし。

ぐにょぐにょ調べていたらuniqidという関数があるということを調べられた。

それで、ブログやら情報サイトを駆け巡って上記の組み合わせ関数を設置することにした。

PHP: uniqid – Manual