Đăng ngày: 18-03-2016 · cập nhật lần cuối: 22-03-2016 · bởi skillaug_vn

Để xây dựng module đăng nhập thì có rất nhiều cách khác nhau, nhưng trong bài này mình chỉ đề cập đến cách mà chỉ sử dụng PHP với thuật toán đơn giản nhất để phân quyền admin và khách, đây là cách mà mình khuyên các bạn là không nên sử dụng vì nó có nhiều hạn chế, bảo mật và sự linh hoạt không thật sự tốt, nhưng trong một số trường hợp đặc biệt thì nó cũng rất có ích.

Chuẩn bị:

1. login.php
2. checklogin.php
3. example.php

login.php
<form action="checklogin.php" method="post">
username:<br/>
<input type="text" name="username" value=""><br/>
password:<br/>
<input type="text" name="password" value="">
<input type="submit" name="submit" value="Đăng nhập">
</form>

checklogin.php
<?php
define('USERNAME', 'admin'); //định nghĩa cho hằng USERNAME có giá trị là admin
define('PASSWORD', '123456');
if(isset($_POST['submit'])) //nếu người dùng nhấn nút đăng nhập
{
$u = $_POST['username'];
$p = $_POST['password'];
if(USERNAME != $u or PASSWORD != $p) //nếu thông tin đăng nhập không khớp
{
die('Thông tin đăng nhập không chính xác!'); //kết thúc và thông báo lỗi
}
session_start();
$_SESSION['user'] = USERNAME; //tạo session user có giá trị là admin
header('location: example.php'); //chuyển hướng đến trang example.php
}
?>

example.php
<?php
session_start();
if(isset($_SESSION['user']) and $_SESSION['user'] == 'admin') //nếu tồn tại session user và session user có giá trị là admin
{
echo 'đăng nhập dưới tên: '.$_SESSION['user'];
}
else
{
echo 'bạn chưa đăng nhập';
}
?>

Bài tập

Câu 1. Không cho phép người dùng đăng nhập tiếp nếu đang trong trạng thái đã đăng nhập.
Câu 2. Chỉ ra lỗi cụ thể nếu người dùng nhập sai thông tin đăng nhập.
Câu 3. Vẫn sử dụng trang checklogin.php để xử lý thông tin đăng nhập nhưng khi gặp lỗi thì hãy chuyển hướng đến trang login.php và thông báo lỗi tại trang login.php.
1