Будни программиста PHP, MySQL, JavaScript, AJAX, Jquery, Admins, C++, technologic. Mysql php регистрация на сайте


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

Вы здесь: Главная - PHP - PHP Основы - Как сделать регистрацию и авторизацию пользователей на сайте

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

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

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

С местом хранения определились. Теперь перейдём непосредственно к алгоритму авторизации:

  1. Создать форму регистрации на HTML.
  2. Получить данные из формы в скрипте-обработчике.
  3. Проверить полученные данные, и если они некорректны, то сделать редирект обратно на форму регистрации.
  4. Если данные корректны, то записать их в базу данных.

Вот и весь процесс регистрации пользователя на сайте. То есть регистрация - это сохранение информации о пользователе на сайте.

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

Теперь авторизация. Первое, что Вы должны понять - это то, что информация об авторизации должна где-то храниться. Самый простой вариант - это хранение информации в сессии (или в cookie). А теперь алгоритм:

  1. Создать форму авторизации пользователя на HTML, куда пользователь должен будет ввести свой логин и пароль.
  2. В скрипте-обработчике принять данные от пользователя. Если Вы меня послушались, и храните шифрованные пароли в базе данных, то сначала шифруйте полученный пароль. Если же в базе данных лежат открытые пароли, то шифровать не надо.
  3. Проверить правильность введённых данных, и если логин и пароль совпадают с существующим пользователем в базе данных, то записываете в cookie или сессию информацию с логином и шифрованным паролем (либо открытым паролем, если Вы его не шифровали).
  4. Если логин и/или пароль введены неверно, то делать редирект обратно на форму авторизации.

Теперь у Вас есть необходимая информация об авторизации пользователя, которая хранится в его cookie или на сервере (если сессия). Фактически, теперь Вам нужно эту информацию проверять на каждой странице сайта и сверять её аналогично проверке формы авторизации. То есть считываете из cookie (сессии) логин и пароль, и проверяете его. Если они верные, то показываете одну страницу (для зарегистрированных пользователей), а если неверные, то показываете другую страницу (для гостей).

И последнее. Как делается кнопка "Выход"? Очень просто. При нажатии на эту кнопку, стираются cookie, либо сессия. Таким образом, пользователь автоматически вылетает с сайта.

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

В данной статье я привёл лишь алгоритм, а чтобы научиться его реализовывать нужно знать PHP и MySQL, которые максимально подробно разобраны в этом обучающем курсе: http://srs.myrusakov.ru/php

  • Создано 05.05.2011 13:05:46
  • Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка: <a href="https://myrusakov.ru" target="_blank"><img src="https://myrusakov.ru//images/button.gif" alt="Как создать свой сайт" /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:<a href="https://myrusakov.ru" target="_blank">Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи): [URL="https://myrusakov.ru"]Как создать свой сайт[/URL]

myrusakov.ru

Пишем свою авторизацию на PHP и MySQL -Будни программиста

Ну что же, сегодня я вам расскажу о безопасной авторизации на PHP и Cookie. Ну о том что она абсолютна безопасна я не говорю, ибо взломать можно все, но для маленького сайта она вполне подходит. Так же я предвижу комментарии о том что сессии безопаснее. Не спорю куки уступают сессиям в безопасности но для реализации простенькой авторизации вполне подходят. Подробности ниже.И так, в базе у нас будет 1 база из 4 полей: users_id, users_login, users_password и users_hash. SQL запрос:

1234567

CREATE TABLE IF NOT EXISTS `users` (  `users_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,  `users_login` VARCHAR(30) NOT NULL,  `users_password` VARCHAR(32) NOT NULL,  `users_hash` VARCHAR(32) NOT NULL,  PRIMARY KEY  (`users_id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Сам скрипт авторизации будет тоже на 4 файлах. А именно:
  • conf.php — Файл конфигурации, в котором так же содержится подключение к бд;
  • register.php — Регистрация нового пользователя;
  • login.php — Авторизация пользователя;
  • check.php — Скрипт проверки авторизации;

Давайте разберем каждый файл.

conf.php

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

123456789101112131415

<?php# настройкиdefine ('DB_HOST', 'localhost');define ('DB_LOGIN', 'example_user');define ('DB_PASSWORD', 'example_password');define ('DB_NAME', 'example_base');mysql_connect(DB_HOST, DB_LOGIN, DB_PASSWORD) or die ("MySQL Error: " . mysql_error());mysql_query("set names utf8") or die ("<br>Invalid query: " . mysql_error());mysql_select_db(DB_NAME) or die ("<br>Invalid query: " . mysql_error());

# массив ошибок$error[0] = 'Я вас не знаю';$error[1] = 'Включи куки';$error[2] = 'Тебе сюда нельзя';?>

register.php

Файл регистрации, тут содержится простейшая форма и ее обработчик. Исходный код прокомментирован, но общий процесс я коротко опишу. Вначале проверяем наш логин, он может содержать только английские буквы и цифры. Далее мы проверяем длину логина, от 3 до 30 символов. Проверяем свободен ли логин. При успешных проверках добавляем нового пользователя в базу. Из введенного пароля мы вырезаем пробелы на случай если пользователь хранит свои пароли в каком ни будь текстовом файле (в windows текстовые редакторы любят «хватать» пробелы в начале или конце выделяемого текста). Шифруем пароль в двойном MD5 и добавляем в базу данные о новом пользователе. Перебрасываем пользователя на login.php.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657

<?php# Подключаем конфиг include 'conf.php';

if(isset($_POST['submit'])) {

    $err = array();

    # проверям логин    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))     {         $err[] = "Логин может состоять только из букв английского алфавита и цифр";     }          if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)     {         $err[] = "Логин должен быть не меньше 3-х символов и не больше 30";     }          # проверяем, не сущестует ли пользователя с таким именем   $query = mysql_query("SELECT COUNT(users_id) FROM users WHERE users_login='".mysql_real_escape_string($_POST['login'])."'")or die ("<br>Invalid query: " . mysql_error());     if(mysql_result($query, 0) > 0)     {         $err[] = "Пользователь с таким логином уже существует в базе данных";     }            # Если нет ошибок, то добавляем в БД нового пользователя    if(count($err) == 0)     {                  $login = $_POST['login'];                  # Убераем лишние пробелы и делаем двойное шифрование        $password = md5(md5(trim($_POST['password'])));                  mysql_query("INSERT INTO users SET users_login='".$login."', users_password='".$password."'");         header("Location: login.php"); exit();     }} ?>

  <form method="POST" action="">  Логин <input type="text" name="login" /><br />  Пароль <input type="password" name="password" /><br />  <input name="submit" type="submit" value="Зарегистрироваться">   </form>  <?php    if (isset($err)) {      print "<b>При регистрации произошли следующие ошибки:</b><br>";       foreach($err AS $error)       {         print $error."<br>";       }       }  ?>

login.php

Опять кратко расскажу о действиях совершаемых в данном скрипте. В самом начале у нас висит функция для генерации случайной строки, она служит для хеша пользователя (чуть позже более подробно). Далее мы проверяем наличие куков с ошибками (они ставятся в check.php). Подключаем файл конфигурации и проверяем пользователя. Вытаскиваем из бд логин и пароль, сравниваем с введенными и генерируем хеш. Записываем в бд новый хеш пользователя и ставим куки. В куках находится id и хеш пользователя. Пересылаем пользователя на check.php.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859

<?php   # Функция для генерации случайной строки   function generateCode($length=6) {     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789";     $code = "";     $clen = strlen($chars) - 1;       while (strlen($code) < $length) {         $code .= $chars[mt_rand(0,$clen)];       }     return $code;   }     # Если есть куки с ошибкой то выводим их в переменную и удаляем куки  if (isset($_COOKIE['errors'])){       $errors = $_COOKIE['errors'];       setcookie('errors', '', time() - 60*24*30*12, '/');   }

  # Подключаем конфиг  include 'conf.php';

  if(isset($_POST['submit']))   {         # Вытаскиваем из БД запись, у которой логин равняеться введенному     $data = mysql_fetch_assoc(mysql_query("SELECT users_id, users_password FROM `users` WHERE `users_login`='".mysql_real_escape_string($_POST['login'])."' LIMIT 1"));          # Соавниваем пароли     if($data['users_password'] === md5(md5($_POST['password'])))     {       # Генерируем случайное число и шифруем его       $hash = md5(generateCode(10));                  # Записываем в БД новый хеш авторизации и IP       mysql_query("UPDATE users SET users_hash='".$hash."' WHERE users_id='".$data['users_id']."'") or die("MySQL Error: " . mysql_error());              # Ставим куки       setcookie("id", $data['users_id'], time()+60*60*24*30);       setcookie("hash", $hash, time()+60*60*24*30);              # Переадресовываем браузер на страницу проверки нашего скрипта       header("Location: check.php"); exit();     }     else     {       print "Вы ввели неправильный логин/пароль<br>";     }   } ?>  <form method="POST">   Логин <input name="login" type="text"><br>   Пароль <input name="password" type="password"><br>   <input name="submit" type="submit" value="Войти">   </form>  <?php  # Проверяем наличие в куках номера ошибки  if (isset($errors)) {print '<h5>'.$error[$errors].'</h5>';}

  ?>

check.php

И последний файл, который содержит проверку авторизации пользователя. В начале подключаем конфиг и если существуют куки начинаем проверку, если их нет, то ставим куки с номером ошибки и отсылаем на login.php. И так проверка. Вытаскиваем из бд id и хеш. Если они не проходят проверку на соответствие с теми куками которые стоят у посетителя, то удаляем существующие куки посетителя и ставим куки с номером ошибки, пересылаем на login.php. Если же все нормально то пользователь увидит страницу.

123456789101112131415161718192021222324252627282930313233

<?php# подключаем конфигinclude 'conf.php';  

# проверка авторизацииif (isset($_COOKIE['id']) and isset($_COOKIE['hash'])) {        $userdata = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE users_id = '".intval($_COOKIE['id'])."' LIMIT 1"));

    if(($userdata['users_hash'] !== $_COOKIE['hash']) or ($userdata['users_id'] !== $_COOKIE['id']))     {         setcookie('id', '', time() - 60*24*30*12, '/');         setcookie('hash', '', time() - 60*24*30*12, '/');    setcookie('errors', '1', time() + 60*24*30*12, '/');    header('Location: login.php'); exit();    } } else {   setcookie('errors', '2', time() + 60*24*30*12, '/');  header('Location: login.php'); exit();}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />  <title></title></head><body>  hello!</body></html>

Выход

Выход можно осуществить любым удобным для вас способом просто удалив куки, допустим так:

123456789

<form action="" method="post"><input type='submit' name='exit' value='Выйти'/></form><?phpif($_REQUEST['exit'])   {        setcookie('id', '', time() - 60*60*24*30, '/');         setcookie('hash', '', time() - 60*60*24*30, '/');        header('Location: login.php'); exit();  }?>

Сразу хочу предупредить о том что ваши файлы должны быть в кодировке UTF8 и БЕЗ BOM! Приятного пользования!

Теги: Cookie, MD5, MySQL, PHP, Авторизация

programmer-weekdays.ru

регистрация php mysql

Сегодня мы с Вами напишем регистрацию и авторизацию с нуля на языке программирования PHP. Мы сделаем это...

В этом видеоуроке вы научитесь создавать форму регистрации на своём сайте. Для этого вам понадобятся прогр...

Мы продолжаем уроки php практика и в данном видео мы дорабатываем первую часть, а в частности в прошлом уроке...

PHP Видеоуроки=====-- Создаем страницу регистрации на PHP + MySQL Ссылка на исходник: https://yadi.sk/d/D8zRfeZHdcdiK SQL-запрос...

Неограниченное облачное хранилище: https://beta.hive.im/join/6608 В данном уроке рассмотрен один из вариантов создания...

Группа проекта вк: https://vk.com/simple_training ✓ Подписка на канал: http://goo.gl/BUR12H ✓ Сайт автора: http://simple-training.com Ссылка...

Пишем авторизацию и регистрацию на PHP. Наверное все задумывались как сделать регистрацию и авторизацию....

Как сделать регистрацию php + mysql [02] в этом уроке мы создаем форму регистрации создадим скрипт обработки и...

Всем привет, мы начинаем новый курс уроков PHP практика и начнем мы с реализации регистрации и авторизации...

Регистрация Авторизация PHP MySQL.Часть1.

Полный курс по PHP и MySQL с упражнениями: ...

Наши сайты: http://gameplay-hosting.ru http://pawn-tutorial.ru ===================================================== Код к уроку: ...

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

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

Всем привет! В этом видео поговорим о авторизации и регистрации пользователей, создадим скрипт на php и "прик...

"Безопасные" цвета - https://colorscheme.ru/web-safe-colors.html.

Извините,что под конец вялый какой-то,просто устал =)) Вот ссылка на готовый сайт - https://yadi.sk/d/8BKkvaYN3Hs5bQ Здесь...

php авторизация и регистрация пример Исходник доступен в меню бота в нашей группе https://vk.com/lifestyl_e -----------------------...

Автор: Андрей Бернацкий Подробное содержание на сайте АВТОРА, или у нас: ▻ Сайт видеокурса: http://info-dvd.ru/bbm/go/pho3...

В данном уроке рассмотрен один из вариантов создания регистрации на сайте + показан пример использования...

Всем привет! В этом видео поговорим о авторизации и регистрации пользователей, создадим скрипт на php и "прик...

Заказать сайт, сотрудничество: http://bit.ly/2aQgtDu Рекомендую этот хостинг: http://bit.ly/2aHvMQw Моя группа ВКонтакте: http://bit...

Установка скрипта регистрации и авторизации пользователей с активацией аккаунта письмом на боевом web серв...

Сейчас мы займемся созданием авторизации пользователей. Вконтактик: http://vk.com/knowcity Твитор: https://twitter.com/ecroFeGa...

Как сделать регистрацию php + mysql [03] в этом уроке мы зделаем авторизацию пользователя.

В данном уроке мы сделали простую регистрацию на свой сайт с помощью PHP и MySql. Исходник первого и второго...

Всем привет, мы продолжаем серию уроки Laravel и в данном видео мы делаем аутентификацию а в частности регистра...

Всем привет! В этом видео поговорим о авторизации и регистрации пользователей, продолжим делать регистраци...

Ссылка на скачивание исходника - https://yadi.sk/d/fUaHBxZljkmWV Уроки по созданию ОС, на среде PHP Devel Studio! Ставьте Лайки,...

Заказать сайт, сотрудничество: http://bit.ly/2aQgtDu Рекомендую этот хостинг: http://bit.ly/2aHvMQw Моя группа ВКонтакте: http://bit...

Второе видео из цикла создания сайта с нуля. В данном видео-уроке рассказывается о том, как создать подключе...

Как сделать регистрацию php + mysql [01] в этом уроке мы создадим базу данных az мы создаем таблицу users и мы создае...

Создание регистрации на php + mysqli и redbeanphp Site: http://1.u0153780.z8.ru/ Сайт: http://1.u0153780.z8.ru/

Создание простой регистрации на php и mysql, для новичков с нуля, создание и подключение к базе данных mysql.

Заказать сайт, сотрудничество: http://bit.ly/2aQgtDu Рекомендую этот хостинг: http://bit.ly/2aHvMQw Группа ВК: http://bit.ly/2aQgtDu Код...

Урок 4. Php & MySQL. Форма регистрации.

Продолжаем верстать! Часть 2. Система авторизации и регистрации на 100% PHP за 30 минут! Конечно сегодня я тоже...

Бесплатный зарубежный хостинг: 1 Гб диска, PHP, MySQL и никакой рекламмы. Подробнее на сайте: http://obovsem.in.ua/besplatnyj_host...

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

xsplit gamecaster twitch alerts binding of isaac soy milk libra how to run overwatch without graphics card cydia impactor lockdown error 57 sodapoppin battletag there was an error connecting with maestro league of legends 2015 terraria all items map 1.3.4 twitch knocking sound link gta v 1.26 mod menu ps3 agwawaf

debojj.net

регистрация на сайте php mysql Видео

2 г. назад

Сегодня мы с Вами напишем регистрацию и авторизацию с нуля на языке программирования PHP. Мы сделаем это...

2 г. назад

В этом видеоуроке вы научитесь создавать форму регистрации на своём сайте. Для этого вам понадобятся прогр...

4 г. назад

PHP Видеоуроки=====-- Создаем страницу регистрации на PHP + MySQL Ссылка на исходник: https://yadi.sk/d/D8zRfeZHdcdiK SQL-запрос...

6 г. назад

Неограниченное облачное хранилище: https://beta.hive.im/join/6608 В данном уроке рассмотрен один из вариантов создания...

3 г. назад

Как сделать регистрацию php + mysql [02] в этом уроке мы создаем форму регистрации создадим скрипт обработки и...

3 г. назад

В данном уроке рассмотрен один из вариантов создания регистрации на сайте + показан пример использования...

4 мес. назад

Всем привет, мы начинаем новый курс уроков PHP практика и начнем мы с реализации регистрации и авторизации...

4 г. назад

Регистрация Авторизация PHP MySQL.Часть1.

1 г. назад

Заказать сайт, сотрудничество: http://bit.ly/2aQgtDu Рекомендую этот хостинг: http://bit.ly/2aHvMQw Моя группа ВКонтакте: http://bit...

4 г. назад

В данном уроке мы сделали простую регистрацию на свой сайт с помощью PHP и MySql. Исходник первого и второго...

2 нед. назад

В этом видео мы сделаем крутую регистрацию на сайте! Ссылка на скачивание obrabotka.php https://drive.google.com/file/d/1paiZSNoHtnpCcG...

2 г. назад

Наши сайты: http://gameplay-hosting.ru http://pawn-tutorial.ru ===================================================== Код к уроку: ...

3 г. назад

Всем привет! В этом видео поговорим о авторизации и регистрации пользователей, создадим скрипт на php и "прик...

2 г. назад

Извините,что под конец вялый какой-то,просто устал =)) Вот ссылка на готовый сайт - https://yadi.sk/d/8BKkvaYN3Hs5bQ Здесь...

2 г. назад

Авторизация на PHP MySQL 02 урок предназначены для новичков. пишем скрипт авторизации ,создаем базу table. Мой сайт...

2 г. назад

Авторизация на PHP MySQL 01 урок предназначены для новичков. в этом уроке мы создадим страницы,и подключение...

8 г. назад

Установка скрипта формы Входа с сайта Russeler.com автор видео урока Меркулов Алексей Скрипт вы можете скачать...

11 мес. назад

Исходник для Devel Studio: https://yadi.sk/d/gNwKhoi_3Q3365.

2 г. назад

Код доступен в блоге, тут http://itist.ru/blog/?p=81.

3 г. назад

Всем привет! В этом видео поговорим о авторизации и регистрации пользователей, создадим скрипт на php и "прик...

3 г. назад

Установка скрипта регистрации и авторизации пользователей с активацией аккаунта письмом на боевом web серв...

videohot.ru