timbios Posted July 21, 2020 Report Share Posted July 21, 2020 В этом уроке вы узнаете, как генерировать случайные пароли с помощью удобной функции PHP. Всегда лучше использовать случайно сгенерированный пароль, а не ваше имя, день рождения, город и т. Д. В настоящее время большинство регистрационных форм требуют, чтобы вы вводили безопасный пароль и показывали предупреждающее сообщение, если пароль слишком простой. Если вы создаете систему регистрации для своего PHP-проекта, будет полезно предложить пароль людям, которые регистрируются. Используя PHP, довольно просто сгенерировать случайный пароль. Используя функцию ниже, вы можете указать, какие символы должны содержать ваши пароли, какая длина пароля и сколько паролей вы хотите сгенерировать. Результатом будет массив с сгенерированными паролями. <?php function randomPassword($length,$count, $characters) { // $length - длина сгенерированного пароля // $count - количество генерируемых паролей // $characters - типы символов, которые будут использоваться в пароле // определяем переменные, используемые в функции $symbols = array(); $passwords = array(); $used_symbols = ''; $pass = ''; // массив разных типов символов $symbols["lower_case"] = 'abcdefghijklmnopqrstuvwxyz'; $symbols["upper_case"] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $symbols["numbers"] = '1234567890'; $symbols["special_symbols"] = '!?~@#-_+<>[]{}'; $characters = split(",",$characters); // получитаем типы символов, которые будут использоваться для пароля foreach ($characters as $key=>$value) { $used_symbols .= $symbols[$value]; // строим строку со всеми символами } $symbols_length = strlen($used_symbols) - 1; //strlen начинается с 0, поэтому для получения количества символов вычитываем 1 for ($p = 0; $p < $count; $p++) { $pass = ''; for ($i = 0; $i < $length; $i++) { $n = rand(0, $symbols_length); // получить случайный символ из строки со всеми символами $pass .= $used_symbols[$n]; // добавляем символ в строку пароля } $passwords[] = $pass; } return $passwords; // возвращаем сгенерированный пароль } $my_passwords = randomPassword(10,1,"lower_case,upper_case,numbers,special_symbols"); print_r($my_passwords); ?> Вот несколько примеров, как генерировать разные случайные пароли с помощью PHP // создать один пароль, используя 5 символов верхнего и нижнего регистра randomPassword(5,1,"lower_case,upper_case"); // создать три пароля, используя 10 строчных букв и цифр randomPassword(10,3,"lower_case,numbers"); // создать пять паролей, используя 12 символов нижнего и верхнего регистра, цифры и специальные символы randomPassword(12,5,"lower_case,upper_case,numbers,special_symbols"); Надеюсь, этот урок был полезен для вас! Удачи в ваших проектах! 2 Quote Link to comment
Семен Posted July 21, 2020 Report Share Posted July 21, 2020 (edited) Вот короче функция: /** * Генератор паролей * * @param int $length - длина сгенерированного пароля * @param string $chars - символы, которые будут использоваться в пароле * @return string */ function generatePassword(int $length = 8, string $chars = '') { if (empty($chars)) $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $count = mb_strlen($chars); $result = ''; for ($i = 0; $i < $length; $i++) { $index = rand(0, $count - 1); $result .= mb_substr($chars, $index, 1); } return $result; } Захешировать пароль: $hash = password_hash('123456', PASSWORD_DEFAULT); echo $hash; // $2y$10$hqpo2yrbT.82aQkqFiRkie1Y09lhkijK5DtnoBQHDxEBWo/junDR6 Если хотите сгенерировать строку для имени файла или URL-адреса: $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyz'; echo substr(str_shuffle($permitted_chars), 0, 10);// Output: 54esmdr0qf Edited July 21, 2020 by Семен 2 Quote Link to comment
viiprogrammer Posted October 5, 2020 Report Share Posted October 5, 2020 В принципе можно вообще не парится и использовать связку uniqid(). rand(0, 999) Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.