Skip to content

Свой сайт знакомств #6: регистрация и авторизация на PHP, HTML, SQL, сессии

Урок по созданию регистрации и авторизации пользователей на PHP с использованием HTML, SQL и сессий для сайта знакомств.

Key Takeaways

  • Регистрация и авторизация реализуются через формы с методами POST и PHP-обработчиками.
  • Для работы с базой данных используется процедурное подключение к MySQL.
  • Важна правильная настройка input-элементов для корректной отправки данных формы.
  • На данном этапе пароли хранятся в открытом виде, что требует доработки безопасности.
  • Постоянное тестирование и отладка кода — ключ к успешной реализации функционала.

What the video covers

  • Введение в создание форм регистрации и авторизации на главной странице сайта.
  • Реализация передачи данных через POST-запросы и обработка их PHP-скриптами.
  • Создание и корректировка HTML-форм с полями email и пароль.
  • Подключение к базе данных MySQL и выполнение insert-запросов для сохранения данных.
  • Проверка существования полей и вывод полученных данных для отладки.
  • Использование процедурного стиля подключения к базе данных в PHP.
  • Отладка кнопок формы и исправление ошибок в типах input для корректной отправки данных.
  • Обсуждение хранения паролей в открытом виде без шифрования на данном этапе.
  • Планирование дальнейшего улучшения функционала и безопасности сайта.
  • Подробный разбор структуры базы данных и уникальных полей.

Answers

Questions about this video

Как реализована передача данных из формы регистрации?

Данные из формы передаются методом POST на PHP-скрипт-обработчик, который затем записывает их в базу данных.

Почему кнопка 'Зарегистрироваться' не отправляла данные сразу?

Проблема была в неправильном типе кнопки — вместо input type='submit' использовался input type='button', который не отправляет форму.

Как хранится пароль пользователей в данной реализации?

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

Full Transcript — Download SRT & Markdown

00:01
Speaker A
Добрый день, дорогие подписчики! Рад вас приветствовать на новом выпуске проекта "Свой сайт знакомств". И сегодня мы с вами будем делать регистрацию и авторизацию пользователей.
00:24
Speaker A
работать регистрация вводится получается email придумывается пароль и нажимается кнопка зарегистрироваться потом мы должны будем направить эти данные на скрипт обработчик и этот скрипт обработчик уже соответственно запишет новые параметры вот в нашу уже имеющуюся таблицу Давайте попробуем сейчас мы с
00:54
Speaker A
Таким образом, у нас сейчас пока выглядит главная страница: есть формочка регистрации, есть формочка авторизации. Как вообще должна работать регистрация? Вводится, получается, email, придумывается пароль и нажимается кнопка "Зарегистрироваться". Потом мы должны будем направить эти данные на скрипт-обработчик, и этот скрипт-обработчик уже, соответственно, запишет новые параметры вот в нашу уже имеющуюся таблицу. Давайте попробуем сейчас мы с вами это сделать.
01:16
Speaker A
личный кабинет так начнём у нас всё на главной странице расположено Так давайте смотреть Вот первая формочка тут есть замечательно так сейчас нам вот эти два поля нужно расположить внутри тега форм Угу данные мы будем передавать с помощью пост
01:56
Speaker A
Ну и, соответственно, авторизация работает таким же образом: мы вводим логин, пароль, нажимаем "Войти", нас отправляют уже на другой скрипт-обработчик. И если в базе данных присутствуют, соответственно, такие данные, как логин и пароль, и они совпадают, то нас пускают в личный кабинет.
02:31
Speaker A
у нас У Поля Давайте какое будет Ну пускай будет замечательно и тут у нас должен быть па так назовём так сохраняем дальше что посмотрим что у нас вообще со структурой Ели у нас такое поле как у на такого
02:56
Speaker A
Так, начнём. У нас всё на главной странице расположено. Так, давайте смотреть. Вот первая формочка, тут есть, замечательно. Так, сейчас нам вот эти два поля нужно расположить внутри тега form. Угу. Данные мы будем передавать с помощью POST-протокола, поэтому я пишу метод POST. И куда я эти данные должен отправить? Давайте придумаем название скрипта. Action пусть будет PHP, замечательно.
03:34
Speaker A
логин вот email и пароль пароль и mail соответственно должны будут совпадать так Смотрим так тут у нас что тут у нас пароль Пускай называется пароль мы Никаким образом пока не будем что с ним делать шифровать есть в открытом виде
03:57
Speaker A
То есть пока мы не будем делать никакого роутинга, красивых адресов, просто сделаем на PHP-скриптах. А дальше уже доведём до ума.
04:29
Speaker A
мим а получается на существование так те данные которые отправили То есть это пост запрос пост дальше Аа email да то есть если у нас существует поле email мы такое условие пропишет если дальше если у нас существует поле так
05:09
Speaker A
У нас поля... Давайте какое будет? Ну, пусть будет, замечательно. И тут у нас должен быть... па, так назовём. Так, сохраняем, дальше посмотрим, что у нас вообще со структурой. Если у нас такое поле, как у... на такого поля нет, поэтому после ID... Давайте после ID мы добавим после самого первого поля. Так, а пароль есть? Угу.
05:49
Speaker A
страничку обязательно дальше что давайте введём какую-нибудь почту какую-нибудь пароль нажимаем зарегистрироваться так кнопка зарегистрироваться не работает тако уже было в прошлом проекте после вёрстки ну на что Ну давайте мы изменим тип на inp наверное да попробуем Почему интересно у нас не
06:17
Speaker A
Так, вперёд. Тут у нас что? Тип текст. Давайте Gmail пусть будет. Сохраним, смотрим опять на нашу структуру. Дальше email, наверное. Давайте сдвинем: сначала будет логин, вот email и пароль. Пароль и mail, соответственно, должны будут совпадать.
06:55
Speaker A
тут предлагается Давайте submit использовать Input Type value всё ну таким образом попытаемся описать Так что мы тут делаем так Input Type submit value будет у нас соответственно зарегистрироваться вообще когда разрабатываете Не стесняйтесь гуглить какие-то очевидные вещи которые вы
07:41
Speaker A
Так, смотрим. Так, тут у нас что? Тут у нас пароль. Пусть называется "Пароль". Мы никаким образом пока не будем что с ним делать, шифровать. Есть, в открытом виде пока храним, мы без проблем это реализуем.
08:13
Speaker A
всё так обновляем страничку снова админ какой-нибудь пароль указываю нажимаю зарегистрироваться Да всё данные поступили в наш скрипт и дальше из него мы уже можем отправить Новый запрос в базу данных да на что бы я обратил внимание значит идём мы структуру и нам неплохо
08:34
Speaker A
Так, дальше. Что дальше? Мне нужен новый скрипт. Давайте мы его назовём PHP. Соответственно, тут я должен буду вывести те данные, которые получаю из скрипта на главной странице. Сначала что? Сейчас мы с... мим, а получается на существование. Так, те данные, которые отправили.
09:01
Speaker A
так Давайте ещё раз уникальное значение хорошо Так дальше Что дальше нам нужно будет соответственно из нашего скрипта к подключиться к базе данных и добавить туда значение то есть поскольку данные уже к нам поступили мы сейчас для красоты сделаем
09:33
Speaker A
То есть это POST-запрос. POST. Дальше... А, email, да. То есть если у нас существует поле email, мы такое условие пропишем. Если дальше, если у нас существует поле... так и нижнее подчёркивание... так, POST пароль, то тогда мы их с вами выведем уже на экране.
10:09
Speaker A
Local Host где она у нас тут так так так база данных у нас с вами по-моему дейтинг называлось так я изменю пароль на всякий случай потому что я его не помню Честно скажу Вот вот у нас будет такой пароль вот тут вот да для
10:27
Speaker A
Так, давайте мы выведем и пароль мы с вами тоже выведем. Вот он, сейчас посмотрим, поступают ли данные из того скрипта. Так, обновляю страничку обязательно.
10:54
Speaker A
посмотрим документацию для подключения к базе данных PHP так помоему я такой материал уже смотрел да на прошлых уроках Угу Вот вот такой пример мне в принципе нравится или Давайте попробуем подключение виде в процедурном стиле тоже хорошо отрабатывает Давайте получается что я скопировал вот
11:31
Speaker A
Дальше что? Давайте введём какую-нибудь почту, какой-нибудь пароль, нажимаем "Зарегистрироваться". Так, кнопка "Зарегистрироваться" не работает. Такое уже было в прошлом проекте после вёрстки. Ну, на что? Ну давайте мы изменим тип на input, наверное, да? Попробуем. Почему интересно у нас не уходит кнопка сразу же?
12:03
Speaker A
какого-то Поля не хватает ещё чего-то не хватает адрес сервера указали имя пользователя есть замечательно Ну давайте мы сейчас вот этот скрипт скопирую И если всё нормально он у нас должен вывести вывести данные да Угу Так нажимаю зарегистрироваться так
12:26
Speaker A
Так, Input Type Button. А нет, скорее всего, я неправильно прописал. Ещё раз попробуем. Раз-два, кнопочка "Зарегистрироваться". Нет. Так, ну давайте так. Button не отправляет данные, почему она не отправляет данные? Input Type Button. Сохраним.
13:03
Speaker A
страница Да вот она страница Мы у нас подключение есть вот имя базы данных всё сделали дальше проверка соединения у нас с вами есть выполнение запросов смотрим вот формируем sgl запрос потом соответственно вот тут вот сверху отправляем его на выполнение Если
13:26
Speaker A
Так, что нам тут предлагается? Давайте submit использовать. Input Type value. Всё, ну таким образом попытаемся описать. Так, что мы тут делаем? Так, Input Type submit, value будет у нас соответственно "Зарегистрироваться".
13:47
Speaker A
и его ещё не заменил Да у нас при работе с базой данных так всё меня пустили Нет мы ничего не сохраняем так inert запрос в наш базу данных будет выглядеть таким образом так insert into я пока все параметры скопирую их Конечно
14:09
Speaker A
Вообще, когда разрабатываете, не стесняйтесь гуглить какие-то очевидные вещи, которые вы забываете, могут появляться решения в несколько строчек.
14:46
Speaker A
переменная доллар email и дальше через end наверное нам нужно будет перечислить другие данные да Или через запятую Так где у нас тут документация так так так да давайте просто через опишем или через запятую нет через запятую нормальный вариант
15:15
Speaker A
Так, адрес электронной почты должен содержать... замечательно. У нас верхнее поле неправильно описано. Так, Type, Type. Давайте просто текст напишем. Да, тут ID будет пусть пока таким остаётся. Холдер 1, 2, 3, 4, например.
15:46
Speaker A
сведённые главной странице должны будут попасть непосредственно в базу данных поэтому что мы идм в базу данных так Отмена Давайте таблица users Да сейчас что сейчас я отправляю Давайте запрос у нас было уже нет такого пока ещё не было запроса так
16:09
Speaker A
Всё, так обновляем страничку снова. Админ, какой-нибудь пароль указываю, нажимаю "Зарегистрироваться". Да, всё, данные поступили в наш скрипт, и дальше из него мы уже можем отправить новый запрос в базу данных.
16:44
Speaker A
образом сделать чтобы у нас запрос всё-таки прошёл Давайте вот так вот мы и всё-таки в двойные кавычки оберн вокруг так ещё раз нажимаю зарегистрироваться смотрим нет данные не поступили хорошо Так а в м быть проблема так insert in Давайте тогда
17:35
Speaker A
Да, на что бы я обратил внимание? Значит, идём мы структуру, и нам неплохо было бы сделать вот наше поле Gmail уникальным, уникальное значение, чтобы больше никто не смог зарегистрироваться два раза на одну и ту же почту.
18:08
Speaker A
таблицу значениями нам нужно всего лишь два так email и гин закрываем идём дальше так все лишние параметры удаляю Потом у нас идт перечисление самих значений внутри так открываем уже саму таблицу со значениями так тут мы что тут мы
18:38
Speaker A
Посмотрим на структуру. Сделал я её уникальной? Ну вроде сделал, потом попробуем ещё разочек. Эм, полем.
19:25
Speaker A
что-то в таблице нет ВС равно данные не поступили ещ Плохо Плохо что данные не поступают так Давайте ещё раз попробуем отправить зарегистрироваться данные не поступают Так ну у нас же есть разработанный уже проект где авторизация работает Давайте оттуда посмотрим вообще
19:59
Speaker A
Так, давайте ещё раз уникальное значение. Хорошо.
20:18
Speaker A
страничке Так где мы тут ошиблись так раз так мы тут с вами подключались другим образом к базе данных Давайте вот таким вот образом возьмём просто название базы данных под меним так вот она у нас тут хотя подключение было
20:58
Speaker A
Так, дальше. Что дальше? Нам нужно будет соответственно из нашего скрипта подключиться к базе данных и добавить туда значение.
21:27
Speaker A
подключение к базе данных у нас тут она в виде переменной кон А тут Линк у нас указан Вот то есть мы sgl запрос отправляем в Линк Ну ладно хорошо что мы нашли эту ошибку так ещё раз обновляю страничку я данные по-моему не отправил
21:46
Speaker A
То есть поскольку данные уже к нам поступили, мы сейчас для красоты сделаем email так, email раз, пароль два. Угу, всё.
22:12
Speaker A
добавление так всё э Ага сначала получается наше подключение к BD так ещё раз Нет я не ту переменную подменил не те параметры так ещё раз Local hosts fre Dating пароль и соответственно ещё раз fre дейтинг должен быть Ага
22:49
Speaker A
Так, данные сохранены. Дальше что? Дальше мне неплохо было бы подключиться к базе данных. Вот, да, давайте я подключусь к базе данных и посмотрю вообще, какие нам параметры нужны уже вот тут вот.
23:35
Speaker A
Мы из этого скрипта а должны будем направить куда должны будем направить на страничку с личным кабинетом Вот то есть дальше что я пишу header Location по-моему там таким образом прописывается Location и дальше Что Дальше давайте сделаем страничку кабинет
24:09
Speaker A
Так, localhost, где она у нас тут? Так, так, так, база данных у нас с вами, по-моему, дейтинг называлось. Так, я изменю пароль на всякий случай, потому что я его не помню, честно скажу.
24:39
Speaker A
футер и тут мы Давайте напишем Добро пожаловать внутри контейнера трапов ского так контейнер Угу Так сохранились всё соответственно в личном кабинете у нас должна быть зашита а проверка на то есть ли такой пользователь в базе данных замечательно Я ещё раз что давайте мы уже второго
25:27
Speaker A
Вот, вот у нас будет такой пароль, вот тут вот, да, для подключения к базе данных. Да, мы его изменили. Всё, так пока так оставим.
26:07
Speaker A
так кей Неужели двоеточие не поставил поставил перенаправление есть точки запятой на конце нету Конечно супер так обновляю страничку ничего не произошло раз Так Снова иду на главную ввожу Давайте Новые данные раз зарегистрироваться так хорошо нас отправило на главную
26:43
Speaker A
Дальше иду в админку. Так, сервер для внешних подключений, имя пользователя совпадает с именем БД, а название БД у нас вот она, тин.
27:03
Speaker A
и сейчас и сделаем то есть тут что мы сделаем in Так это будет главная страничка соответственно страничку футер в этот футер я размещаю вот этот кусочек кода раз там уже тоже ссылка была проверяем смотрим Будет ли тут что-то Да
27:48
Speaker A
Так, сейчас что? Сейчас давайте посмотрим документацию для подключения к базе данных PHP.
28:13
Speaker A
вами должны просмотреть данные которые были отправлены пользователям из формы вот из формы авторизация и направлять будем соответственно сразу из кабинета Да вот тут у нас есть кабинет дальше Что Дальше Мы также пост запросом получаем информацию так так так где у нас тут
28:42
Speaker A
Так, по-моему, я такой материал уже смотрел, да, на прошлых уроках. Угу. Вот, вот такой пример мне в принципе нравится. Или давайте попробуем подключение в процедурном стиле, тоже хорошо отрабатывает.
29:15
Speaker A
дальше Так так-так данные у нас Давайте из рега скопирую Вот это всё вставляем и запрос у нас уже будет к базе данных выглядеть следующим образом кстати вот этот вот это подключение к базе данных можно будет вынести в какой-то отдельный
29:41
Speaker A
Давайте получается, что я скопировал вот эти вот данные, пример кода. Так, localhost, так, имя пользователя ещё раз. Так, так, так, имя пользователя совпадает с именем БД.
30:08
Speaker A
его Давайте скопирую Select - это запрос выборки к базе данных на обращение мы проверим Есть ли вообще человек с таким ID в нашей базе так insert in User где получается что где у нас поле email вот значение email равняется нашей
30:40
Speaker A
То есть это имя пользователя совпадает с именем БД, я его вставил. Дальше что? Дальше я пароль, который у нас есть, и, по-моему, ещё какого-то поля не хватает. Ещё чего-то не хватает.
31:29
Speaker A
наш проект который мы делали что я честно почему-то у меня проблемы с памятью я забываю Вот вот эти вот команды подключение к базе данных к выборке в принципе-то написать алгоритм несложно А вот именно Какие команды У нас тут есть какие методы используются
31:49
Speaker A
Адрес сервера указали, имя пользователя есть, замечательно.
32:10
Speaker A
мучиться подключать это всё повторно это становится невозможным так что мы тут делаем у нас пришёл массив мы его перели в и да Нам нужно будет Давайте ID S получается Session должен быть равен ID User наверное или как у нас тут поле
32:45
Speaker A
Ну давайте мы сейчас вот этот скрипт скопирую, и если всё нормально, он у нас должен вывести данные, да. Угу.
33:20
Speaker A
параметров не получили из базы данных выборки вот ничего сюда то тогда что мы делаем тог вот это вот поле не будет загружено в кабинете что мы можем сделать дальше так так Добро пожаловать У нас есть же Добро пожаловать и соответственно уже
33:48
Speaker A
Так, нажимаю "Зарегистрироваться". Так, подключение успешно установлено, замечательно, к базе данных мы смогли подключиться.
34:16
Speaker A
прокинуть Вот на кабинет из главной формы человека Т Каким образом ВС в принципе тоже самое та же форма тот же метод пост метод пост замечательно дальше э всё поле уже называ Ой не поле а скрипт обработчик кабинет точка
34:52
Speaker A
Дальше что? Дальше нам неплохо было бы отправить запрос вот к нашей базе данных, если у нас с вами подключение есть.
35:40
Speaker A
там так так так какой у нас будет у нас с вами будет emil Угу тут у нас с вами будет пароль Type текст текст и в плейсхолдер также пропишет 4 на всякий случай замечательно сохранились и сейчас попробуем пройти
36:15
Speaker A
Так, отправить запрос к БД. Давайте PHP, супер, та же самая страница. Да, вот она страница. У нас подключение есть, вот имя базы данных, всё сделали.
36:39
Speaker A
отобразил плохо значит э запрос не отрабатывается или что-то с сессией происходит в данный момент так кабинет снова смотрим email пароль начали сессию дальше в сессию прописали юзр ID у нас он не возвращается значит он отсутствует почему-то выборка Не отрабатывает Как
37:15
Speaker A
Дальше проверка соединения у нас с вами есть, выполнение запросов. Смотрим, вот формируем SQL-запрос, потом, соответственно, вот тут вот сверху отправляем его на выполнение.
37:53
Speaker A
сессия подключение к базе данных у нас с вами тоже есть ну Давайте проверим Линк Угу продолжить так-так-так неужели мы не подключились к базе данных может быть такое в принципе да в принципе мы могли не подключиться к базе данных ещё раз
38:30
Speaker A
Если была ошибка, то всё. У нас сейчас что будет? У нас с вами будет пока запрос insert на добавление данных в базу данных.
38:50
Speaker A
вижу чтобы записывался пароль мы видимо пароль отправляем в поле логин почему-то вот и хорошо что мы в одной серии это всё делаем то есть мы нашли ошибку замечательно так идём снова в скрипк дальше email не логин а вот тут
39:09
Speaker A
Вот, давайте попробуем, как он будет выглядеть. Мы нажимаем на вкладку SQL. Кстати, я же только что сменил пароль и его ещё не заменил.
39:50
Speaker A
нужен человека так войти Где ошибка так так-так кабинет слишком много я данных вывожу похоже так Пароль Пароль есть тут ещё у меня что-то сохранить обновляю страницу так Добро пожаловать замечательно эта страница есть дальше А вот сопоставление почему-то не срабатывает
40:27
Speaker A
Да, у нас при работе с базой данных... Так, всё, меня пустили. Нет, мы ничего не сохраняем.
40:56
Speaker A
лишнее убираем вывод логина и пароля сверху вот замечательно мы получается исправили ошибку и при работе скрипта регистрация Ну сейчас мы ещё одного пользователя создадим на всякий случай проверим всё-таки правильно туда ли поступают данные наши так обновляю страничку дальше И если всё
41:21
Speaker A
Так, insert-запрос в нашу базу данных будет выглядеть таким образом.
41:55
Speaker A
будет Вот и сечас осталось передать в сессиях вот этого нашего пользователя Давайте попробуем это сделать Ну во-первых мы Конечно можем в скрипте регистрации это уже всё сделать без особых проблем да давайте мы просто вот мы добавились базу данных и дальше мы
42:23
Speaker A
Так, insert into... Я пока все параметры скопирую их. Конечно, очень много, но нам достаточно будет вывести лишь несколько, ввести.
42:49
Speaker A
пользователю определить его ID Вот и потом уже перенаправляет Если всё отработает Мы с удовольствием с вами закончим эту серию я с вами попрощаюсь до следующего выпуска так регистрация ввожу Рандомные данные mail.ru дальше какой-нибудь пароль Нажимаю зарегистрироваться Ага и данные
43:20
Speaker A
То есть так, insert into user. Так, и мы с вами заполним пока два поля всего лишь.
43:48
Speaker A
стартовать раз тут мы тоже кстати можем сессию вне скрипта регистрации сделать так так-так закрываем крестиком идём на главную страничку что мы тут делаем да Нам нужно нового пользователя входим пароль нажимаем зарегистрироваться Добро пожаловать снова данные не поступают Ну регистрация
44:23
Speaker A
Так, into user. Угу.
45:13
Speaker A
страницу тоже ничего не происходит а может авторизация сломалась ещё раз так почему-то Пароль не могу зацепить так Вставляю войти да Добро пожаловать и мы возвращаем идентификатор осталось только тоже самое всё проделать внутри скрипта так рек есть регистрация работает свм может отличия какие-то так
45:59
Speaker A
Так, set. Давайте email мы укажем, да? Сначала email, тут соответственно у нас что? У нас переменная доллар email.
46:38
Speaker A
кусочек кода у нас на этой странице отрабатывает Без особых проблем Угу Так получили данные дальше подключились хоп-хоп-хоп записали в сессии ID юзера всё должно быть Добро пожаловать регистрация что происходит сессию Мы также записали ID юзера ещё раз попробуем
47:34
Speaker A
И дальше через, наверное, нам нужно будет перечислить другие данные, да? Или через запятую? Так, где у нас тут документация? Так, так, так. Да, давайте просто опишем или через запятую. Нет, через запятую, нормальный вариант.
48:20
Speaker A
взять и просто подключать кабинет автоматически без логина Ладно хорошо оставим пока таким образом вот продолжение будет в следующей серии и Наверное нужно будет уже сверстать анкету пользователя Да которую мы с вами делали по фильтрам чтобы пользователь мог её сразу автоматически заполнять
48:51
Speaker A
Так, email есть. Дальше у нас идёт переменная пароль, которую нам также нужно будет записать в базу данных.
49:12
Speaker A
поиске У нас есть анкета правильно фильтры поиск вот она то есть и потом соответственно после ввода логина и пароля произойдет регистрация и его перет на специальную ни личного кабинета где пользователь уже заполнит информацию о себе на этом регистрация будет
49:35
Speaker A
И тут у нас будет пароль. Всё, запрос убираю пока, да? Посмотрим, как это всё отработает.
Topics:регистрацияавторизацияPHPHTMLSQLсессииформа регистрациибаза данныхсайт знакомствобработка POST-запросов

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →