[PHP-users 34] Re: ユニークなIDを発行する方法
BAC
php-users@php.gr.jp
Wed, 13 Jun 2001 10:15:36 +0900
BACです。
On Wed, 13 Jun 2001 09:25:10 +0900
Go Tamura <t-go@geocities.co.jp> wrote:
>
> こんにちは。
>
> 個人の認証をひつようとするサイトを作っているのですが、IDを発行する際
> にどの方法を使うのがいいかなぁと考えています。
> が、それぞれに問題点がありそうです。
>
> 1.DB(postgresql)のシーケンスを使って連番を与える。
> これは安全っぽいのですが、メンバーの数が分かってしまうというか、増分を
> 変えてもいいですが、何かそのあたりが気になる。
連番のスタートを適当な番号にすることによってメンバーの数はわからなくな
ります。さらにチェックディジットを追加することでIDの正当性チェックができ
ますし、増分をばらつかせることにもなります。
> 2.phpで乱数を発生させて、それがユニークかどうかをチェックする。
> ユニークでなければ、発生させ直す。これの繰り返し。
> どんどん埋まって来たときに、ループがどの程度になるのか。
> 数字の5桁が埋まることはまず無いと考えてますが、安全という意味では!?
これはどんどん埋まってきたときの処理時間が膨大になります。重複となる可
能性が高くなるとともに、重複しているかどうかチェックする対象も増えるわけ
なので。
> 3.phpのuniqid()をつかう。どうも、この文字列って扱いにくいのですが、
> uniqid()って13桁以下にしたり、数字だけを発生させたりが出来ない?
ミリ秒単位でユニークであることを保証する、つまり、1日に8億以上のユニー
クIDを消費する限り、桁数はある程度以下には絞れないでしょうね。
ある程度のユーザ数であれば最初にランダム列を作っておいて、それを順に取
り出していくという方法も使えると思いますが・・・。
----------------------------------------------
BAC