如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
如何可能生成一个随机的,唯一的字符串使用数字和字母用于验证链接?就像你在一个网站上创建了一个账户,它会给你发一封带有链接的电子邮件,你必须点击那个链接才能验证你的账户
如何使用PHP生成其中一个?
当前回答
这个人被一杯水呛到……
$random= substr(str_shuffle(" 0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvwxyz *.-_"), 0,10);
简单。 这个随机字符串重复的可能性是0,000000000000000000000000000001^70
其他回答
我用了这样一句话:
base64_encode(openssl_random_pseudo_bytes(3 * ($length >> 2)));
其中length是所需字符串的长度(能被4整除,否则它会四舍五入到最接近的能被4整除的数字)
我喜欢在处理验证链接时使用散列键。我建议使用微时间和使用MD5的哈希,因为没有理由为什么键应该是相同的,因为它是基于微时间哈希的。
$key = md5(rand()); $key = md5(微时间());
简单的“一行”字符串哈希生成器 (1byte = 2chars)
$hash = implode('-', [
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
bin2hex(random_bytes(3)),
]);
安全注意:在随机性质量可能影响应用程序安全性的情况下,不应使用此解决方案。特别是,rand()和uniqid()不是加密安全的随机数生成器。关于安全的替代方案,请参阅Scott的回答。
如果你不需要它随着时间的推移是绝对唯一的:
md5 (uniqid (rand()、true))
否则(假设你已经为你的用户确定了一个唯一的登录):
md5(uniqid($your_user_login, true))
以下是我使用的方法:
md5(time() . rand());
// Creates something like 0c947c3b1047334f5bb8a3b7adc1d97b