我想構建一個令牌號碼生成器。在每次通話中,都應該返回一個隨機和唯一的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