- Bài 1: Thiết kế Database
- Bài 2: Xây dựng bố cục thư mục
- Bài 3: Tạo kết nối với CSDL
- Bài 4: Thiết kế giao diện cho trang Admin
- Bài 5: Làm chức năng đăng ký
- Bài 6: Làm chức năng đăng nhập cho người dùng
- Bài 7: Làm chức năng đăng nhập Admin
- Bài 8: Làm chức năng đăng xuất
- Bài 9: Thêm chuyên mục
- Bài 10: Làm chức năng sửa chuyên mục và hiển thị danh sách chuyên mục
- Bài 11: Làm chức năng thêm bài viết
- Bài 12: Làm chức năng hiển thị danh sách bài viết
- Bài 13: Làm chức năng sửa và xóa bài viết
Bài 7: Làm chức năng đăng nhập Admin - Xây dựng Website PHP theo MVC
Đăng bởi: Admin | Lượt xem: 13296 | Chuyên mục: PHP
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>
2) 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!.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Thiết kế Database
- Bài 2: Xây dựng bố cục thư mục
- Bài 3: Tạo kết nối với CSDL
- Bài 4: Thiết kế giao diện cho trang Admin
- Bài 5: Làm chức năng đăng ký
- Bài 6: Làm chức năng đăng nhập cho người dùng
- Bài 7: Làm chức năng đăng nhập Admin
- Bài 8: Làm chức năng đăng xuất
- Bài 9: Thêm chuyên mục
- Bài 10: Làm chức năng sửa chuyên mục và hiển thị danh sách chuyên mục
- Bài 11: Làm chức năng thêm bài viết
- Bài 12: Làm chức năng hiển thị danh sách bài viết
- Bài 13: Làm chức năng sửa và xóa bài viết