#php
#php
Вопрос:
Я хочу сгенерировать случайный пароль из 15 символов, который содержит КАК цифры, так и буквы. Есть ли простой способ сделать это?
Я хочу избежать ситуации, когда я получаю все цифры в пароле, но не хочу ставить перед паролем какие-либо буквы.
Ответ №1:
Сгенерируйте массив со случайным числом, случайным символом и 13 случайными символами / числами, а затем используйте shuffle
Комментарии:
1. Я думаю, что ваш метод выглядит выполнимым
Ответ №2:
Вы могли бы использовать:
$pw = substr(md5(uniqid()), 0, 15);
Я думаю, что при таком подходе маловероятно, что в итоге будут получены все числа.
Комментарии:
1. есть ли вероятность, что md5 выдаст все числа для первых 15 символов?
2. Я не знаю точно, как md5() работает внутри, но я не думаю, что это будет вероятно.
3. вы можете запускать функцию в цикле — до первого символа в [a-zA-Z]
4. Или что-то вроде
do {$pw = substr(md5(uniqid(rand(), true)), 0, 15);} while (preg_match('/^[0-9]*$/', $pw) || preg_match('/^[A-Z]*$/', $pw));
генерации паролей, пока вы не получите тот, который содержит не все цифры и не все буквы.5. Это огромный перебор. Смысл был в том, чтобы не разрешать пароли с номерами, поэтому вы можете просто проверить это с помощью
is_numeric($pw)
.
Ответ №3:
вы можете генерировать пароль в цикле до нужной вам длины строки пароля. Вы можете использовать функцию rand() внутри него, чтобы избежать символов continues . вы также можете использовать код ASCII для него с помощью функции char ()
Ответ №4:
Как насчет этого? Генерирует очень случайный буквенно-цифровой пароль из 15 символов.
$p = substr ( md5(uniqid(rand(), true)), 0, 15);
Комментарии:
1. есть ли вероятность, что md5 выдаст все числа для первых 15 символов?