ホームページ >バックエンド開発 >PHPチュートリアル >PHPで一意のカード番号を生成する方法
php で一意のカード番号を生成する方法
これはテレホンカードのようなもので、すべて数字であり文字はありません。
最初に思いついたのは、
N 桁の乱数 + データベース内のテーブルの自動インクリメント ID + N 桁の乱数
データベースは使いたくないので、時間という独自の基準を考えました。いくつかの乱数を使用してタイムスタンプを追跡します。
カード番号 16 が次のように生成されるとします。
タイムスタンプ 10 桁 + 6 桁の乱数 1316651745695261
ループ内で複数のカード番号を生成する必要がある場合があります。 、および前回のループ スタンプ (ループ内に他の時間のかかる操作がない限り、基本的に同じ) の場合、次の 6 桁の乱数が一意であることは保証できません。 microtime
を組み合わせて microtime を 10 回ループして呼び出すことを考えます:
0.80717200 1316675664
0.80720600 1316675664
0.80721300 1316675664
0.8 072 1900 1316675664
0.80722400 1316675664
0.80723000 1316675664
0.80723600 1316675664
0.80724100 1316675664
0.80724600 1316675664
0.80725200 6675664
807172だと思います 数字は見分けやすいです。コード:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> for($i=0;$i<10;$i++){ //echo $this->microtime_float(); echo $time = microtime(); $arr = explode(" ",$time); $micro = $arr[0]*100000000; $micro_str = substr($micro."",0,6); $timestamp = $arr[1]; echo "\t".$timestamp."".$micro_str; echo '<br>'; }