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

Звучит просто. Правильно?

Но что это за функция «запомни меня»?

Функция «Запомнить меня» - это способ облегчить пользователям работу с веб-приложениями. Обычно, когда пользователь вводит данные для входа в систему, появляется флажок с надписью «Запомнить меня». Если пользователь решит установить этот флажок, веб-приложение запомнит его, даже если он закроет веб-браузер. Благодаря этой функции пользователю не нужно повторно входить в веб-приложение. Веб-приложение сохранит данные для входа пользователя в файлы cookie.

Логика

Чтобы получить доступ к базе данных веб-приложения, пользователь должен ввести свои учетные данные для входа в веб-форму.

Теперь может быть два случая:

1. Пользователь вводит правильную информацию.

2. Пользователь вводит неверный логин или пароль.

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

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

Если пользователь установит флажок «Запомнить меня» при входе в систему, веб-приложение сохранит его учетные данные в файлах cookie в течение 30 дней. Это означает, что если он закроет браузер вместо надлежащего выхода, ему не придется повторно входить в систему для доступа к приложению в течение 30 дней.

Если пользователь выходит из системы, веб-приложение полностью удаляет все переменные сеанса и файлов cookie пользователя.

В приложении четыре страницы: login.php, login_ac.php, dashboard.php и logout.php. При любой попытке доступа к внутренним страницам будет отображаться сообщение об ошибке несанкционированного доступа.

Теперь, когда вы поняли логику, давайте углубимся в код.

Шаг 1

Начнем с базы данных.

Вы можете использовать консоль MySQL или интерфейс PHPMyAdmin для создания базы данных с именем login_system.

Теперь создайте таблицу users, в которой будет храниться информация для входа в систему.

УДАЛИТЬ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ `users`;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `users` (

`user_id` int (11) НЕ ПУСТО,

varchar (25) NOT NULL, user_name

varchar (100) NOT NULL, user_pass

отметка времени `join_date` НЕ NULL,

ПЕРВИЧНЫЙ КЛЮЧ (`user_id`)

) ДВИГАТЕЛЬ = СИМВОЛ ПО УМОЛЧАНИЮ MyISAM = latin1;

СОВЕРШИТЬ;

Заполните фиктивные данные

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

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

Шаг 2

Мы будем создавать следующую HTML-форму. Форма построена с использованием гибкой интерфейсной среды под названием Materialize. Чтобы использовать материализацию, вам потребуются файлы materialize.min.css и materialize.min.js. Вы можете скачать эти файлы с официального сайта или получить к ним доступ через CDN.

Https://materializecss.com/getting-started.html« [[T1]]

Я предпочитаю, чтобы метод CDN включал внешние файлы CSS и JavaScript.

Чтобы использовать Materialize, через CDN добавьте следующие строки кода в свой документ login.php. В головной раздел входят:

‹Link rel =” stylesheet ”href =” https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css ›

Непосредственно перед закрывающим тегом тела (‹/body›) добавьте следующую строку кода.

‹Скрипт src =” https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js ›‹/script›

В форме входа у нас будет два поля ввода (имя пользователя и пароль), один флажок (запомнить меня) и кнопка отправки.

Используйте эту ссылку в качестве исходящей ссылки в статье.

После того, как пользователь введет имя пользователя, пароль и установит флажок «Запомнить меня», форма будет выглядеть следующим образом.

Код

Login.php

Это отобразит HTML-форму входа в систему.

‹? Php
session_start ();
?›
‹! DOCTYPE html›
‹html lang =” en ”dir =” ltr ”›
‹head›
‹meta charset =” utf-8 '›
‹title› Система входа в PHP с функцией Запомнить меня ‹/title›
‹! - материализовать CSS →
‹link rel =” stylesheet ”href =” https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css '›< br /> ‹link href =» https://fonts.googleapis.com/css?family=Open+Sans 'rel = »stylesheet» ›
‹ link rel = »stylesheet» href = »style. css ”›
‹/head›
‹body›
‹div class =» form_div shadow »›
‹div class =» row center-align »›
‹H5› Форма входа ‹/h5›
‹/div›
‹? Php
if (isset ($ _ GET ['error'])) {
?›
‹P› Вы ввели неверное имя пользователя или пароль. ‹/P› ‹br›
‹? Php
}
?›
‹form class =” ”action = "Login_ac.php" method = "post" ›
‹ div class = "row" ›
‹ div class = "input-field col s12 '›
‹input name =" user_name " type = ”text” value = ”admin” ›
‹ label for = ”user_name” ›Имя пользователя ‹/label›
‹/div›

‹Div class =” поле ввода col s12 ›
‹ input name = ”user_pass” type = ”password” ›
‹ label for = ”user_pass” ›Пароль ‹/label›
‹ / div ›

‹Div class =” input-field col s12 ›
‹label›
‹ input type = ”checkbox” name = ”Remember_me” / ›
‹span› Запомнить меня ‹/span› < br /> ‹/label›
‹/div›
‹/div›

‹Div class =" row "›
‹div class =" input-field col s12 '›
‹ button class = "btn waves-effect waves-light" type = "submit" name = "submit ”Value =” login ”› Вход ‹/button›
‹/div›
‹/div›
‹/form›
‹/div›
‹/ div ›
‹! - материализовать JS →
‹скрипт src =» https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js '›‹/script›
‹/Body›
‹/html›

Login_ac.php

Login_ac.php будет обрабатывать данные, отправленные ему с помощью метода PHP. Он будет запрашивать базу данных по данным, введенным пользователем. Если совпадение найдено, он установит переменные сеанса.

‹? Php
session_start ();
include 'config.php';
?›
‹! DOCTYPE html›
‹html lang =” en ”dir = ”Ltr” ›
‹head›
‹ meta charset = ”utf-8 '›
‹title› Система входа в PHP с функцией Запомнить меня ‹/title›
‹link href = » Https://fonts.googleapis.com/css?family=Open+Sans 'rel =» stylesheet »›
‹link rel =» stylesheet »href =» style.css »›
‹/Head›
‹body style =” padding: 40px; ”›
‹? Php
if (isset ($ _ POST ['submit'])) {
$ user_name = $ _POST ['имя_пользователя'];
$ user_pass = $ _POST ['user_pass'];

$ query = «выберите * из пользователей, где user_name =‘ «. $ user_name.» ’и user_pass =‘ «. md5 ($ user_pass). «‘ »;
$ result = mysqli_query ($ conn, $ query);
$ row = mysqli_fetch_array ($ result);
$ num_rows = mysqli_num_rows ($ result);

if ($ num_rows == 1) {
$ _SESSION ['logged'] = 1;
$ _SESSION ['user'] = $ user_name;
$ _SESSION ['valid_user'] = 1;

if (($ _POST ['Remember_me'] == 1) || ($ _POST ['Remember_me'] == 'on')) {
$ hour = time () + 3600 * 24 * 30; < br /> setcookie ('userid', $ row ['user_id'], $ hour);
setcookie ('username', $ user_name, $ hour);
setcookie ('active', 1, $ hour);
}
header («Location: dashboard.php»);
} // допустимый пользователь
else {
header («Location: login. php? error = 1 »);
} // недопустимый пользователь
} else {
echo« Несанкционированный доступ. Пожалуйста ‹a href='login.php'› Войти ‹/a› »;
die ();
}
?›
‹/body›
‹ / html ›

Dashboard.php

‹? Php
session_start ();
?›
‹! DOCTYPE html›
‹html lang =” en ”dir =” ltr ”›
‹head›
‹meta charset =” utf-8 '›
‹title› Система входа в систему PHP с функцией Запомнить меня ‹/title›
‹ link href = ” https: //fonts.googleapis. com / css? family = Open + Sans 'rel =» stylesheet »›
‹link rel =» stylesheet »href =» style.css »›
‹/head›
‹body style = ”padding: 40px;” ›
‹? php
if (isset ($ _ COOKIE ['username'])) $ user = $ _COOKIE ['username'];
if ( isset ($ _ SESSION ['user'])) $ user = $ _SESSION ['user'];
if (! isset ($ user)) {
echo Несанкционированный доступ. Пожалуйста ‹a href='login.php'› Войти ‹/a› ;
die ();
}
?›
‹p›
Добро пожаловать ‹ ? php echo $ user; ??? html ›

Logout.php

Это приведет к удалению всех переменных сеанса и файлов cookie.

‹? Php
session_start ();
unset ($ _ SESSION ['logged']);
unset ($ _ SESSION ['user']);
unset ($ _ SESSION [ 'valid_user']);

$ hour = time () - 3600 * 24 * 30;
setcookie ('userid', «», $ hour);
setcookie ('username', «», $ hour);
setcookie ('active', «», $ час);

заголовок («Местоположение: login.php»);
? ›