ユニークなIDを生成する方法
CakePHP 1.2RC3を利用しています。
ユーザ登録などでアカウントアクティベーションする際に、ユニークなIDを含むURLを発行してメールで送信し、そのURLにアクセスさせる方法は良く見られます。
ユニークIDをphpで出力する一例として
md5(uniqid(rand(),1));
という方法などでmd5関数の出力結果を用いる場合があります(下記URL参照)
http://d.hatena.ne.jp/kakku22/20081016/1224154493
CakePHPを使って、ユニークなIDを簡単に発行する方法は、コントローラで
$uuid = String::uuid();
とすると、$uuidに
494955da-0a5c-408f-ab20-0778ff2fc4a6
というようなユニークIDが含まれます。
これはCakePHPのcake/libs/string.phpのuuidメソッドを利用しています。
uuidメソッドのソースコードを見ると、サーバのIPアドレス、プロセスIDの取得の後に、下記のコードでuuidを生成しています。
list($timeMid, $timeLow) = explode(' ', microtime());
$uuid = sprintf("%08x-%04x-%04x-%02x%02x-%04x%08x", (int)$timeLow, (int)substr($timeMid, 2) & 0xffff,
mt_rand(0, 0xfff) | 0x4000, mt_rand(0, 0x3f) | 0x80, mt_rand(0, 0xff), $pid, $node);
return $uuid;
この実装は、下記のRFCに準拠しています。
http://www.ietf.org/rfc/rfc4122.txt