PHP Secure Login Script 2018 и 2017 - Учебник для полной системы входа PHP MySQL с решением для PDO - PHP Secure Login и блог пакета регистрации

  1. содержание
  2. Что может сделать этот класс системы безопасного входа в систему PHP?
  3. Отправка форм JavaScript и AJAX
  4. Сценарий процесса регистрации
  5. Сценарий процесса выхода
  6. Сценарий раздела зарегистрированного пользователя
  7. Загрузите учебный класс и сценарии PHP Login System

содержание

ООП Учебное пособие по входу в PHP: Что такое система безопасного входа в PHP с регистрацией?

Что может сделать этот класс системы безопасного входа в систему PHP?

Скрипт стартовой страницы безопасного входа в PHP

Отправка форм JavaScript и AJAX

Сценарий процесса входа

Сценарий процесса регистрации

Сценарий процесса активации

Сценарий процесса выхода

Файл сценария конфигурации

Сценарий раздела зарегистрированного пользователя

Войти по одному пользователю за раз

Загрузите учебный класс и сценарии PHP Login System

Журнал изменений

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

Система безопасного входа в систему и регистрации должна избегать инъекций SQL, используя, например, подготовленные операторы базы данных с PDO, использовать надежный метод хеширования паролей, чтобы минимизировать вероятность того, что в случае утечки учетных записей пользователей на сайте невозможно или, по крайней мере, очень трудно обнаружить пользователей. 'пароли и ограничить количество попыток того, что пользователь может потерять пароль, чтобы избежать атак методом перебора.

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

Я буду использовать Bootstrap и jQuery для пользовательского интерфейса и отправки форм с использованием запросов AJAX или регулярной отправки страниц форм. Не беспокойтесь, если вы не используете AJAX везде. Учебное пособие представлено таким образом, чтобы предложить больше людей, чтобы они могли воспользоваться знаниями, которыми они здесь делятся.

Этот класс предоставляет простой способ регистрации новых пользователей. Он поддерживает безопасный процесс входа в PHP после активации с кодом подтверждения входа, отправленным на их адрес электронной почты. Он использует jQuery для отправки форм с помощью AJAX-запроса к сценариям, которые действуют как REST API, но также могут использоваться непосредственно с PHP-сценариями, которые обслуживают страницы входа в систему.

Этот класс также предоставляет в PHP решение для блокировки пользователя после нескольких попыток входа в систему , я имею в виду, что он позволяет вам указать количество неправильных попыток, которые он разрешает перед блокировкой учетной записи. Это также позволяет пользователям выходить из системы, изменять их пароли и иметь различные разрешения в зависимости от роли пользователя.

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

Он поддерживает PDO , поэтому вы можете использовать его для хранения записей базы данных пользователей, используя MySQL , PostgreSQL , SQLite и другие. Приведенный здесь пример объяснит, как использовать его с MySQL. Он может использовать MySQLi вместо PDO, но будет более полезным, если вы сможете использовать этот код повторно с другими типами баз данных.

Поскольку мы можем использовать PDO также с SQLite, мы можем использовать для входа в PHP без базы данных , я имею в виду реальный сервер базы данных, поскольку SQLite хранит базу данных в локальных файлах.

Этот класс также может быть расширен для реализации социальной системы входа в систему, использующей OAuth для входа в систему через Facebook , Yahoo, Google, YouTube, Gmail, Microsoft, LinkedIn, GitHub, BitBucket, Instagram, Tumblr, deviantart, WordPress, ODesk и многие другие.

Но для этого вам нужно будет использовать и другие классы для входа в систему с OAuth или даже LDAP для входа , Хорошей идеей для будущих улучшений является также поддержка СМС логин Я имею в виду использование метода для отправки кода через SMS, чтобы пользователь мог доказать, что он владеет данной учетной записью, или даже проверить MAC-адрес ограничить доступ пользователям в локальной сети. Но пока давайте будем простыми.

Нам понадобится стартовая страница, где посетители могут зарегистрироваться или войти. Я использую Bootstrap для создания простой страницы, на которой у нас есть две вкладки, одна для входа в систему, а другая для регистрации.

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

<? php require_once '../class/user.php'; require_once 'config.php'; $ User-> indexHead (); $ User-> indexTop (); $ User-> LoginForm (); $ User-> activationForm (); $ User-> indexMiddle (); $ User-> registerForm (); $ User-> indexFooter (); ?>

Этот класс использует шаблоны сценариев, которые вы можете найти в вкл каталог. Если вы посмотрите на файлы шаблонов, то увидите, что мы используем jQuery и Bootstrap, а также два пользовательских файла: один для CSS, а другой для JS.

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

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

В файле main.js я использую запросы jQuery и AJAX. Это важно, если мы хотим использовать метод REST API. Это очень полезно, если мы хотим отделить внешний интерфейс от внутреннего.

$ (function () {$ ('# login-form-link'). click (function (e) {$ ("# login-form"). delay (100) .fadeIn (100); $ ("# register) -form "). fadeOut (100); $ ('# register-form-link'). removeClass ('active'); $ (this) .addClass ('active'); e.preventDefault ();}); $ ('# register-form-link'). click (function (e) {$ ("# register-form"). delay (100) .fadeIn (100); $ ("# login-form"). fadeOut (100); $ ('# login-form-link'). RemoveClass ('active'); $ (this) .addClass ('active'); e.preventDefault ();});}); функция validateEmail ($ email) {var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]]2, enj)?$/; вернуть emailReg.test ($ email); }

Первые два раздела в коде JavaScript предназначены для переключения между вкладками. Далее я использую кнопки отправки в каждой форме. Поскольку мы используем jQuery и AJAX, мы не будем отправлять форму классическим способом, а скорее получим значения из входных данных с помощью jQuery и передадим значения с помощью запроса AJAX POST в скрипты PHP внутреннего интерфейса.

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

Для входа в систему скрипт получает опубликованные данные и передает их методу входа в класс. Если вход успешен, он назначит пользовательские данные переменным входа в сеанс и ничего не возвращает в качестве результата. Если есть ошибка, она напечатает ее.

Не забывайте, что мы вызываем этот скрипт через AJAX, поэтому все, что выводит скрипт, будет доставлено в результате вызова AJAX в JavaScript.

<? php require_once '../class/user.php'; require_once 'config.php'; $ email = filter_input (INPUT_POST, 'username', FILTER_SANITIZE_EMAIL); $ password = filter_input (INPUT_POST, 'password', FILTER_DEFAULT); if ($ user-> login ($ email, $ password)) {die; } else {$ user-> printMsg (); умереть; }

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

<? php require_once '../class/user.php'; require_once 'config.php'; $ email = filter_input (INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $ fname = filter_input (INPUT_POST, 'fname', FILTER_SANITIZE_STRING); $ lname = filter_input (INPUT_POST, 'lname', FILTER_SANITIZE_STRING); $ pass = filter_input (INPUT_POST, 'password', FILTER_DEFAULT); if ($ user-> registration ($ email, $ fname, $ lname, $ pass)) {print 'Письмо с подтверждением отправлено, подтвердите регистрацию вашей учетной записи!'; умереть; } else {$ user-> printMsg (); умереть; }

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

<? php require_once '../class/user.php'; require_once 'config.php'; $ email = filter_input (INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $ code = filter_input (INPUT_POST, 'code', FILTER_DEFAULT); if ($ user-> emailActivation ($ email, $ code)) {die; } else {$ user-> printMsg (); умереть; }

Для процесса выхода из системы я использую метод выхода из системы в пользовательском классе. После завершения процесса выхода из системы мы просто перенаправляем пользователя на index.php. В этом примере процесс выхода из системы не запускается через AJAX. Если мы вызываем его через AJAX, то перенаправление выполняется с помощью кода JavaScript, а не в PHP.

<? php require_once '../user.php'; require_once 'config.php'; $ User-> выход из системы (); заголовок ('location: index.php'); ?>

Важный файл, который мне нужно описать - это config.php. Необходимо указать детали подключения к базе данных и начать сеанс. Этот класс входа и регистрации не будет работать без сессий. Он также создаст объект класса пользователя, чтобы мы могли использовать его в любом другом файле. Как вы видели раньше, мы включали этот скрипт каждый раз после самого класса.

Также нам нужно указать файлы, которые мы используем в функциях генерации HTML. В этом случае user.php, login.php, activ.php и register.php. Вы можете настроить эти файлы.

<? php session_start (); define ('conString', 'mysql: host = localhost; dbname = login'); define ('dbUser', 'root'); define ('dbPass', 'root'); define ('userfile', 'user.php'); define ('loginfile', 'login.php'); define ('activfile', 'activ.php'); define ('registerfile', 'register.php'); ini_set ('display_errors', 1); ini_set ('display_startup_errors', 1); error_reporting (E_ALL); $ user = new User (); $ user-> dbConnect (conString, dbUser, dbPass); ?>

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

Для этого урока я создал пример того, что может быть в этом разделе в файле user.php script. Вы можете заметить два случая. Если обычный пользователь вошел в систему, он покажет ему только свою информацию. Но если пользователь является администратором, в этом случае его идентификатор роли равен 2 (вы можете изменить его на любой идентификационный номер), тогда он видит список всех пользователей в системе.

<? php require_once '../class/user.php'; require_once 'config.php'; if (IsSet ($ _ SESSION ['user'] ['id']) {$ user-> userPage ();} else {header ('Location: index.php');}?>

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

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

это PHP безопасный вход и регистрация является достаточно полным классом для создания системы входа в систему и регистрации, которую вы можете использовать в любом приложении независимо от того, используете ли вы такие фреймворки, как CodeIgniter, Zend, Symfony и т. д.

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

Вы можете скачать полный пакет ZIP архивировать со страницы загрузки или установить его с помощью инструмента composer, используя инструкции на той же странице ,

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

2017-03-27: Добавлено больше информации о загрузке и установке с помощью инструмента composer.

2017-01-01: обновлена ​​статья, чтобы отразить, что они по-прежнему безопасны в 2017 году

Что может сделать этот класс системы безопасного входа в систему PHP?
Lt;?
PreventDefault ();});}); функция validateEmail ($ email) {var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]]2, enj)?
Lt;?
Lt;?
Lt;?
Lt;?
Php'; $ User-> выход из системы (); заголовок ('location: index.php'); ?
Lt;?