1
如果我們連續運行下面的代碼,有時我們發現它會在密碼中產生一些不應該得到的空間。避免產生密碼空間
誰能告訴如何避免從下面生成的密碼代碼空格字符:
下面是代碼:
function generateRandomPassword($length) {
srand((double)microtime()*1000000);
$password = "";
$vowels = array("a", "e", "i", "o", "u");
$cons = array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r",
"s", "t", "u", "v", "w", "tr", "cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "
st", "sp", "sw", "pr", "sl", "cl");
$num_vowels = count($vowels);
$num_cons = count($cons);
for($i = 0; $i < $length; $i++) {
$c = $cons[rand(0, $num_cons - 1)];
if (rand(0,1)) $c = strtoupper($c);
$v = $vowels[rand(0, $num_vowels - 1)];
if (rand(0,1)) $v = strtoupper($v);
$password .= $c . $v;
if (rand(0,4) == 0) $password .= rand(0,9);
}
return substr($password, 0, $length);
}
$pwd = generateRandomPassword(12);
echo $pwd;
基本調試:'如果(($ C == ' ')或($ V =='')){模具( 「拿到索引$ I空間」);}'或任何。找出空間來自何處/何時,並檢查當時系統的狀態。 –
我看不出會發生什麼。只是爲了確保我不會錯過某些顯而易見的事情,我將它運行了100,000次迭代。沒有空間。 – Steve
儘管如果上面的代碼是一個精確的副本,在你的'$ cons'數組中,元素''st「'有一個換行符,這將是不可取的,並且可能被誤認爲是空格字符 – Steve