Форма регистрации php mysql

Форма регистрации php mysql

Печать / RSS Очень часто новички сталкиваются с проблемой написания регистрации у себя на сайте. В этой статье я расскажу как ее сделать.
Распишу все пошагово.

Шаг 1. Подключение к базе данных MySQL.
Создадим файл db_connect.php:

Шаг 2. Создадим таблицу для пользователей.

CREATE TABLE `users_profiles` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Шаг 3. Создадим файл handler.php — этот файл будет содержать проверку на авторизацию пользователя.

Шаг 4. Пишем регистрацию.
Для этого создадим файл register.php и напишем в нем следующим код:

Шаг 5. Делаем авторизацию.
Для этого создайте файл login.php

Шаг 6. Выход пользователя.
Каждый юзер должен выходить из сайта, если он этого хочет. Для этого создадим файл exit.php

Шаг 7. Создание главной страницы сайта.
Создадим последний файл — index.php

Для настройки создайте файл .htaccess и впишите в него следующее:

php_value register_globals 0
php_value magic_quotes_gpc 0

php_value zlib.output_compression 1

Тем кому лень делать это все, качайте архив.

Спасибо за внимание!
С ув. Егор Смоляков.
Автор: iNeeXT (31.07.2012 / 19:13)
регистрация, авторизация

Принцип реализации

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

Авторизация и дальнейшее пребывание пользователя на сайте происходит по следующей схеме:

  1. Пользователь вводит логин и пароль в форму авторизации и отправляет на сервер.
  2. На сервере проверяется, есть ли в базе данных пользователь с таким логином и паролем.
  3. Если пользователь найден, то информация об этом записывается в сессию или куки.
  4. На страницах сайта происходит проверка — есть ли в сессии данные о том, что пользователь авторизован и в зависимости от этого страница выводится в том или ином виде.

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

Формы авторизации и регистрации

Форма авторизации обычно располагается на главной странице, либо она может быть на всех страницах сайта. Для формы регистрации, в основном, создаётся отдельная страница. Мы создадим всего одну страницу, на которой будут обе формы, и на неё же будут выводиться данные пользователя. Пока на ней будет только HTML код, но мы сразу сделаем PHP файл, потому что в дальнейшем это будет скрипт. Назовём его formreg.php. Код страницы будет такой:

Регистрация

Регистрационные данные пользователей мы будем записывать в таблицу users . Если у Вас ещё нет такой таблицы, то создайте её. В ней должны быть поля id , login и pas . Другие поля мы не будем использовать. Если они есть в таблице, то они будут оставаться пустыми.

Читайте также:  Почему не приходят сообщения на телефон айфон

Форма авторизации отправляет данные в файл registration.php. Расположим его в той же папке, где находится страница. Код скрипта будет такой:

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

Авторизация

Форма авторизации запускает на сервере файл authorization.php. Этот скрипт принимает логин и прароль и проверяет, есть ли такой пользователь. Если есть, то логин будет записываться в сессию. Если такой пользователь не найден, то в сессию будет записываться информация об этом. Это нужно для того, чтобы страница, которая будет открыта после выполнения скрипта, получила эту информацию и вывела сообщение, что введён неправильный логин или пароль. Код скрипта такой:

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

После получения результата, проверяется, найдена ли указанная запись. Если запись есть, то логин записывается в сессию. Если пользователь не найден, то вместо логина пишется строка "er login". Можно написать другой текст, но нужно быть уверенным, что он не совпадёт с каким-то логином. Затем происходит возврат на страницу с формами.

На страницах сайта должен быть код, в котором происходит проверка — есть ли в сессии логин. И в зависимости от этого определяется, как должна выглядеть страница. В нашем примере есть только одна страница. На ней и сделаем проверку. Только код будет разделён на две части. Открытие сессии должно производиться до вывода каких-либо данных, то есть, до HTML кода. Поэтому эта часть располагается в самом начале страницы. А остальной код находится внутри тэга , потому что он добавляет на страницу контнет. Добавим в начало страницы такую строку:

Остальной скрипт расположим в теге , в его начале:

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

Читайте также:  Пильное полотно nanoblade wood basic 50

Мы рассмотрели только общий принцип создания функции регистрации и авторизации. На реальных сайтах она сложнее. Формы должны выводиться только для не авторизованных пользователей. Кроме того, нужно добавить кнопку "Выход", которая отменяет авторизацию. При регистрации нужно делать проверку формы, проверять уникальность логина и добавить подтверждение пароля.

Коприрование материалов сайта возможно только с согласия администрации

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Sublime text найти и заменить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Регистрация для сайта на PHP

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

Итоги

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

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

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

Ссылка на основную публикацию
Установить цену номенклатуры в 1с розница
Дата публикации 30.01.2019 В программе "1С:Бухгалтерии 8" (ред. 3.0) можно установить цены номенклатуры (товаров, работ, услуг) для их автоматической подстановки...
Трагедия не вызывала в слушателях недоумения
ОКЛИК//ОТКЛИК Составляют гнездо пар с паронимами окликаться//откликаться. ОКЛИК. Возглас, которым окликают кого-либо, привлекают чьё-либо внимание, останавливают. Оклик: громкий, резкий, ласковый,...
Транзит или транспортер т4
Всем доброго друзья!Помогите объективно выбрать из двух кандидатов лучший(надежный/крепкий) по вашему мнению пассажирский фургон.Мерседес Т1 или фольксваген транспортер Т4 ?...
Установить ярлык алиса на рабочий стол
Алиса – относительно новый голосовой помощник от компании Яндекс, который не только понимает русский язык, но и практически идеально на...
Adblock detector