PHPでユニークな(一意な)IDを生成したい場合に「uniqid」という関数が利用できる.
string uniqid ([ string $prefix [, bool $more_entropy ]] )
マイクロ秒単位の現在時刻にもとづいた、接頭辞つきの一意な ID を取得します。
PHP: uniqid - Manual
$prefixなし
$prefix(接頭辞)なしで利用すると,13文字の文字列が生成される.
[例] 48f7146e6ea07
<?php echo uniqid(); echo uniqid(""); ?>
$prefixあり
$prefixに任意の文字列を指定すると,接頭辞の後に13文字の文字列が生成される
[例] UNIQ_48f718480b738
<?php echo uniqid("UNIQ_"); ?>
$prefixに乱数を指定する
マイクロ秒単位で変化するユニークIDとは言え,たかがマイクロ秒なので,同じマイクロ秒であれば同じIDが生成されてしまう.
そこで,$prefixに乱数を指定することで,同じマイクロ秒でも異なるIDを生成することができる.
桁を揃えたければ,乱数の生成範囲を限定すればよい.
<?php echo uniqid(rand()); ?>
$more_entropyをTRUEに
第二引数の$more_entropyをTRUEにすると,より細かなIDが生成される.
[例] 48f71b74d97242.89046663
<?php echo uniqid("",1); ?>
ユニークIDのハッシュ値を取る
より安全な(推測されにくい)文字列を得たい場合は,uniqid()で生成されたユニークIDのハッシュ値を取ればよい.
[例] 846189340160532f6c51bf26ab596f55
<?php echo md5(uniqid(rand(),1)); ?>