Авторизация пользователя на PHP (8.1) с Bootstrap 5
Ниже представлен скрипт на PHP 8.1, который реализует страницу авторизации пользователя с использованием Bootstrap 5 для стилизации. Скрипт включает HTML-форму для ввода данных пользователя, а также базовую логику обработки входных данных.
/project
├── index.php # Главная страница с формой авторизации
├── login.php # Обработчик формы авторизации
└── assets/ # Папка для статических файлов (CSS, JS)
Код index.php (Главная страница с формой авторизации):
<?php
session_start();
// Если пользователь уже авторизован, перенаправляем его на другую страницу
if (isset($_SESSION['user'])) {
header("Location: dashboard.php");
exit();
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Авторизация</title>
<!-- Подключение Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card">
<div class="card-header bg-primary text-white">
<h4 class="mb-0">Авторизация</h4>
</div>
<div class="card-body">
<?php
// Выводим сообщение об ошибке, если есть
if (isset($_GET['error'])) {
echo '<div class="alert alert-danger">' . htmlspecialchars($_GET['error']) . '</div>';
}
?>
<form action="login.php" method="POST">
<div class="mb-3">
<label for="username" class="form-label">Имя пользователя</label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Пароль</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<button type="submit" class="btn btn-primary w-100">Войти</button>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Подключение Bootstrap 5 JS и Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Код login.php (Обработчик формы авторизации):
<?php
session_start();
// Пример простых учетных данных (в реальном проекте используйте базу данных)
$valid_users = [
'admin' => password_hash('password123', PASSWORD_BCRYPT), // Хэшированный пароль
'user' => password_hash('userpass', PASSWORD_BCRYPT),
];
// Проверяем, что форма отправлена методом POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = trim($_POST['username']);
$password = $_POST['password'];
// Проверяем, существует ли пользователь с таким именем
if (array_key_exists($username, $valid_users)) {
// Проверяем пароль
if (password_verify($password, $valid_users[$username])) {
// Авторизация успешна
$_SESSION['user'] = $username;
header("Location: dashboard.php");
exit();
} else {
// Неверный пароль
header("Location: index.php?error=" . urlencode('Неверный пароль'));
exit();
}
} else {
// Пользователь не найден
header("Location: index.php?error=" . urlencode('Пользователь не найден'));
exit();
}
} else {
// Если форма не отправлена методом POST
header("Location: index.php?error=" . urlencode('Неверный запрос'));
exit();
}
?>
Код dashboard.php (Пример защищенной страницы):
<?php
session_start();
// Если пользователь не авторизован, перенаправляем его на страницу входа
if (!isset($_SESSION['user'])) {
header("Location: index.php");
exit();
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Личный кабинет</title>
<!-- Подключение Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card">
<div class="card-header bg-success text-white">
<h4 class="mb-0">Добро пожаловать, <?php echo htmlspecialchars($_SESSION['user']); ?>!</h4>
</div>
<div class="card-body">
<p>Вы успешно авторизовались.</p>
<a href="logout.php" class="btn btn-danger">Выйти</a>
</div>
</div>
</div>
</div>
</div>
<!-- Подключение Bootstrap 5 JS и Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Код logout.php (Выход из системы):
<?php
session_start();
// Уничтожаем сессию
session_destroy();
// Перенаправляем пользователя на страницу входа
header("Location: index.php");
exit();
?>
Описание работы скрипта:
- Страница авторизации (
index.php):- Отображает форму для ввода имени пользователя и пароля.
- При наличии ошибок выводит соответствующие сообщения.
- Обработчик формы (
login.php):- Проверяет введенные данные на соответствие учетным записям.
- Использует
password_hash()иpassword_verify()для безопасной проверки паролей.
- Защищенная страница (
dashboard.php):- Доступна только авторизованным пользователям.
- Позволяет выйти из системы через ссылку.
- Выход из системы (
logout.php):- Уничтожает сессию и перенаправляет пользователя на страницу входа.
Примечания:
- В реальном проекте учетные данные должны храниться в базе данных.
- Для защиты от SQL-инъекций используйте подготовленные выражения.
- Для дополнительной безопасности можно добавить защиту от CSRF и XSS.
Таким образом, этот скрипт предоставляет базовую функциональность для авторизации пользователя с использованием PHP 8.1 и Bootstrap 5.
Share this content:



Отправить комментарий