Генератор паролей для сайта

Дата публикации: 2013-11-14

100.jpg

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

Постановка задачи

Для сегодняшнего урока, я создал очень простую html страницу, которую мы будем использовать для сегодняшнего скрипта:

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Вот исходный код, данной страницы:

Используя данную страницу, мы с Вами должны создать скрипт, который будет выполнять генерацию пароля для пользователя. Конечно, решить данную задачу можно различными способами, но перед этим, давайте определимся какой, пароль должен получиться в результате генерации, что бы он был безопасным.

Итак, какой же пароль является безопасным? Это такой пароль, который очень сложно подобрать, так как очень часто процесс взлома учетной записи сводится к простому подбору пароля – то есть перебор символов, пока не найдется подходящая последовательность. Поэтому, согласитесь, если пароль будет состоять из малого количества символов и, к примеру, только из малых английских букв – его будет очень легко подобрать. Но если же мы создадим пароль, состоящий из малых и больших букв, а также включающий в себя цифры – это уже будет довольно сложный и безопасный пароль. Поэтому мы с Вами в данном уроке, реализуем генерацию двух видов паролей. Итак, давайте приступим.

Конфигурационный файл

Для реализации логики скрипта нам необходимо создать файл для хранения некоторых настроек, к тому же если Вы будете применять данный скрипт для своего сайта, то у Вас скорее всего будет свой конфигурационный файл. Поэтому, думаю, будет уместно его создать. Значит, создаем файл config.php и добавляем в него следующий код:

Настройка нам потребуется всего лишь одна – это количество символов пароля. Для хранения настроек будем использовать обычные константы. Сразу же давайте подключим данный файл к нашему тестовому сайту:

Первый вариант генерации пароля

Итак, теперь давайте создадим файл functions.php, который будем использовать для хранения функций генератора паролей. И сразу же подключим данный файл в файле index.php:

Также добавим вызов функции, которая собственно и будет возвращать сгенерированный пароль (опять же в файле index.php):

Теперь переходим в файл functions.php и начнем писать код функции get_pass():

Давайте посмотри в браузере, что получилось:

2.jpg

Как Вы видите, все нормально работает, но при такой генерации может возникнуть ситуация, когда будут повторяться рядом идущие символы. Поэтому давайте добавим небольшой код, который исправит эту проблему:

Смотрите, будем сравнивать символ, сгенерированный на предыдущей итерации цикла (если конечно это не первая итерация), с символом, полученным на текущей итерации. Если они равны, значит, необходимо повторить генерацию символа. Для этого уменьшаем счетчик итераций на единицу $i—, и переходим на следующую итерацию. Давайте еще раз посмотрим в браузере, что получилось:

3.jpg

Как Вы видите, все успешно работает. На всякий случай приведу полный код функции генерации пароля:

Второй вариант генерации пароля

Итак, мы с Вами рассмотрели, один из вариантов генерации случайного пароля. Теперь давайте рассмотрим еще один вариант.

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

Первым делом определяем символы, которые будут использоваться при генерации пароля. В этом примере мы будем использовать массивы для хранения набора символов:

И, к примеру, если получившееся число больше 9, значит, будем использовать чередование гласные — согласные. В другом случае – согласные- гласные.

Теперь для генерации пароля, необходимо создать цикл, в котором мы будем случайным образом, на каждой итерации цикла, получать символы из существующих массивов ($gl, $so) и добавлять их в переменную $result. Итак, цикл для чередования гласные-согласные:

Параметры цикла:

$i – счетчик итераций цикла;

$i < LENGTH – условие выхода из цикла — цикл выполняется пока счетчик итераций меньше значения константы LENGTH;

$i+=2 – действие после каждой итерации цикла. Так как на каждой итерации цикла мы будем получать по два символа пароля, значит, счетчик итераций нужно увеличивать на два.

В коде цикла действуем аналогично первому примеру, то есть случайно определяем индексы ячеек массива. Как обычно диапазон определения случайных чисел, задаем от нуля (индексация массива начинается с нуля) и до индекса последней ячейки массива. Индекс последней ячейки массива определяем, используя функцию count(), которая возвращает количество ячеек массива.

Но вначале, определяем индекс ячейки для массива гласных, а затем индекс – для массива согласных. И по этим индексам заносим символы в переменную $result. Аналогичный цикл для чередования согласные-гласные:

И в конце как обычно возвращаем полученный пароль – то есть переменную $result. Теперь давайте приведу полный код функции генерации пароля:

Давайте посмотрим, какой результат мы получив браузере:

4.jpg

На этом данный урок можно завершать. Всего Вам доброго, удачного кодирования. И увидимся в следующих уроках.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!php.jpg

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Смотреть Урок 8. Редактирование ролей, привилегий и категорийНанесение водяных знаков на изображение средствами PHP —>

Метки:генератор паролей

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

https://webformyself.com/generator-parolej-dlya-sajta/—>php-gen-password.jpg

В Интернете достаточно много самых различных сайтов, занимающихся генерацией пароля. В основном, там используется JavaScript, и это абсолютно правильно. Но я решил написать простой генератор паролей на PHP, чтобы показать, как можно это делать именно на PHP. С целью больше обучения, нежели практического его использования. Хотя и это бывает нужно. Самый просто пример — это генерация пароля у нового пользователя, который затем отсылается пользователю на e-mail. Таким образом, никакой процедуры активации вообще нет, при этом e-mail гарантированно настоящий (иначе пользователь никогда не войдёт).

Итак, давайте сразу разберём скрипт генератора паролей на PHP:

  /* Простейший генератор паролей только с символами a-z */   function genPasswordOne($length) {     $password = "";     for ($i = 0; $i < $length; $i++)       $password .= chr(mt_rand(97, 122)); // 97 - это a, а 122 - это z     return $password;   }   /* Более сложный генератор паролей с любыми символами */   function genPasswordTwo($length) {     $password = "";     /* Массив со всеми возможными символами в пароле */     $arr = 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', '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', '1', '2',       '3', '4', '5', '6', '7', '8',       '9', '0', '#', '!', "?", "&"     );     for ($i = 0; $i < $length; $i++)       $password .= $arr[mt_rand(0, count($arr) - 1)]; // Берём случайный элемент из массива     return $password;   }   echo genPasswordOne(6);   echo "";   echo genPasswordTwo(6);

В данном скрипте я привёл два обычных генератора паролей. Первый вариант — простейший, поскольку там могут присутствовать только символы от a до z. Второй генератор паролей тоже простой, но он более громоздский, зато более универсальный. Вы можете поставить абсолютно любые символы, которые хотите видеть в пароле. Но не забывайте, что второй скрипт примерно в 1.5 раза медленнее первого (хотя в абсолютном значении очень маленькое отличие).

Какой из вариантов генератора паролей на PHP, решать Вам. А моя цель была показать, как такое вообще можно сделать, чтобы было всё максимально просто и прозрачно.

  • date_article.png Создано 14.09.2012 14:26:00
  • icon_user.png Михаил Русаков
  • Главная»
  • Уроки

В этом разделе перечислены все уроки без разделения по рубрикам.

Выбирайте тот урок, который интересует Вас больше всего на данный момент. К каждому уроку Вы можете оставить свой комментарий, а также проголосовать.

1234 368

  • fornex_logo.jpg

    Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов

    Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

    Сложность:Создан: 23 Ноября 2018Просмотров: 7131

  • mini.jpg

    Разработка веб-сайтов с помощью онлайн платформы Wrike

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

    Сложность:Создан: 27 Июня 2018Просмотров: 8507

  • wordpress-joomla.png

    Почему WordPress лучше чем Joomla ?

    Этот урок скорее всего будет психологическим, т.к. многие люди работают с WordPress и одновременно с Joomla, но не могут решится каким CMS пользоваться.

    Сложность:Создан: 26 Августа 2017Просмотров: 20169

  • wp.jpg

    Про шаблоны WordPress

    После установки и настройки движка нам нужно поработать с дизайном нашего сайта. Это довольно долгая тема, но мы постараемся рассказать всё кратко и ясно.

    Сложность:Создан: 3 Августа 2017Просмотров: 18257

  • thumbnail.png

    Анимация набора текста на jQuery

    Сегодня мы бы хотели вам рассказать о библиотеке TypeIt — бесплатном jQuery плагине. С её помощью можно имитировать набор текста. Если всё настроить правильно, то можно добиться очень реалистичного эффекта.

    Сложность:Создан: 26 Июля 2017Просмотров: 25948

  • wp.jpg

    Самые первые настройки после установки движка WordPress

    Сегодня мы вам расскажем какие первые настройки нужно сделать после установки движка WordPress. Этот урок будет очень полезен для новичков.

    Сложность:Создан: 24 Июля 2017Просмотров: 16984

  • strategy.jpg

    10 стратегий эффективного продвижения статей в блогах на WordPress

    Продвижение статей в блоге — непростая задача. Часто бывает, что вы пишете действительно хороший контент, включаете визуальные эффекты, делаете правильные корректировки SEO, но это не дает ожидаемого результата.

    Сложность:Создан: 22 Июля 2017Просмотров: 14858

1234 368 Используемые источники:

  • https://webformyself.com/generator-parolej-dlya-sajta/
  • https://myrusakov.ru/php-gen-password.html
  • https://ruseller.com/lessons.php

Ссылка на основную публикацию