如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
当前回答
简单的“一行”字符串哈希生成器 (1byte = 2chars)
$hash = implode('-', [
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
]);
其他回答
这是一个简单的函数,允许您生成包含字母和数字(字母和数字)的随机字符串。还可以限制字符串长度。 这些随机字符串可用于各种目的,包括:推荐代码,促销代码,优惠券代码。 函数依赖于以下PHP函数: Base_convert, sha1, uniqid, mt_rand
function random_code($length)
{
return substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, $length);
}
echo random_code(6);
/*sample output
* a7d9e8
* 3klo93
*/
我在这里提供了一些很好的研究数据,基于斯科特的答案提供的功能。因此,我为这个为期5天的自动化测试设置了一个数字海洋液滴,并将生成的唯一字符串存储在MySQL数据库中。
在这个测试期间,我使用了5个不同的长度(5、10、15、20、50),每个长度插入+/- 50万条记录。在我的测试中,在50万个重复中,只有长度5产生了+/-3K个重复,其余长度没有产生任何重复。所以我们可以说,如果我们使用Scott函数的长度为15或以上,那么我们就可以生成高度可靠的唯一字符串。以下是我的研究数据:
更新
我使用这些函数创建了一个简单的Heroku应用程序,它将令牌作为JSON响应返回。该应用程序可以在https://uniquestrings.herokuapp.com/api/token?length=15上访问
function codeGenerate() {
$randCode = (string)mt_rand(1000,9999);
$randChar = rand(65,90);
$randInx = rand(0,3);
$randCode[$randInx] = chr($randChar);
return $randCode;
}
echo codeGenerate();
输出
38I7
33V7
E836
736U
生成一个随机数使用 你最喜欢的随机数 发电机 乘除 得到一个与数字匹配的数字 你的代码字母表中的字符 将该索引处的项插入 你的代码字母。 重复1),直到你有你想要的长度 想要
例如(伪代码)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough
使用下面的代码生成11个字符的随机数或根据您的要求更改数字。
$randomNum=substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 11);
或者我们可以使用自定义函数来生成随机数
function randomNumber($length){
$numbers = range(0,9);
shuffle($numbers);
for($i = 0;$i < $length;$i++)
$digits .= $numbers[$i];
return $digits;
}
//generate random number
$randomNum=randomNumber(11);