Jump to content
CMSTOOLS.org - форум поддержки и развития CMS

Генерация случайного пароля с помощью PHP


timbios

Recommended Posts

В этом уроке вы узнаете, как генерировать случайные пароли с помощью удобной функции 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");

Надеюсь, этот урок был полезен для вас! Удачи в ваших проектах!

  • Upvote 2
Link to comment

Вот короче функция:

/**
 * Генератор паролей
 *
 * @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 by Семен
  • Upvote 2
Link to comment
  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...