我正在尝试创建一个创建随机String的函数。此字符串应包含字母(仅限大写)和数字。它将用于激活产品。因此用户必须将其键入文本字段。 到目前为止,我发现了以下功能:
function random_str($length, $keyspace = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[random_int(0, $max)];
}
return implode('', $pieces);
}
我对随机函数没有太多经验。那么有什么可以改进的吗?或者你会建议一个不同的功能?
答案 0 :(得分:1)
要生成加密安全的随机字符串(我建议使用激活密钥),我宁愿使用 openssl_random_pseudo_bytes
您可以在here中找到文档that thread和一些有用的信息(例如,如何获取0-9A-Z字符的随机字符串,而不仅仅是0-9A-F)。
从PHP7.0起,您还可以使用random_bytes,这也是加密安全的。
答案 1 :(得分:-1)
使用 rand 功能代替'random_int'
function random_str($length, $keyspace =
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[rand(0, $max)];
}
return implode('', $pieces);
}
echo random_str('50');
// Output //
P7V55MYPQJGRNQ8W0VW7TRKBDK2B7NXWUT20F0P6J5Y7W63X20