Генератор паролей на php
Вторник, 17 августа 2010 г.Рубрика: PHP программирование -> Готовые решения
Просмотров: 1327
Подписаться на комментарии по RSS
Посмотреть демо
Сегодня мы создадим генератор паролей на php.
У нас будет генератор паролей состоящий из одного файла - generator.php.
Но по идее у нас должно быть два файла - файл с формой и обработчик, но мы упростим это в один файл.
Для начала создадим файл, в котором будет только форма:
<form action="generate.php" method="post"> <input type="text" name="text" value="<?=$password?>"/><br /><br /> <input type="hidden" name="pass"/> <input type="submit" name="submit" value="сгенерировать"/> </form>
У нас будет форма, где обработчик наш файл с формой, метод передачи post/
В форме есть поле под пароль, кнопка, и скрытый параметр - это нам понадобиться для генерации пароля в одном файле с формой.
Теперь в файл с формой добавим php код, с массивом из цифр и английских букв - он нам нужен для генерации пароля:
<?php
if(isset($_POST["pass"])){
$data=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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
}
?>
<form action="generate.php" method="post">
<input type="text" name="text" value="<?=$password?>"/><br /><br />
<input type="hidden" name="pass"/>
<input type="submit" name="submit" value="сгенерировать"/>
</form>
Теперь нам понадобится генерация случайной длины пароля, для этого будем использовать функцию rand:
<?php
if(isset($_POST["pass"])){
$data=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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$length_pass=rand(7,11);
}
?>
<form action="generate.php" method="post">
<input type="text" name="text" value="<?=$password?>"/><br /><br />
<input type="hidden" name="pass"/>
<input type="submit" name="submit" value="сгенерировать"/>
</form>
Теперь добавим цикл, в котором будем выбирать случайный символ из массива, и цикл будет длиться до длины пароля(от 7 до 11):
<?php
if(isset($_POST["pass"])){
$data=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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$length_pass=rand(7,11);
for($i=0;$i<=$length_pass;$i++){
$rand_sim=rand(0,(count($data)-1));
$password.=$data[$rand_sim];
}
}
?>
<form action="generate.php" method="post">
<input type="text" name="text" value="<?=$password?>"/><br /><br />
<input type="hidden" name="pass"/>
<input type="submit" name="submit" value="сгенерировать"/>
</form>
И наконец пропишем в условие else, если на кнопку не нажимали:
<?php
if(isset($_POST["pass"])){
$data=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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$length_pass=rand(7,11);
for($i=0;$i<=$length_pass;$i++){
$rand_sim=rand(0,(count($data)-1));
$password.=$data[$rand_sim];
}
}else{
$password='';
}
?>
<form action="generate.php" method="post">
<input type="text" name="text" value="<?=$password?>"/><br /><br />
<input type="hidden" name="pass"/>
<input type="submit" name="submit" value="сгенерировать"/>
</form>


для чего нужен генератор паролей? на сколько нужно его сделать прочным чтоб обезопасить логин от взлома?
Генератор паролей нужен, скажем, в регистрации или когда пользователь хочет сменить пароль - чтобы его не утруждать в этом, мы придумали такой вот простой скрипт.
Насчёт безопасности - я думаю не один хакер не сможет подобрать пароль из 11 символов, причём они будут с цифрами - можно ещё больше усложнить генератор - добавить в него и большие буквы - если в пароле будут заглавные и мелкие буквы + цифры - то это сделает подбор пароля практически невозможным!