如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
当前回答
我认为这是最好的方法。
str_shuffle(md5(rand(0,100000)))
其他回答
这是我在我的一个项目上使用的,它工作得很好,它生成了一个唯一的随机TOKEN:
$timestampz=time();
function generateRandomString($length = 60) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$tokenparta = generateRandomString();
$token = $timestampz*3 . $tokenparta;
echo $token;
请注意,我将时间戳乘以3,以引起用户的困惑,他们可能想知道这个令牌是如何生成的;)
我希望它能帮助你:)
以下是我使用的方法:
md5(time() . rand());
// Creates something like 0c947c3b1047334f5bb8a3b7adc1d97b
当尝试生成一个随机密码时,您正在尝试:
首先生成一组加密安全的随机字节 第二是将这些随机字节转换为可打印的字符串
现在,在php中有多种生成随机字节的方法,例如:
$length = 32;
//PHP 7+
$bytes= random_bytes($length);
//PHP < 7
$bytes= openssl_random_pseudo_bytes($length);
然后你想把这些随机字节转换成一个可打印的字符串:
你可以使用bin2hex:
$string = bin2hex($bytes);
或者base64_encode:
$string = base64_encode($bytes);
但是,请注意,如果使用base64,则不能控制字符串的长度。 你可以使用bin2hex来做到这一点,使用32字节将变成一个64字符的字符串。 但它只会在EVEN字符串中这样工作。
所以基本上你可以这样做:
$length = 32;
if(PHP_VERSION>=7){
$bytes= random_bytes($length);
}else{
$bytes= openssl_random_pseudo_bytes($length);
}
$string = bin2hex($bytes);
我总是使用这个my函数来生成一个自定义随机字母数字字符串…希望这对你有所帮助。
<?php
function random_alphanumeric($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345689';
$my_string = '';
for ($i = 0; $i < $length; $i++) {
$pos = random_int(0, strlen($chars) -1);
$my_string .= substr($chars, $pos, 1);
}
return $my_string;
}
echo random_alphanumeric(50); // 50 characters
?>
例如,它生成:Y1FypdjVbFCFK6Gh9FDJpe6dciwJEfV6MQGpJqAfuijaYSZ86g
如果你想与另一个字符串进行比较,以确保它是唯一的序列,你可以使用这个技巧…
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
while ($string_1 == $string_2) {
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
if ($string_1 != $string_2) {
break;
}
}
echo $string_1;
echo "<br>\n";
echo $string_2;
它生成两个唯一的字符串:
qsBDs4JOoVRfFxyLAOGECYIsWvpcpMzAO9pypwxsqPKeAmYLOi
Ti3kE1WfGgTNxQVXtbNNbhhvvapnaUfGMVJecHkUjHbuCb85pF
希望这就是你想要的……
<?php
function generateRandomString($length = 11) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
?>
上面的函数将生成一个随机字符串,长度为11个字符。