1
Если мы постоянно запускаем код ниже, иногда мы обнаруживаем, что он генерирует какое-то SPACE в пароле, который не должен быть получен.Избегайте места из сгенерированного кода пароля
Может кто-нибудь, пожалуйста, как избежать символа пробела снизу сгенерированного кода пароля:
Вот код:
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;
основной отладки: 'если (($ с == ' ') или ($ v =='')) {умереть ("получил место с индексом $ I");}' или любой другой. выяснить, где/когда пространство идет, и проверить состояние вашей системы в этой точке. –
Я не вижу, как это произойдет. просто чтобы убедиться, что я не пропустил что-то очевидное, я побежал за 100 000 итераций. Нет пробелов. – Steve
Хотя, если код выше является точной копией, в вашем массиве '$ cons' элемент' 'st" 'имеет разрыв строки в нем, что было бы нежелательным и, возможно, ошибочным для пробельного символа – Steve