В этом уроке мы научимся создавать скрипт генератор паролей заданной длины. Этот скрипт можно использовать в различных случаях. Например, для генерации пароля при регистрации на сайте, при восстановлении пароля.
Давайте начнем. Для начала создадим функцию и назовем ее randomPassword. Функция имеет два параметра – $length и $allow. В параметр $length вноситься значения дли пароля, которое будет генерироваться. Параметр $allow является необязательным. Он показывает, какие символы будут сгенерированы. Для примера возьмем все строчные буквы и цифры от 0-9.
function randomPassword($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") {
Следующим шагом создадим количество циклов, которые указаны в параметре $length. Для примера в этом цикле мы будем генерировать один случайный параметр, который добавим в окончательный случайный пароль.
$i = 1; while ($i <= $length) {
Теперь сгенерируем случайное число между 0 и количеством символов в параметре $allow и отнимем 1. Итак, если есть более 20 символов, случайное число генерируется между 0 и 19 – это потому, что в коде используется функция strlen() которая является ссылкой первый символ строки в качестве 0 вместо 1.
$max = strlen($allow)-1; $num = rand(0, $max);
Далее случайны случайным образом из параметра $allow выбирается значение. Затем это значение добавляется в переменную $ret, которая и будет нашим случайным паролем.
$temp = substr($allow, $num, 1); $ret = $ret . $temp;
После окончания цикла возвращается сгенерированный пароль. Наша функция завершена
$i++; } return $ret; }
Все, что осталось сделать сейчас, это запустить функцию в коде для генерации паролей, где нам нужно. Это делается просто вот так:
$password = randomPassword(10);
Приведенный выше пример будет генерировать случайные пароли из 10 символов. Вот еще один пример.
$password = randomPassword(10, '0123456789');
Приведенный выше пример будет генерировать случайные пароли из 10 символов и содержит только цифры.
Вот и все! И в конце привожу полный вид функции:
function randomPassword($length, $allow = "abcdefghijklmnopqrstuvwxyz0123456789") { $i = 1; while ($i <= $length) { $max = strlen($allow)-1; $num = rand(0, $max); $temp = substr($allow, $num, 1); $ret = $ret . $temp; $i++; } return $ret; }
Понравился урок? Добавьте его к себе в закладки.