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] - File Bootstrap admin

File bootstrap index.php là file dùng để xử lý nhận request của người dùng, nghĩa là tất cả các request sẽ vào file này và từ file này sẽ điều hướng đến module hợp lý. Như vậy nhiệm vụ của file bootstrap sẽ tiếp nhận request từ client, phân tích request và gọi đến module tương ứng, nếu module không tồn tại thì sẽ gọi đến module thông báo lỗi.

Trước tiên chúng ta tìm hiểu lại cấu trúc folder của ứng dụng.

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.

1. Phân biệt module và action trên URL

Cấu trúc URL của admin sẽ có dạng như sau: localhost/php_example/admin/index.php?m=ten_module&a=ten_action.

Như vậy tên module là gì và tên action là gì? Để trả lời câu hỏi này trước tiên chúng ta quay lại cấu trúc folder của admin như hình dưới đây.

cau truc folder admin png

Trong cấu trúc này thì mỗi module sẽ có nhiều file, mỗi file như vậy ta gọi là một action. Ví dụ với module user thì chúng ta có 4 action đó là add, delete, edit và list.

Vậy tại sao ta lại truyền tên module và tên action trên URL? Lý do đơn giản là dựa vào hai thông tin này mà file bootstrap sẽ gọi đúng tên module và tên action mà URL yêu cầu.

2. Viết file bootstrap index.php

Trong hệ thống admin thì file bootstrap chính là file admin/index.php, vì vậy bạn mở file này lên và nhập vào đoạn code sau:

 

// Định nghĩa một hằng số bảo vệ project
define("IN_SITE", true);

// Lấy module và action trên URL
$module = isset($_GET['m']) ? $_GET['m'] : '';
$action = isset($_GET['a']) ? $_GET['a'] : '';

// Trường hợp người dùng không truyền module và action
// thì ta lấy module mặc định là common
// và action mặc định là login
if (empty($module) || empty($action)){
    $module = 'common';
    $action = 'login';
}

// Tạo đường dẫn và lưu vào biến $path
$path = 'modules/'.$module . '/' . $action . '.php';

// Trường hợp URL chạy đúng
if (file_exists($path)) {
    include_once ('../libs/session.php');
    include_once ('../libs/database.php');
    include_once ('../libs/role.php');
    include_once ('../libs/helper.php');
    include_once ($path);
} 
else {
    // Trường hợp URL không tồn tại thì thông báo lỗi
    include_once ('modules/common/404.php');
}

 

Sau khi kiểm tra module và action hợp lệ thì mình có thêm các thư viện mà ở các bài trước chúng ta đã làm.

 

include_once ('../libs/session.php');
include_once ('../libs/database.php');
include_once ('../libs/role.php');
include_once ('../libs/helper.php');

 

Trong đoạn code trên mình có comment giải thích rất rõ ràng rồi. Tuy nhiên có một câu hỏi mà có lẽ bạn cũng đang thắc mắc.

Hằng số IN_SITE dùng để làm gì?

Đây là hằng số dùng để bảo vệ Project. Vậy nó hoạt động như thế nào?

Quay lại các bài trước chút xíu. Giả sử bạn vào trình duyệt và gõ URL là localhost/php_example/libs/database.php thì sẽ thấy vào bình thường, hoặc là bạn vào một file bất kì nào trong thư viện đều được, điều này thật là nguy hiểm bởi vì theo cấu trúc của ứng dụng thì mọi request đều phải vào file admin/index.php. Mà một khi đã vào file admin/index.php thì hằng số này sẽ được khởi tạo, lúc này ở các thư viện ta chỉ cần kiểm tra hằng số này có tồn tại hay không? Nếu không tồn tại thì tức là hacker đã cố ý xâm nhập vào nên ta sẽ ngăn chặn.

Bây giờ bạn vào tất cả các file trong hệ thống website trừ file bootstrap và đặt trên đầu mỗi file một đoạn code nhu sau:

 

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

 

Ok như vậy là mọi thứ đã ổn rồi đấy, và chúng ta đã hoàn thàn xong file admin bootstrap.

Bây giờ bạn hãy thử vào một số module mà mình đa tạo sẵn xem có chạy không nhé, nếu không chạy thì hãy đăng câu hỏi và mình sẽ hỗ trợ.

2. Lời kết

Bài này có lẽ hơi phức tạp và khó theo dõi đối với những bạn mới học. Nhưng bạn đừng lo vì mình có quay video kèm theo nên bạn hãy xem thêm video nếu không hiểu nhé. Bài tiếp theo chúng ta sẽ viết phần database xử lý tha tác lấy danh sách, thêm, xóa và sửa thành viên.

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