Hướng dẫn đăng nhập php mvc

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:

Chạy đường dẫn để hiển thị giao diện đăng nhập Admin:
http://localhost/blog/?controller=login

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 "";
                    }
                } else {
                    echo "";
                }
            }
        }

        return $error;
    }

File Controller/client/login.php hoàn chỉnh:

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 "";
                    }
                } else {
                    echo "";
                }
            }
        }

        return $error;
    }
}

Trong file View/admin/index.php ta chỉnh lại như sau:

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!.