Chúng ta tiếp tục với Bài 18: Session đăng nhập cơ bản – demo form login trong môn học PHP thuần túy. Bài học này giúp bạn hiểu rõ cách sử dụng session để thực hiện chức năng đăng nhập cơ bản, một nền tảng không thể thiếu trong hầu hết các website.
Trong thế giới web, mỗi người dùng cần một cách để “nhận diện” khi truy cập và tương tác với hệ thống – đó chính là lúc session phát huy tác dụng. Không giống như cookie, session lưu trữ thông tin ở phía server và chỉ sử dụng một ID duy nhất phía client để truy cập. Vì vậy, nó bảo mật hơn và phù hợp để quản lý đăng nhập.
Mở bài: Tại sao lại cần session để login?
Hãy tưởng tượng bạn có một trang admin chỉ dành cho người quản trị. Làm sao để sau khi người đó đăng nhập, mọi trang khác đều biết rằng người này đã đăng nhập? Câu trả lời nằm ở session. Nhờ nó, bạn có thể “ghi nhớ” người dùng trong suốt phiên làm việc.
1. Bắt đầu với session_start()
PHP không tự động bật session, bạn phải gọi session_start() ở đầu trang PHP, trước bất kỳ dòng HTML nào:
<?php
session_start();
?>
Một khi gọi xong, bạn có thể dùng $_SESSION như một mảng để lưu giá trị.
2. Tạo file login.php với form đơn giản
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head><title>Đăng nhập</title></head>
<body>
<h2>Đăng nhập</h2>
<form method="post" action="login.php">
<label>Username:</label>
<input type="text" name="username" required><br><br>
<label>Password:</label>
<input type="password" name="password" required><br><br>
<button type="submit">Login</button>
</form>
</body>
</html>
3. Xử lý đăng nhập
Thêm đoạn xử lý ở đầu file login.php:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
// Tạm thời dùng tài khoản cứng, chưa kết nối cơ sở dữ liệu
if ($username === 'admin' && $password === '123456') {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
header('Location: dashboard.php');
exit;
} else {
echo "<p style='color:red'>Sai tài khoản hoặc mật khẩu</p>";
}
}
?>
4. Tạo trang dashboard.php để kiểm tra login
<?php
session_start();
if (!isset($_SESSION['loggedin'])) {
header('Location: login.php');
exit;
}
?>
<!DOCTYPE html>
<html>
<head><title>Dashboard</title></head>
<body>
<h2>Xin chào, <?= htmlspecialchars($_SESSION['username']) ?></h2>
<p>Đây là trang quản trị.</p>
<a href="logout.php">Đăng xuất</a>
</body>
</html>
5. Thêm file logout.php để đăng xuất
<?php
session_start();
session_unset();
session_destroy();
header('Location: login.php');
exit;
?>
Lời kết
Bạn vừa thực hành xong một hệ thống login đơn giản chỉ với PHP thuần. Mặc dù đây là dạng demo (chưa có database, chưa mã hóa mật khẩu), nhưng nó đã mở ra cánh cửa cho mọi ứng dụng web bảo mật hơn sau này.
Khi bạn đã nắm chắc phần này, bước tiếp theo có thể là tích hợp hệ thống đăng ký, xác thực qua database, hoặc triển khai bảo vệ trang bằng vai trò người dùng. Nhưng hãy cứ từ từ, vì bài học hôm nay chính là bước khởi đầu vững chắc cho hệ thống web động bằng PHP.

Thảo luận