Авторизация на PHP
Еще одна часто возникающая при создании серьезных сайтов задача – авторизация пользователей. В этой статье я расскажу как сделать авторизацию на сайте с разграничением прав доступа с помощью PHP и базы MySQL.
Начнем с создания таблицы users в базе данных. Минимальное количество полей – 4:
- id (smallint) – уникальный идентификатор пользователя (unique, auto_increment).
- username (varchar(255)) – имя пользователя
- password (varchar(255)) – md5 хеш пароля
- rights (varchar(1)) – права пользователя
Итак таблица создана, далее нам понадобится сама форма для авторизации:
Скрытое поле будет использовано для определения была ли передана форма. Переходим к логике самого скрипта. В самом начале страницы где необходима авторизация запускаем сессии session_start(). Далее проверяем авторизован ли пользователь, если нет, то выводим форму авторизации, если пользователь ввел имя пользователя и пароль – проверяем есть ли такой пользователь и пароль, если нет – опять выводим форму, если да – выводим содержимое страницы – все просто…
Так должен начинаться каждый файл, в котором необходима авторизация.
Теперь файл authorization.php:
function authorization($login, $password) <
//устанавливаем начальное значение авторизации
$user_login=FALSE;
//запрос к базе данных
$q=»SELECT * FROM users WHERE login=’$login'»;
$pass=md5($password);
$auth=mysql_fetch_assoc(mysql_query($q));
//проверяем, совпадают ли пары логин-пароль введенные пользователем с теми что в таблице users
if ($login==$auth[‘login’] and $pass==$auth[‘password’]) <
switch ($auth[‘rights’]) <
//пользователь с правами администратора
case ‘a’:
$_SESSION[‘user’]=’a’;
//ставим значение $_SESSION[‘auth’] TRUE, что соответствует входу зарегистрированного пользователя
$_SESSION[‘auth’]=TRUE;
$_SESSION[‘user_id’]=$auth[‘id’];
break;
//обычный пользователь
case ‘u’:
$_SESSION[‘user’]=’u’;
$_SESSION[‘auth’]=TRUE;
$_SESSION[‘user_id’]=$auth[‘id’];
break;
>
$_SESSION[‘username’]=$auth[‘login’];
$user_login=TRUE;
>
else if ($login!=$auth[‘login’]) <
$error_auth=»Неверный логин»;
$user_login=FALSE;
$_SESSION[‘auth’]=FALSE;
>
else if (md5($password)!=$auth[‘password’]) <
$error_auth=»Неверный пароль»;
$user_login=FALSE;
$_SESSION[‘auth’]=FALSE;
>
return $user_login;
>
Вот и все. Функция принимает в качестве обязательных параметров перменные $login и $password, возвращает перменную $user_login в значении TRUE если авторизация прошла успешно, и FALSE если нет. Стоит описать переменные, которые помещает функция в массив $_SESSION:
$_SESSION[‘user’] – права пользователя, a – администратор, u – простой пользователь.
$_SESSION[‘auth’] – TRUE или FALSE – прошла авторизация или нет.
$_SESSION[‘user_id’] – уникальный идентификатор пользователя – не обязательная переменная, иногда ее можно использовать в служебных целях, таких как учет записей добавленных пользователем, или время последнего редактирования записи этим пользователем.
Что дальше решать вам – где и как применять данную логику.
Как с помощью PHP и MySQL создать систему регистрации и авторизации пользователей
Безопасная система авторизации и регистрации является одним из важнейших элементов при создании проекта с нуля. Один из возможных способов — это создание системы регистрации с помощью PHP и MySQL .
Хотя в Интернете есть много пособий на эту тему, большинство из них предназначено для продвинутых пользователей.
Эта статья расскажет о том, как создать простую версию системы авторизации и регистрации пользователей с использованием PHP и MySQL для начинающих. Давайте начнем!
Обновлено: 2022-10-30 15:09:03 Вадим Дворников автор материала
Ресурсы, необходимые для работы с этим руководством:
- Xampp ( PHP версии 5.3 или более поздней и MySQL версии 4.1.3 или более поздней );
- Базовые знания по PHP , HTML и CSS ;
- Время и терпение.
Что мы создаем

Настройка сервера
Вы можете использовать любой хостинг с поддержкой PHP и MySQL ( только убедитесь, что он поддерживает PHP версии 5.3 или более поздней и MySQL версии 4.1.3 или более поздней ).
Но в этой статье в качестве сервера будет использоваться Xampp . Если до этого не работали с Xampp , эта статья может помочь вам разобраться, как его должным образом установить на вашем компьютере.
Шаг 1 – MySQL
Во-первых, создайте базу данных и таблицу, которая будет содержать все регистрационные данные. Вы можете сделать это вручную с помощью графического интерфейса пользователя PhpMyAdmin или использовать для вставки этой информации SQL .
Взгляните на приведенный ниже код SQL :
/* Создание базы данных */ CREATE DATABASE userlistdb; /* Создание таблицы */ CREATE TABLE `usertbl` ( `id` int(11) NOT NULL auto_increment, `full_name` varchar(32) collate utf8_unicode_ci NOT NULL default '', `email` varchar(32) collate utf8_unicode_ci NOT NULL default '', `username` varchar(20) collate utf8_unicode_ci NOT NULL default '', `password` varchar(32) collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Обратите внимание, что все данные представляют собой varchar , и даже пароль позже будет преобразован в символ md5 , чтобы обеспечить его безопасность.
Кроме того, используйте auto_increment для автоматического назначения идентификаторов или номеров пользователям, которые будут регистрироваться в системе.
Теперь, когда таблица создана, нужно задать разметку и стили CSS , а затем PHP -код.
Шаг 2 — Разметка
Для разметки, нам нужно включить три файла, и все они должны быть сохранены в формате » .php «, так как мы создаем программу сценариев на стороне сервера.
Сначала создайте файл login.php . Скопируйте в него приведенный ниже код:
Как с помощью PHP и MySQL создать систему регистрации и авторизации пользователей Вход
С помощью этого кода вы получите результат, который показан на рисунке ниже:

Далее, создаем файл register.php . Скопируйте и вставьте в него приведенный ниже код:
Как с помощью PHP и MySQL создать систему регистрации и авторизации пользователей Регистрация
С помощью этого кода вы получите следующий результат:

Далее, создаем файл intropage.php . Он будет служить в качестве страницы приветствия после того, как пользователь успешно авторизовался в системе:
Добро пожаловать, USER
!Выйти из системы
Этот код даст нам следующий результат:

Шаг 3 — CSS
Теперь, когда разметка готова, нужно добавить CSS -код. В основном, он будет содержать стили для класса страниц container, а также для кнопок и некоторых других элементов, таких как текстовые поля и лайки:
/*= ОБЩИЕ СТИЛИ ———————————————————*/ body < background: #efefef; font-family: 'Open Sans', sans-serif; color: #777; >a < color: #f58220; font-weight: 400; >span < font-weight: 300; color: #f58220; >.mlogin < margin: 170px auto 0; >.mregister < margin: 80px auto 0; >.error < margin: 40px auto 0; border: 1px solid #777; padding: 3px; color: #fff; text-align: center; width: 650px; background: #f58220; >.regtext < font-size: 13px; margin-top: 26px; color: #777; >/*= КОНТЕЙНЕРЫ ———————————————————*/ .container < padding: 25px 16px 25px 10px; font-weight: 400; overflow: hidden; width: 350px; height: auto; background: #fff; -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.13); -moz-box-shadow: 0 1px 3px rgba(0,0,0,.13); box-shadow: 0 1px 3px rgba(0,0,0,.13); >#welcome < width: 500px; padding: 30px; background: #fff; margin: 160px auto 0; -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.13); -moz-box-shadow: 0 1px 3px rgba(0,0,0,.13); box-shadow: 0 1px 3px rgba(0,0,0,.13); >.container h1 < color: #777; text-align: center; font-weight: 300; border: 1px dashed #777; margin-top: 13px; >.container label < color: #777; font-size: 14px; >#login < width: 320px; margin: auto; padding-bottom: 15px; >.container form .input,.container input[type=text],.container input[type=password],.container input[type=e] < background: #fbfbfb; font-size: 24px; line-height: 1; width: 100%; padding: 3px; margin: 0 6px 5px 0; outline: none; border: 1px solid #d9d9d9; >.container form .input:focus < border: 1px solid #f58220; -webkit-box-shadow: 0 0 3px 0 rgba(245,130,32,0.75); -moz-box-shadow: 0 0 3px 0 rgba(245,130,32,0.75); box-shadow: 0 0 3px 0 rgba(245,130,32,0.75); >/*= КНОПКИ ———————————————————*/ .button < border: solid 1px #da7c0c; background: #f78d1d; background: -webkit-gradient(linear, left top, leftbottom, from(#faa51a), to(#f47a20)); background: -moz-linear-gradient(top, #faa51a, #f47a20); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); color: #fff; padding: 7px 12px; -webkit-border-radius:4px; moz-border-radius:4px; border-radius:4px; float: right; cursor: pointer; >.button:hover < background: #f47c20; background: -webkit-gradient(linear, left top, leftbottom, from(#f88e11), to(#f06015)); background: -moz-linear-gradient(top, #f88e11, #f06015); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015'); >/*= ПОДВАЛ ———————————————————*/ footer
К этому времени, вы уже должны получить тот же результат, что и на изображении, приведенном в начале статьи.
Шаг 4 — Многоразово используемые элементы
Теперь, когда у вас готовы разметка и стили CSS , попробуйте задействовать такие многоразово используемые элементы, как раздел заголовка и раздел подвала. В корневой папке создайте новую папку и назовите ее “ includes “.
В ней будут содержаться все включаемые файлы. Затем в папке includes создайте новый файл и назовите его header.php . Скопируйте часть раздела заголовка в каждый из трех PHP -файлов, созданных нами ранее. Таким образом, у вас получится:
Следующее, что вам нужно сделать, это удалить разметку, скопированную из файла header.php во всех трех PHP -файлах и заменить ее следующим PHP -кодом:
Теперь, сделайте то же самое с подвалом. Скопируйте приведенный ниже код и вставьте его в новый файл footer.php . Он будет включать в себя раздел подвала: