генерация пароля на php

24-03-2009 02:22
В этом посте я покажу как написать простой генератор паролей с помощью PHP.
Вся соль заключается в доступе к символу строки, о которой частенько забывают (или даже не знают) программисты и начинают лепить на 50 строк кейсов или еще хуже - ифов). Все намного проще. Доступ к элементу (симовлу) строки осуществляется таким образом:

$stroka = "АБВГД";
echo $stroka{3}; /* Вернет "Г" */


Вот и основной алгоритм генерации пароля:
1. Определяем в строке $vals все символы пароля
2. Запускаем цикл повторяющийся столько раз, сколько символов необходимо получить
3. В итерации цикла, функцией rand получаем случайное число, которое и станет нашей позицией символа из строки $vals
4. Конкатенируем с результатом значение элемента из строки $vals.
5. Повторяем цикл и в итоге возвращаем строку $result


А вот и исходный код этой функции:

<?# Функция генерации пароля. Принимаемый аргумент - целое число, количество символов в пароле
function passgen($length)
{
# Все символы, которые будут использоватся в пароле
$vals = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_=+~!@#$%^&*()'"?><`";

# Запускаем цикл, в котором будем генерировать по одному символу пароля и добавлять его к строке результата до тех пор, пока в пароль не попадут столько символов, сколько мы указали в вызове функции
for($i=1; $i<=$length; $i++)
{
# Конкатенируем символ из строки паролей, позицию которого возвращает функция произвольного значения (rand)
$result.=$vals{rand(0, strlen($vals))};
}

# Возвращаем результат
return $result;
}