【发布时间】:2012-02-17 18:10:06
【问题描述】:
我希望根据我拥有的产品数量生成一个随机字符串。例如,我有 100 个名为“test”的产品,我希望能够生成 100 个唯一的产品代码。
我目前正在使用此代码:
<?php
/**
* The letter l (lowercase L) and the number 1
* have been removed, as they can be mistaken
* for each other.
*/
function createRandomPassword() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
// Usage
$password = createRandomPassword();
echo "Your random password is: $password";
?>
干杯
【问题讨论】:
-
您需要在某个时候包含对已创建日期时间的引用。您的随机数和使用模数不能保证返回唯一值。
-
值得注意的是 rand() 对随机整数来说是一个糟糕的选择 - 请查看
mt_rand()以获得更好的随机性。另外,当您删除 l 和 1 时,请查看仅使用 base58 - 这很相似,但出于可读性原因也删除了 o 和 0。