php怎么生成不重复的卡号
php如何生成不重复的卡号
就像电话卡似的,全是数字,不能带字母。
最开始想到是:
N位随机数+数据库一个表的自增id+N位随机数
不想用数据库,想到一个唯一的标准是时间。用时间戳跟上几位随机数。
假如这样生成16的卡号:
时间戳10位+6位随机数 1316651745695261
有时需要一个循环生成多个卡号,一个循环里前面的时间戳(基本是一样,除非循环里还有其它费时操作),后面的6位随机数无法保证唯一。想到结合microtime
循环调用microtime十次:
0.80717200 1316675664
0.80720600 1316675664
0.80721300 1316675664
0.80721900 1316675664
0.80722400 1316675664
0.80723000 1316675664
0.80723600 1316675664
0.80724100 1316675664
0.80724600 1316675664
0.80725200 1316675664
我想着是跟上位置在807172这里的数字便于区分开。代码:
- PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->for($i=0;$imicrotime_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>'; }
暂时是本地windows下测试不会有重复的,会不会有比较牛X的服务器计算能力猛,微秒也重复了?
另外这样生成的卡号也不好一眼能看出个啥啥的。又不能随意截取其中的几位怕失去了唯一性。不知道有木有好的方法。
比如移动充值卡生成机制?位数少一点的,太多了,人都晕了。。。
------解决方案--------------------
微秒数重复的可能性不大,况且你后面还有随机数,如果你不确定还可以增加usleep(1)等待下。
但如果服务器修改时间你就没法保证微秒数不重复了。
------解决方案--------------------
如果只用 时间戳(可重复)+随机数(可重复) 这样的话,是不能保证100%没冲突的......
建议:时间戳(可能重复)+随机数(可能重复)+数据库id或其它唯一值(唯一) 才能得到不重复的结果。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi

Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular

Melaksanakan penjadualan tugas teragih menggunakan rangka kerja web Golang rangka kerja Echo

Pembangunan Laravel: Bagaimana untuk melaksanakan komunikasi WebSockets menggunakan Laravel Echo dan Pusher?

Penjelasan terperinci tentang peranan dan penggunaan kata kunci gema dalam PHP

Terokai rangka kerja bahasa Go: 5 pilihan yang tidak boleh dilepaskan!
