PHP MVC CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

[Module User] - Tạo trang đăng nhập

Trong bài này chúng ta sẽ tiến hành xây dựng chức năng đăng nhập sử dụng thư viện PHP và database MySQL mà các bài trước chúng ta đã tạo. 

Nội dung bài này sẽ tương đối dài vì chúng ta phải xây dựng các thư viện, xây dựng model xử lý database và xây dựng luôn form HTML dể login.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trước tiên chúng ta tạo một trang dashboard đã nhé.

1. Tạo trang dashboard

Trang dashboard là trang mặc định khi đăng nhập thành công thì sẽ hiển thị trang này.

Bạn tạo một file tên dashboard.php nằm trong thư mục common.

 

<?php if (!defined('IN_SITE')) die ('The request not found'); ?>
<?php include_once('widgets/header.php'); ?>
<h1>Chào mừng bạn đến với trang quản trị admin [Author: freetuts.net]!</h1>
<?php include_once('widgets/footer.php'); ?>

 

Kể từ bây giờ khi đăng nhập thành công hoặc khi người dùng đã đăng nhập nhưng vẫn cố tình vào trang login thì sẽ bị chuyển hướng sang tran dashboard.

URL của trang này sẽ là http://localhost/php_example/admin/?m=common&a=dashboard.

2. Viết thư viện bổ trợ

Bạn vào file libs/helper.php và viết các hàm sau:

 

# BÀI THỨ 07
// Hàm tạo URL
function base_url($uri = ''){
    return 'http://localhost/php_example/'.$uri;
}

// Hàm redirect
function redirect($url){
    header("Location:{$url}");
    exit();
}

// Hàm lấy value từ $_POST
function input_post($key){
    return isset($_POST[$key]) ? trim($_POST[$key]) : false;
}

// Hàm lấy value từ $_GET
function input_get($key){
    return isset($_GET[$key]) ? trim($_GET[$key]) : false;
}

// Hàm kiểm tra submit
function is_submit($key){
    return (isset($_POST['request_name']) && $_POST['request_name'] == $key);
}

// Hàm show error
function show_error($error, $key){
    echo '<span style="color: red">'.(empty($error[$key]) ? "" : $error[$key]). '</span>';
}

 

Trong các hàm đó thì bạn cần chú ý hàm is_submit(), đây là hàm kiểm tra khi người dùng submit form. Vì key mặc định nó sử dụng là request_name nên kể từ bài này nếu bạn xây dựng form thì tạo một input hidden và gán tên của form cho nó.

Ví dụ:

 

<input type="hidden" name="request_name" value="login"/>

 

3. Viết model lấy chi tiết người dùng

Bạn mở file admin/database/user.php lên và bổ sung hàm sau:

 

<?php if (!defined('IN_SITE')) die ('The request not found');

function db_user_get_by_username($username){
    $username = addslashes($username);
    $sql = "SELECT * FROM tb_user where username = '{$username}'";
    return db_get_row($sql);
}

 

Hàm này sẽ lấy thông tin người dùng theo tên đăng nhập.

4. Tạo trang đăng nhập

Trước khi code chức năng đăng nhập thì ban kiểm tra file libs/session.php ở phía trên cùng của file đã có đoạn code session_start(); hay chưa, nếu chưa có thì bổ sung đoạn code đó ở đầu file nhé. Lý do là trong bài này chúng ta có sử dụng Session nên bắt buộc start trước khi dùng.

Bạn vào trang admin/modules/common/login.php và dán đoạn code sau vào:

 

<?php
$error = array();

// BƯỚC 1: KIỂM TRA NẾU LÀ ADMIN THÌ REDIRECT
if (is_admin()){
    redirect(base_url('admin/?m=common&a=dashboard'));
}

// BƯỚC 2: NẾU NGƯỜI DÙNG SUBMIT FORM
if (is_submit('login'))
{    
    // lấy tên đăng nhập và mật khẩu
    $username = input_post('username');
    $password = input_post('password');
    
    // Kiểm tra tên đăng nhập
    if (empty($username)){
        $error['username'] = 'Bạn chưa nhập tên đăng nhập';
    }
    
    // Kiểm tra mật khẩu
    if (empty($password)){
        $error['password'] = 'Bạn chưa nhập mật khẩu';
    }
    
    // Nếu không có lỗi
    if (!$error)
    {
        // include file xử lý database user
        include_once('database/user.php');
        
        // lấy thông tin user theo username
        $user = db_user_get_by_username($username);
        
        // Nếu không có kết quả
        if (empty($user)){
            $error['username'] = 'Tên đăng nhập không đúng';
        }
        // nếu có kết quả nhưng sai mật khẩu
        else if ($user['password'] != md5($password)){
            $error['password'] = 'Mật khẩu bạn nhập không đúng';
        }
        
        // nếu mọi thứ ok thì tức là đăng nhập thành công 
        // nên thực hiện redirect sang trang chủ
        if (!$error){
            set_logged($user['username'], $user['level']);
            redirect(base_url('admin/?m=common&a=dashboard'));
        }
    }
}

?>

<?php include_once('widgets/header.php'); ?>
<h1>Trang đăng nhập!</h1>
<form method="post" action="<?php echo base_url('admin/?m=common&a=login'); ?>">
    <table>
        <tr>
            <td>Username</td>
            <td>
                <input type="text" name="username" value=""/>
                <?php show_error($error, 'username'); ?>
            </td>
        </tr>
        <tr>
            <td>Password</td>
            <td>
                <input type="password" name="password" value=""/>
                <?php show_error($error, 'password'); ?>
            </td>
        </tr>
        <tr>
            <td>
                <input type="hidden" name="request_name" value="login"/>
            </td>
            <td>
                <input type="submit" name="login-btn" value="Đăng nhập"/>
            </td>
        </tr>
    </table>
</form>
<?php include_once('widgets/footer.php'); ?>

 

Phần comment mình đã giải thích kỹ rồi nên mình không giải thích gì thêm.

5. Lời kết

Như vậy là ta đã xây dựng xong chức năng đăng nhập sử dụng PHP và MySQL. Kể từ bài này độ khó sẽ tăng dần nên bạn cần chú ý cao độ, đặc biệt là nên xem video để hiểu rõ hơn. Bài tiếp theo chúng ta sẽ bổ sung một số thành phần quan trọng cho project.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top