Создание регистрации на сайте в php

Создание регистрации на сайте в php

26.03.2016

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

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

ЧТО В ОСНОВЕ ЭТОЙ СИСТЕМЫ

Создание такой системы регистрации – дело весьма несложное, она работает по следующему принципу:

  • Комбинирование формы авторизации с регистрацией (будет вводиться электронный адрес, и присутствовать кнопка для регистрации)
  • После записи посетителем в поле своего электронного адреса и нажатия кнопки для регистрации, создается очередная учетная запись, если такого адреса не обнаруживается по всей базе
  • В этом случае происходит формирование произвольно подобранного уникального перечня символов, отправляемого посетителю на вписанную электронную почту, как ссылка для подтверждения, активна на протяжении десяти минут
  • С помощью этой ссылки пользователь попадает на ресурс, а система идентифицирует набор символов и проводит авторизацию посетителя
В ЧЕМ ПЛЮСЫ И МИНУСЫ?

У каждой системы есть свои плюсы и минусы.

Основными плюсами такой системы регистрации на сайте являются:

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

Минусы данной системы:

  • Слабый уровень безопасности – при доступе к почте пользователя, любой человек может авторизоваться и попасть на сайт
  • Возможность перехвата электронного адреса. Но этим грешат все системы авторизации, в которых не используется пара логин/пароль
  • При неправильной настройке почтового сервера, ссылки для входа в систему в письмах могут попадать в папку «Спам»

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

ПРИНЦИП ПОЛЬЗОВАНИЯ ДАННОЙ СИСТЕМОЙ

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

  • Из интернета скачиваются исходники
  • Каждый архив содержит файл sql. Его необходимо импортировать к Вам в базу через импортирование через phpMyAdmin. Второй вариант – с помощью редактора текстов открываете данный файл, копируете SQL запрос и выполняете его
  • Открываете файл includes/main.php и заполняете те сведения, что относятся к связи с собственными данными и базой. Здесь же прописывается тот электронный адрес, с которого будут отправляться сообщения пользователям с уникальными символами
  • Необходимо на свой хостинг выгрузить файлы php, protected.php вместе с assets и includes (это папки с файлами)
  • На всех PHP-страницах, на которых должна отображаться форма регистрации/авторизации, необходимо дописать код (найти его в интернете не сложно)
  • У Вас все готово!

Если же Вам интересно разобрать создание регистрации для любого ресурса и принцип работы, то читайте далее.

Код в html

Для начала, пишется HTML – код по форме по авторизации. Он должен быть прописан в главном файле index.php. Сюда же вписывается PHP – код, обрабатывающий данные формы и выполняющий иные полезные функции.

В головной отдел добавляются главные стили (почитайте об этом отдельно), а до тега </body> подключается jQuery (файл библиотеки) с файлом script.js, написанным нами самостоятельно.

Что делает Java Script

Благодаря библиотеке jQuery происходит отслеживание состояние кнопки регистрации/авторизации, и отправка AJAX-запросов. Выведение того или иного сообщения, а так же дальнейшие шаги будут зависеть исключительно от сервера и его ответа.

В форму так же можно добавить класс .loading, который позволят отображать визуально нынешнее состояние AJAX-запросов. За счет него пользователи видят крутящуюся анимацию в виде gif-файла, указывающую на то, что происходит обработка запроса, и не допускающую повторной отправки запросов по тому же адресу. Другим флагом является класс .loggedIn – его устанавливают, когда отправляется электронная почта для мгновенной блокировки любых последующих действий с полем.

Работа схем в базе данных

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

В системе не используются пароли. Зато здесь есть целая колонка, отведенная под уникальные наборы символов token, а рядом расположена такая же, под названием token_validity. При подключении пользователя к системе и отправлении своего электронного адреса, происходит установление набора символов из первой колонки. А в соседней колонке устанавливается время отправки с дополнительными 10-ю минутами, через которые эти символы теряют свою активность и актуальность.

При попытке авторизации во второй таблице происходит пополнение новыми строчками. Обычно PHP-код прописывают с ограничениями на количество попыток для входа, зависящими от IP-адреса.

Наиболее популярный вариант ограничения по времени в PHP-коде – не более десяти попыток на десять минут и не более двух десятков попыток на час. При очередной попытке, превышающей этот лимит, произойдет блокирование IP-адреса до истечения необходимого времени.

PHP-код

Класс User.class.php находится в ответе за основную функциональность системы. В указанном классе происходит активное использование библиотек idorm (docs), которые играют роль мини — инструментов, которые необходимы Вам для базы данных. За счет них обрабатываются доступы к базам, генерируются наборы символов и их валидация. Это достаточно несложный интерфейс, которые подключает систему по авторизации/регистрации к ресурсу, если в нем используется PHP-код.

Генерация наборов символов происходит благодаря алгоритму SHA1, затем их сохраняют в базе. Чаще всего используется функция времени MySQL, чтобы задавать время активации и актуальности этих наборов символов.

Так же очень важным и нужным по функционалу является файл functions.php. Благодаря ему и его функциям – помощникам появляется возможность писать удобный и максимально читабельный код для остальных файлов.

Благодаря действиям rate_limit и rate_limit_tick происходит отслеживание того, сколько раз попытался зайти пользователь за определенное время с той секунды, как он попытался войти первый раз. Все попытки заносятся в базу, для них отведен отдельный столбец с названием reg_login_attempt.

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

Выход устроен и обрабатывается по аналогичному принципу.

Дополнительная защита

Для файла index.php требуется дополнительная защита – нет необходимости в том, чтобы однажды уже прошедшие авторизацию пользователи снова увидели эту форму. В таком случае применяют методику $user->loggedIn().

Под названием protected.php скрывается участок кода, ответственный за защиту каждой страницы Вашего ресурса и открывающий к ним доступ исключительно после прохождения авторизации/регистрации.

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

Вместо заключения

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

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