Skip to content Skip to sidebar Skip to footer

Авторизация Php Mysql И Запоминание Пользователей

Авторизация PHP и MySQL с Запоминанием Пользователей

Создание системы авторизации на основе PHP и базы данных MySQL — это стандартная задача для веб-разработчиков. В данной статье рассмотрим, как можно организовать процесс авторизации пользователей и запомнить информацию о них с использованием cookies или sesions.

Настройка базы данных

Для начала создадим таблицу в базе данных MySQL для хранения информации о пользователях:

«`sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL
);
«`

В этой таблице `username` — это уникальное имя пользователя, а `password_hash` хранит хеш пароля для обеспечения безопасности данных.

Регистрация пользователей

Для регистрации нового пользователя необходимо собрать данные формы и сохранить их в базе:

«`php
if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {
$username = $_POST[‘username’];
$password = $_POST[‘password’];

// Хеширование пароля
$password_hash = password_hash($password, PASSWORD_BCRYPT);

// Подключение к базе данных
$pdo = new PDO(‘mysql:host=localhost;dbname=mydatabase’, ‘root’, »);

// Запрос на вставку нового пользователя
$stmt = $pdo->prepare(INSERT INTO users (username, password_hash) VALUES (?, ?));
$stmt->execute([$username, $password_hash]);

echo Регистрация успешна!;
}
?>
«`

Авторизация пользователей

При авторизации мы проверяем введённые данные:

«`php
session_start();

if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {
$username = $_POST[‘username’];
$password = $_POST[‘password’];

// Подключение к базе данных
$pdo = new PDO(‘mysql:host=localhost;dbname=mydatabase’, ‘root’, »);

// Запрос на поиск пользователя
$stmt = $pdo->prepare(SELECT * FROM users WHERE username = ?);
$stmt->execute([$username]);
$user = $stmt->fetch();

if ($user && password_verify($password, $user[‘password_hash’])) {
$_SESSION[‘logged_in’] = true;
$_SESSION[‘user_id’] = $user[‘id’];

// Установка cookie для запоминания пользователя
setcookie(‘remember_me’, hash(‘sha256’, $username . time()), time() + (86400 * 30), /);

echo Авторизация успешна!;
} else {
echo Неправильное имя пользователя или пароль.;
}
}
?>
«`

Запоминание пользователей

Используя cookies, можно запомнить пользователя:

«`php
session_start();

if (!isset($_SESSION[‘logged_in’]) && isset($_COOKIE[‘remember_me’])) {
$username = hash(‘sha256’, $_COOKIE[‘remember_me’]);

// Подключение к базе данных
$pdo = new PDO(‘mysql:host=localhost;dbname=mydatabase’, ‘root’, »);

// Запрос на поиск пользователя
$stmt = $pdo->prepare(SELECT * FROM users WHERE username = ?);
$stmt->execute([$username]);
$user = $stmt->fetch();

if ($user) {
$_SESSION[‘logged_in’] = true;
$_SESSION[‘user_id’] = $user[‘id’];
}
}
?>
«`

Логаут

Для выхода из системы необходимо очистить сессию и удалить cookie:

«`php
session_start();

// Удаление сессии
$_SESSION = array();
session_destroy();

// Удаление cookie
setcookie(‘remember_me’, », time() — 3600, /);

echo Вы вышли из системы.;
?>
«`

Заключение

Использование PHP и MySQL для авторизации пользователей с возможностью запоминания состояния сессии является распространённым подходом. Применение хеш-функций для паролей и cookies для длительного входа пользователя помогает повысить безопасность и удобство использования приложения.