В этом гайде мы научимся оформлять регистрацию на сайте, с помощью PHP + сохраним хэш в сессии.
Для локального сервера мы будем использовать полюбившийся нам XAMPP. В качестве текстового редактора VSCode. Установите XAMPP и откройте его от имени администратора. Если открыть от имени обычного пользователя, то могут возникнуть ошибки. Запустите Apache и mySQL
В папке xampp >> htdocs создайте папку для вашего сайта. Пример mywebsite.ru
В этой папке мы будем располагать файлы нашего сайта
Создайте файл index.php и запишите туда этот код
Далее заходим в панель phpmyadmin по ссылке http://localhost/phpmyadmin и создаем новую базу данных с именем mywebsite. (Нужно нажать New)
В этой базе мы создадим таблицу, где будем хранить данные пользователей.
Далее нам важно создать таблицу с нашими пользователями. Назовём её users.
Важно понимать, какие данные мы будем тут хранить. 5 колонок:
id - первая колонка любой таблицы, нужно отметить A_I (auto increment). id будет увеличиваться автоматически
login - логин пользователя
hLogin - хэшированная версия нашего логина. Будет служить уникальным идентификатором для куки файла
hPassword - хэшированный пароль, всегда хранится в виде хэша.
email - имейл пользователя
Выставляем нужную длину для каждой колонки, как на картинке
INT - числовой тип данных
VARCHAR - текстовый формат
Нажимаем сохранить внизу страницы
Отлично, теперь переходим к нашему php коду.
В файле, который мы создали ранее
В начале документа до тега <!DOCTYPE html> создаем сессию
Нам нужно создать форму с method="post" action="index.php". POST - это метод отправки данных в PHP. action - это атрибут, указывающий на какую страницу вас перенаправит после отправки формы.
Далее наша задача создать 5 элементов input в этой форме. 1 - для логина, 2 - для пароля, 3 - для повтора пароля, 4 - для почты, 5 - для кнопки отправки данных.
Если вы пользуетесь VSCode то можно прописать следующую команду и нажать Tab
Добавим тег p вокруг каждого input. Выглядеть это будет так
С помощью атрибута name мы будем получать данные из input'ов
Теперь после закрытого тега form мы будем писать наш PHP код.
Обычно, PHP код выносится в отдельный файл и подключается с помощью одной из функций:
Рекомендую использовать include_once
В этот раз мы будем подключаться к базе данных в этом же файле и подключать ничего не нужно
Далее нам нужно проверить нажата ли кнопка. В этом блоке мы будем писать весь наш код.
Внутри мы сначала считываем данные всех полей и проверяем не пустые ли они.
Теперь, когда мы убедились, что все поля не пустые, мы можем проверять символы на соответствие с помощью регулярных выражений. Все ошибки будут записаны в массив $errors
Проверяем есть ли ошибки, и если ошибок нет, нужно проверить есть ли записи с таким логином или email'ом в таблице базы данных.
Теперь приправляем солью ($salt) наш логин и пароль, а потом хэшируем обоих. После чего отправляем запрос в таблицу mySQL с помощью функции mysqli_query();
Отлично, теперь, все должно быть готово. Финальная версия документа здесь . Не забудьте изменить атрибут action у формы в зависимости от названия файла.