Как сделать так чтобы на сайте можно было регистрироваться

Добавил пользователь Евгений Кузнецов
Обновлено: 10.09.2024

Всем привет! У людей, которые начинают осваивать язык PHP, почти сразу возникает вопрос - "как сделать регистрацию на сайте?". Иногда даже - "Как сделать правильно?".

Логика данного процесса такова:

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

Это грубая схема работы регистрации/авторизации для сайта.

Конечно, для реализации какой либо регистрации необходим хостинг который поддерживает PHP, а так же MySql. Иначе вы просто не сможете сохранить данные о пользователе, соответственно и зарегистрироваться он не сможет.

Если подумать, то можно сделать все достаточно просто. Можно даже обойтись без базы данных (хотя я не рекомендую так делать), однако остается резонный вопрос - "А безопасно ли это будет работать?".

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

Как обезопасить свой сайт

Для безопасности вашего сайта, важны несколько пунктов.

  • Проще всего делать сайт с единой точкой входа. Коротко об этом поговорим чуть ниже.
  • Экранировать все запросы. Сделать это можно в ручную или же с помощью подготовленных запросов.
  • Ограничивать данные которые может ввести пользователь

Единая точка входа

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

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

Подробнее разберем эту тему в другой статье, а пока давайте создадим фундамент нашего сайта.

В корне сайта нужно создать файл ".htaccess" и прописать в нем правила переадресации.

Этот файл даст хостингу понять, что мы включаем переадресацию на index.php всех запросов, кроме картинок, стилей css и js скриптов.

Экранизация запросов

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

  • Ручная проверка данных
  • С помощью подготовленных запросов

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

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

Давайте теперь сохраним этот файл. Так как будем его использовать дальше. Назовем его к примеру login.php и положим его в корень сайта.

Index.php, обработка запросов

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

Маршрутный файл мы написали. Давайте теперь подключим базу данных.

Для начала создадим базу

Обычно это делается через PhpMyAdmin. Создаем новую базу данных и назовем к примеру "reg".

После создания она появиться чуть ниже, нажмите на нее. Жмем "создать таблицу". Далее нужно указать какие поля будем использовать. К примеру у нас будет только 3 поля: id, login, password.

создание таблицы базы данных mySql

Id будет цифровым, два остальных текстовыми полями. На id нужно нажать на A_I (чтобы цифра сама увеличивалась). Собственно все, база для теста создана.

Подключение к MySql в PDO

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

Итоги

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

Вы наверное заметили что мы не сделали страницу выхода из аккаунта. Да, так и есть, попробуйте сделать ее сами. Оставлю только подсказку, сессию можно удалить с помощью функции
"session_destroy()", что будет означать что мы вышли из аккаунта.



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

Вот мы и подготовились к написанию самой регистрации. Для этого создадим файл db.php в котором мы подключим rb.php и для него подключим базу: (подключение взято от сюда) не забудьте заменить на свои данные!Приступим к написанию формы регистрации. Создадим файл signup.php внутри напишите вашу форму регистрации. Я буду запрашивать: Имя, почту (как логин), пароль, повторить пароль, немного о себе и фото (аватарка)Мы скрыли поле изображений, т. к. это будет в будущей статье!
Вот и готов наш сайт. Но он не красивы, но это мы исправим в будущем. Сейчас нас волнует запись пользователя в базу, для этого в начале страницы пишем: Таким образом мы подключили базу, после чего из пришедших данных всё записали в $data и проверяем на название кнопки (у меня это registration в форме). После сохранения проверьте на сайте, при нажатие на кнопки 'зарегистрироваться' у вас появится текст 'Отлично)'
Если текст не появился, то проверьте свой код, обязательно проверьте название кнопки и то что написано в проверке php
Если проверка прошла, то стираем echo 'Отлично'; и вместо него пишемТаким не хитрым способом мы проверили на пустоту полей. Теперь давайте вернемся к форме и в атрибуте value сделаем ввод данных сайтом, если пользователь уже пробовал зарегистрироваться. Для этого просто нужно обратиться к нашему $data и вывести нужную строку для того или иного input’а. Пример:Что в итоге получилось у меня:

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

Пользователь зарегистрировался, а зайти не может. Не правильно это, создадим файл signin.php в котором расположим форму с полем Логина (У меня это почта) и паролем:Форма есть, давайте теперь обработаем её, в начале будет похоже с регистрацией, единственное уменьшается кол-во полей:Теперь снова при помощи R:findOne найдем пользователя по введенной почте:
У нас получиться такой код php части:

Но теперь нам надо запустить сессию на странице, чтобы в дальнейшем работать с ней. Для этого в файле db.php в конце пропишем:

ВНИМАНИЕ: Может появляться предупреждение после подключения файла db.php Лечение очень легкое: 1. Найти файл php.ini (у Open Server Panel — просто нажать значок на панели задач, правой кнопкой мыши кликнуть по значку, выбрать дополнительно -> Конфигурация -> php Версия). В этом конфиге нужно output_buffering = Off поставить на On. Получиться output_buffering = On

Если у вас используется файл header или footer на каждой странице, то можете написать в одном из них. Самое главное что мы на страницах должны запускать сессию. Проще конечно же не писать лишний раз запуск сессии, а просто подключить часто используемый скрипт на всех страницах, как у нас db.php

Теперь нужно просто записать данные пользователя в глобальную переменную $_SESSIONТеперь давайте подключим db.php к нашей главной страницу index.php и выведем почту под кнопками регистрации и авторизации, в начале index.php пропишите:Теперь после кнопок нужно при помощи php вывести данные из сессии:Для упрощения можно после

Создаем новый файл logout.php в котором сразу подключаем db.php
Для деавторизации мы используем unset, а после чего перекинем пользователя на главную страницу используя header:
unset($_SESSION['user']); Внутри мы указали название сессии в которую мы записывали данные пользователя при авторизации
header('Location: /'); После ':' указали страницу куда перенаправим пользователя. В нашем случае это главная страница сайта
Полный код logout.php

  • Создание новостей на главной странице
  • Создание верхнего меню (header)
  • Создадим небольшую 'админ панель'

Сегодня я хотел рассказать вам как создать пользовательскую страницу регистрации пользователей на вашем сайте или блоге WordPress.

Я понимаю, что для авторского блога — это лишнее, но мало ли что да как). Может у вас есть постоянные авторы и им нужен отдельный вход.

Как создать пользовательскую страницу регистрации пользователей в WordPress

Разрешение регистрации пользователя в WordPress

Разрешение регистрации пользователя в WordPress

По умолчанию вы получаете 5 пользовательских ролей:

  • подписчик
  • автор
  • редактор
  • участник
  • администратор

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

Как создать пользовательскую страницу регистрации пользователей в WordPress

Вариант 1. Используйте регистрационную форму WordPress

Используйте регистрационную форму WordPress

приведет их к экрану входа WP

перенаправлены на страницу регистрации

URL-адрес регистрации WordPress

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

Вариант 2: Использовать плагин

Использовать плагин

Ultimate Member

сли форма по умолчанию не работает

любое количество сведений

Shortcode box

Когда это будет сохранено, вы увидите, что вся форма появится на боковой панели (или там, где выведен ваш виджет).

форма появится на боковой панели

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

вставить новый шорткод

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

Конечный результат

Самое приятное в этой конкретной форме — то, что кнопка регистрации видна и не скрыта, как кнопка WordPress по умолчанию.

Управление новыми пользователями

Управление новыми пользователями

Member Directories

Другие вещи для рассмотрения

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

Создать пользовательский URL для входа

Настройте страницу входа в WordPress по умолчанию

Во-вторых, вы можете настроить саму страницу входа в WordPress. Если вы предпочитаете сохранить стандартные URL-адреса входа и регистрации в WordPress, вы можете полностью изменить дизайн и изменить его в соответствии с вашим брендом. Для этого нужно немного разбираться в файлах ядра WP и PHP, но если вы это сделаете, то тусклая серая страница, которую вы получите при установке, может быть выровнена настолько, насколько вы захотите.

Заключение

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

А на этом все — жду вас ровно через четыре дня!

Обо мне

Занимаюсь созданием сайтов на WordPress более 6 лет. Ранее работал в нескольких веб-студиях и решил делиться своим опытом на данном сайте. Пишите комментарии, буду рад общению.

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

Навигация по статье:

Как включить пользовательскую регистрацию в WordPress

включить регистрацию на сайте

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

Теперь, все кто пожелает, могут зарегистрироваться на вашем WordPress сайте.

Добавление ссылки входа в учетную запись WordPress

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

Вам нужно добавить ссылку на страницу авторизации в системе и регистрационную страницу.

Это можно сделать двумя способами:

  • Добавить специальный виджет в сайдбар
  • Создать свою страницу входа в учетную запись

Добавление виджета в сайдбар

Самый простой способ добавить ссылку авторизации – это добавить Мета-виджет на боковую панель.

Для этого нужно:

добавление виджета МЕТА

мкню пользователя

страница авторизации WordPress

Добавляем стили для виджета

Как вы видели на скриншоте далеко не каждая тема имеет набор стилей для этого виджета, поэтому если вы хотите как то стилизовать этот виджет, то вам прийдётся дописать несколько css свойств в файл Style.css вашейт темы.
Напоминаю,что данный код нужно добавлять в самом конце данного файла!
А вот и сам код с комментариями в тех строках, где можно поменять цвет, размер и т.д.

Вот что у меня получилось в итоге:

меню пользователя на сайте

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

Так как стандартная страница входа в учетную запись имеет специфический внешний вид, то вам скорее всего захочется сделать свою страницу авторизации и регистрации для сайта. Для решения этой задачи, лучше всего воспользоваться специализированным плагином из репозитория WordPress.

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

Защита сайта от регистрации ботов

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

Для защиты от регистрации ботов вам необходимо:

защита от ботов

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

Как управлять пользователями в WordPress

управление пользователями

Вы можете совершать следующие операции с пользователями:

  • Удалять или добавлять пользователей
  • Редактировать их профиль
  • Менять пароль для входа на сайт
  • Изменять роль пользователя и т.д.

Это дает вам полный контроль над правами пользователей на вашем WordPress сайте.

Вот и все, как видите ничего сложного.

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


Если вам понравилась эта статья – пишите комментарии, поделитесь статьей в социальных сетях и подпишитесь на мою рассылку, а так же не забывайте заходить на мой YouTube — канал с видео-уроками по созданию сайтов на WordPress.

Читайте также: