1) Chuẩn bị giao diện đăng nhập Admin
Tạo file View/client/pages/login_admin.php và chèn đoạn code sau:
<section class="bg-accent section-space-less2">
<div class="container">
<div class="modal-header">
<div class="title-login-form">Đăng nhập Admin</div>
</div>
<div class="login-form">
<form method="post">
<label>Tên đăng nhập *</label>
<input name="username_admin" type="text" placeholder="Tên đăng nhập" />
<label>Mật khẩu *</label>
<input name="password_admin" type="password" placeholder="Mật khẩu" />
<button type="submit" name="login_admin" value="Login">Đăng nhập</button>
</form>
</div>
</div>
</section>
Chạy đường dẫn để hiển thị giao diện đăng nhập Admin:
http://localhost/blog/?controller=login2) Viết chức năng đăng nhập
Tạo file Controller/client/login.php
Kiểm tra nếu tồn tại $_SESSION['useradmin'] chuyển hướng vào trang admin ngược lại hiển thị giao diện đăng nhập Admin
public function __construct()
{
/**
* Nếu tồn tại $_SESSION['useradmin'] chuyển hướng vào trang admin
* Ngược lại hiển thị giao diện đăng nhập
* @var array
*/
if (!empty($_SESSION['useradmin'])) {
header('Location: View/admin');
} else {
$userModel = new UserModel();
$error = $this->loginAdmin($userModel);
require('View/client/pages/login_admin.php');
}
}
Viết hàm đăng nhập:
public function loginAdmin($userModel)
{
$username = $password = $fullName = NULL;
$error = array();
$error['username_admin'] = $error['password_admin'] = NULL;
if (!empty($_POST['login_admin'])) {
if (empty($_POST['username_admin'])) {
$error['username_admin'] = '* Cần điền tên đăng nhập';
} else {
$username = $_POST['username_admin'];
}
if (empty($_POST['password_admin'])) {
$error['password_admin'] = '* Cần điền mật khẩu';
} else {
$password = md5(md5($_POST['password_admin']));
}
if ($username && $password) {
$result = $userModel->login($username, $password);
$check = $result->num_rows; /*đếm số dòng trong database*/
/**
* Nếu số dòng trong database > 0 => lưu session + lấy dữ liệu + chuyển hướng
* Ngược lại thông báo alert bằng script
* @var array
*/
if ($check > 0) {
$data = $result->fetch_array(); /*lấy dữ liệu tương ứng với username và password nhập*/
$_SESSION['useradmin'] = $data; /*lưu session*/
/**
* Nếu level = 1 thì chuyển hướng đến trang quản trị viên
* Ngược lại thì thông báo đăng nhập lại
* @var array
*/
if ($data['level'] == admin) {
header('Location: View/admin');
} else {
echo "<script>alert('Vui lòng đăng nhập lại')</script>";
}
} else {
echo "<script>alert('Sai mật khẩu hoặc tên đăng nhập')</script>";
}
}
}
return $error;
}
File Controller/client/login.php hoàn chỉnh:
<?php
class Login
{
public function __construct()
{
/**
* Nếu tồn tại $_SESSION['useradmin'] chuyển hướng vào trang admin
* Ngược lại hiển thị giao diện đăng nhập
* @var array
*/
if (!empty($_SESSION['useradmin'])) {
header('Location: View/admin');
} else {
$userModel = new UserModel();
$error = $this->loginAdmin($userModel);
require('View/client/pages/login_admin.php');
}
}
public function loginAdmin($userModel)
{
$username = $password = $fullName = NULL;
$error = array();
$error['username_admin'] = $error['password_admin'] = NULL;
if (!empty($_POST['login_admin'])) {
if (empty($_POST['username_admin'])) {
$error['username_admin'] = '* Cần điền tên đăng nhập';
} else {
$username = $_POST['username_admin'];
}
if (empty($_POST['password_admin'])) {
$error['password_admin'] = '* Cần điền mật khẩu';
} else {
$password = md5(md5($_POST['password_admin']));
}
if ($username && $password) {
$result = $userModel->login($username, $password);
$check = $result->num_rows; /*đếm số dòng trong database*/
/**
* Nếu số dòng trong database > 0 => lưu session + lấy dữ liệu + chuyển hướng
* Ngược lại thông báo alert bằng script
* @var array
*/
if ($check > 0) {
$data = $result->fetch_array(); /*lấy dữ liệu tương ứng với username và password nhập*/
$_SESSION['useradmin'] = $data; /*lưu session*/
/**
* Nếu level = 1 thì chuyển hướng đến trang quản trị viên
* Ngược lại thì thông báo đăng nhập lại
* @var array
*/
if ($data['level'] == admin) {
header('Location: View/admin');
} else {
echo "<script>alert('Vui lòng đăng nhập lại')</script>";
}
} else {
echo "<script>alert('Sai mật khẩu hoặc tên đăng nhập')</script>";
}
}
}
return $error;
}
}
Trong file View/admin/index.php ta chỉnh lại như sau:
<?php
session_start(); /*đăng ký phiên làm việc*/
ob_start();
require '../../Config/config.php';
require '../../Model/Database.php';
$db = new Database();
/**
* Nếu tồn tại session và giá trị level = 1 thì có quyền truy cập trang quản trị viên
* Ngược lại thì chuyển hướng về trang chủ
* @var array
*/
if (!empty($_SESSION['useradmin']) && $_SESSION['useradmin']['level'] == admin) {
require('layouts/header.php');
if (isset($_GET['controller'])) {
require '../../Route/admin/web.php'; /*xử lý các request trong Route/web.php*/
} else {
require('pages/home.php');
}
require('layouts/footer.php');
} else {
header('Location: ../../');
}
$db->closeDatabase();
Mỗi dòng code mình đã ghi chú rất kỹ trong đó, các bạn nhớ đọc kỹ nhé. Nếu có gì không hiểu hãy comment bên dưới để được giải đáp.
Chúc các bạn thành công!.