Студия веб дизайна, создание сайтов

Сопровождение и техническая поддержка сайтов

17 лет на рынке IT услуг, с нами надежно!

Функция генерирующая случайный пароль на php

Очень часто при создании сайтов возникает необходимость сгененрировать случайным образом пароль, название файла или что либо еще. Для этого можно воспользоватся несколькоми методами, о некоторых из них я расскажу в данной статье. Метод первый, использование случайно сгенерированного пароля нужной длинны, с возможностью выбора нужных символов и длинны пароля. Для этого нам потребуется небольшая функция.

function genPass($len,$sp){
$pass = "";
$ch = array('digits' => array(0,1,2,3,4,5,6,7,8,9),
            'lower' => array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'),
            'upper' => array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'));
               
if($sp){ $ch['spec'] = array('!','@','#','$','%','^','&','*','_','+'); }
$chTypes = array_keys($ch);
$numTypes = count($chTypes) - 1;

for($i=0; $i<$len; $i++){
    $chType = $chTypes[mt_rand(0, $numTypes)];
    $pass .= $ch[$chType][mt_rand(0, count($ch[$chType]) - 1 )];
}
return $pass;
}

Теперь достаточно вызвать функцию, указав в ней первым парамером количество символов и нужно ли нам или не нужно, использовать спецсимволы true | false. И мы получим набор случайных символов, нужной нам длинны.

echo genPass(10,false);
// Выведет случайную последовательность из 10 символов

Второй метод более простой, но и менее гибкий в настройке, он позволяет сгенерировать псевдо-случайный пароль, длинной до 32 символов (в стандартном варианте. если нужны более длинные строки, можно использовать несколько хэшей). Для этого мы воспользуемся комбинацией из нескольких функций и создадим хэш MD5 случайно сгенерированной строки, укоротив его до нужного размера.

echo substr(md5(uniqid(rand(),true)), 0, 15);
// Выведет случайную последовательность из 15 символов

Таким образом можно создавать случайные или псевдо-случайные пароли и т.д.