我想构建一个令牌号码生成器。在每次通话中,都应该返回一个随机和唯一的8位数字。我正在使用PHP和MySQL。在MySQL中,我将有一张表格,我将在每次插入新序列时生成它。生成随机唯一序列号
如何在每次通话中生成新号码?
令牌将用于最终用户激活软件(并且将在1周后过期)。所以,我需要令牌独特而不是连续的。这更好地描述了我的需求。令牌格式将只是数字,因此它可以很容易拼写和打字。
即使令牌过期,我也不想在以后生成已经生成的令牌。
谢谢
我想构建一个令牌号码生成器。在每次通话中,都应该返回一个随机和唯一的8位数字。我正在使用PHP和MySQL。在MySQL中,我将有一张表格,我将在每次插入新序列时生成它。生成随机唯一序列号
如何在每次通话中生成新号码?
令牌将用于最终用户激活软件(并且将在1周后过期)。所以,我需要令牌独特而不是连续的。这更好地描述了我的需求。令牌格式将只是数字,因此它可以很容易拼写和打字。
即使令牌过期,我也不想在以后生成已经生成的令牌。
谢谢
好了,这个代码不将序列号到数据库中,但它会返回一个序列号,8位数字。如果你只想要数字,将允许的字符变量改为数字。
<?php
function generate_serial_number() {
$Allowed_Charaters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
return substr(str_shuffle($Allowed_Charaters), 0, 8);
}
?>
谢谢你的发电机,但是这不符合数字独特的要求。当然,我可以将它插入数据库,直到我没有错误(由于相对列的唯一定义)。 –
我通常使用http://php.net/manual/en/function.uniqid.php与more_entropy参数设置为true。
听起来不错,但我们怎样才能摆脱那里的alpha? –
去掉它们。使用preg_replace()。但要小心,你可以碰撞。 – Napolux
使用Mysql自动增量并以10,000,000开始。 –
是这个有效的'11223344'?或者所有数字都是唯一的'12345678'? –
@ROYFinley,虽然会生成唯一的ID,但它们很难被描述为随机 – Crisp