Создание страницы регистрации
На сайте отсутствует страница регистрации пользователей. Создадим её, используя неиспользуемые страницы portfolio и news. Страница portfolio будет заменена на страницу регистрации, а news станет страницей авторизации.
- Откройте файл header.php.
- Замените ссылку portfolio на регистрация.
- Укажите, что ссылка ведёт на reg.php. Сохраните изменения. Ссылка «Регистрация» будет вести на правильный URL.
Создание файла reg.php
Создадим файл reg.php, скопировав код из contact.php. Это будет копия страницы контактов, которую мы отредактируем.
- Удалите секцию Hero Contacts (изображение с картой).
- Отредактируем форму для получения данных пользователя.
- Заменим заголовок h2 на «Регистрация».
- Изменим заголовок title на «Регистрация».
Форма будет выглядеть как страница регистрации, а не как копия страницы контактов. Она будет запрашивать логин, имя, email и пароль. Кнопка «Отправить» будет переименована в «Зарегистрироваться».
Создание базы данных и таблицы пользователей
Перед обработкой данных создадим базу данных и подключимся к ней.
- Запустите phpMyAdmin (через MAMP или указав localhost:8088/phpmyadmin или localhost:3306/phpmyadmin в браузере).
- Создайте базу данных, например, php_website с кодировкой utf8.
- Создайте таблицу users со следующими полями:
- id (integer, primary key, auto_increment)
- login (varchar(50))
- username (varchar(50))
- email (varchar(70))
- password (varchar(130))
- Установите кодировку таблицы utf8_general_ci. Можно использовать движок MyISAM.
Обработка данных формы и проверка
В файле reg.php (в папке lib или functions) напишем код для обработки данных формы. В теге формы укажем атрибуты method="post" и action="reg.php". Каждое поле формы должно иметь атрибут name.
Данные из формы получим с помощью глобального массива $_POST. Используем функции trim() для удаления пробелов и filter_var() с фильтром FILTER_SANITIZE_SPECIAL_CHARS для фильтрации специальных символов.
Проверки:
- Длина логина (минимум 4 символа).
- Длина имени.
- Email (наличие символа «@»).
- Длина пароля.
При ошибке выведем сообщение и выйдем из скрипта с помощью exit.
Подключение к базе данных и добавление пользователя
Подключение к базе данных осуществим с помощью класса PDO. Строка подключения: mysql_host=localhost;dbname=php_website;port=3306. Логин и пароль – root и root (для MAMP). В других случаях значения могут отличаться.
SQL-запрос для добавления пользователя:
INSERT INTO users (login, username, email, password) VALUES (?, ?, ?, ?)
Используем подготовленный запрос (PDO::prepare()) для предотвращения SQL-инъекций. Замещаем ? значениями из массива, передаваемого в PDOStatement::execute().
Редирект и хеширование пароля
После успешной регистрации перенаправим пользователя на главную страницу с помощью header("Location: /");. Для защиты пароля используем функцию md5() и соль. Соль – секретный ключ, добавляемый к паролю перед хешированием.
$salt = 'ваш_секретный_ключ';
$password = md5($salt . $password);
Создана функциональная страница регистрации с проверкой данных и безопасным хранением паролей. В следующем уроке создадим авторизацию и личный кабинет.