Từng bước học lập trình php căn bản qua dự án website giới thiệu sản phẩm – Tạo trang đăng nhập, đăng xuất

Từ phần này, tôi sẽ hướng dẫn các bạn thực hiện các trang trong phần quản trị (Admin).

Nội dung kiến thức phần này gồm:

– Session.
– Câu lệnh điều kiện (Cấu trúc điều khiển).
– Toán tử.

Trong thư mục admin, các bạn tạo mới một thư mục tên là user để chứa các file xữ lý liên quan tới thành viên (Đăng nhập, đăng xuất, danh sách, thêm mới, chỉnh sửa).

Trong thư mục admin/user, tạo mới file login.php để viết mã lệnh xử lý đăng nhập.

Nội dung file admin/user/login.php như sau:

<?php
//Khởi động session
session_start();

//Kiểm tra nếu đã đăng nhập thì quay về trang chủ quản trị
if(isset($_SESSION[‘user’])){
header(‘location:../home/home.php’);
}

//Require các file cần thiết
require ‘../../configs/config.php’;
require ‘../../libraries/connect.php’;
require ‘../../models/user.php’;

//Kiểm tra dữ liệu POST lên
if(isset($_POST[‘username’]) && !empty($_POST[‘username’]) && isset($_POST[‘password’]) && !empty($_POST[‘password’])){
//Gán tài khoản và mật khẩu nhận được từ form vào 2 biến tương ứng
$username = $_POST[‘username’];
$password = $_POST[‘password’];

//Lấy thông tin thành viên từ DB
$user = get_user_by_username($username);

//Kiểm tra sự tồn tại của thành viên và mật khẩu có trùng khớp
if($user && $user[‘password’] === md5($password)){
//Tạo session lưu thông tin thành viên đăng nhập thành công
$_SESSION[‘user’] = $user;

//Chuyển hướng về trang chủ quản trị
header(‘location:../home/home.php’);
}else{
//Bật cờ lỗi
$error = true;
}
}

//Require file giao diện (View)
require ‘../../views/admin/user/login.tpl.php’;
?>

Lưu ý:

– Các bạn mở file libraries/connect.php và xóa dòng lệnh “require ‘configs/config.php’;”. File configs/config.php sẽ được require ở các file xữ lý chứ không require trong file libraries/connect.php nữa. Hôm trước tôi thực hiện như vậy là để các bạn dễ hình dung vấn đề.
– Trang chủ quản trị tôi sẽ không hướng dẫn các bạn thực hiện mà sẽ để mở cho các bạn tự phát triển, hoàn thiện ứng dụng.

Tiếp theo, trong thư mục models các bạn tạo một file tên là user.php để viết các hàm tương tác với DB (Tôi gọi là model. Tôi sẽ giải thích ở các phần sau).

Nội dung file models/user.php như sau:

<?php
function get_user_by_username($username){
//SQL
$sql = “SELECT * FROM tbl_user WHERE username = ‘$username’ AND status = 1”;

//Query
$query = mysql_query($sql);

//Fetch và return
return mysql_fetch_assoc($query);
}
?>

File admin/user/login.php ở trên chỉ mới là file xử lý, trang đăng nhập còn cần phải có giao diện (Tôi gọi là view). Về giao diện HTML tôi chỉ trình bày đơn giản và cũng không giải thích về mã lệnh HTML.

Trong thư mục views/admin, các bạn tạo mới một thư mục tên là user để chứa các file trình bày giao diện HTML.

Trong thư mục views/admin/user, tạo mới file login.tpl.php (Tên file này tôi thêm “.tpl” để dễ phân biệt với file xử lý login.php) để trình bày giao diện trang đăng nhập.

Nội dung file views/admin/user/login.tpl.php như sau:

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Quản trị – Đăng nhập</title>
</head>
<body>

<form name=”login” method=”POST” action=””>
<?php if(isset($error) && $error == true): ?>
<p style=”color:red;”>Sai Tài khoản hoặc Mật khẩu!</p>
<?php endif; ?>

<p>
<label>Tài khoản:</label>
<input type=”text” name=”username” value=”” />
</p>
<p>
<label>Mật khẩu:</label>
<input type=”password” name=”password” value=”” />
</p>
<p>
<input type=”submit” value=”Đăng nhập” />
</p>
</form>

</body>
</html>

Bây giờ các bạn vào phpMyAdmin để thêm mới một dòng dữ liệu vào bảng tbl_user với các thông tin như: Tài khoản, mật khẩu (Mã hóa MD5), kích hoạt (Nhập giá trị là 1)… rồi bắt đầu truy cập trang đăng nhập theo địa chỉ http://localhost/admin/user/login.php để kiểm tra.

Đối với trang đăng xuất, trong thư mục admin/user các bạn tạo một file tên là logout.php để xử lý đăng xuất.

Nội dung file admin/user/logout.php như sau:

<?php
//Khởi động session
session_start();

//Hủy toàn bộ session
session_destroy();

//Quay về trang đăng nhập
header(‘location:login.php’);
?>

Trang đăng xuất không có giao diện hay truy cập DB nên mã lệnh chỉ đơn giản như vậy.

* Session:

Session dùng để lưu thông tin mà người lập trình muốn lưu giữ (Hoặc truyền qua trang khác) để có thể sử dụng ở mọi file PHP của ứng dụng. Nếu các bạn chỉ lưu thông tin và sử dụng duy nhất ở một file PHP nào đó thì tôi khuyên các bạn nên sử dụng biến thay vì sử dụng session.

File admin/user/login.php, tôi có khai báo hàm session_start với mục đích khởi động session. Các bạn lưu ý là cần phải khởi động session trước khi sử dụng.

Để tạo ra một session các bạn sử dụng biến $_SESSION do PHP cung cấp. $_SESSION là một biến kiểu mãng nên các bạn sẽ sử dụng như một mảng (Sẽ trình bày ở các phần sau). Các bạn có thể tạo ra một session theo mẫu sau:

$_SESSION[‘Tên_session’] = ‘Giá_trị_của_session’;

Ví dụ:

$_SESSION[‘a’] = 1;
$_SESSION[‘b’] = ‘Hello’;

Để sử dụng session đã khởi tạo, các bạn sử dụng theo mẫu sau:

$_SESSION[‘Tên_session’];

Các bạn có thể tìm hiểu thêm về session ở liên kết http://php.net/manual/en/book.session.php.

* Câu lệnh điều kiện (Cấu trúc điều khiển):

Câu lệnh IF..ELSE:

if(Điều_kiện){
//Khối lệnh thỏa điều kiện
}

Hoặc

if(Điều_kiện){
//Khối lệnh thỏa điều kiện
}else{
//Khối lệnh không thỏa điều kiện
}

Hoặc

if(Điều_kiện_1){
//Khối lệnh thỏa điều kiện 1
}elseif(Điều_kiện_2){
//Khối lệnh không thỏa điều kiện 1 nhưng thỏa điều kiện 2
}else{
//Khối lệnh không thỏa điều kiện 1, 2
}

Các bạn có thể tham khảo các ví dụ sau:

Ví dụ 1:

if(1 == 1){
echo ‘1 = 1’;
}

Ví dụ 2:

if(1 > 2){
echo ‘1 > 2’;
}else{
echo ‘1 < 2’;
}

Ở ví dụ 1, câu lệnh “echo ‘1 = 1′” sẽ được thực hiện và in ra màn hình dòng “1 = 1”. Ví dụ 2, câu lệnh “echo ‘1 < 2′” sẽ được thực hiện và in ra màn hình dòng “1 < 2”.

Trong PHP, để in ra một nội dung nào đó các bạn sử dụng câu lệnh “echo” như trên.

Các bạn có thể tìm hiểu thêm về câu lệnh điều kiện ở liên kết http://php.net/manual/en/control-structures.if.php.

Câu lệnh SWITCH..CASE:

switch(Giá_trị_đem_so_sánh){
case Giá_trị_so_sánh_1:
//Khối lệnh thỏa giá trị so sánh 1
break;
case Giá_trị_so_sánh_2:
//Khối lệnh thỏa giá trị so sánh 2
break;
default:
//Khối lệnh không thỏa giá trị so sánh nào ở trên
}

Về SWITCH..CASE tôi không giải thích nhiều, các bạn có thể tìm hiểu thêm ở liên kết http://php.net/manual/en/control-structures.switch.php.

* Toán tử:

Ngoài toán tử gán “=” hôm trước tôi đã nêu thì phần này tôi sẽ trình bày cho các bạn một số toán tử khác (Toán tử so sánh, toán tử toán học, toán tử “and”, “or”).

Toán tử so sánh gồm:

– Bằng (Về giá trị): ==
– Bằng (Về mọi thứ): ===
– Khác (Không bằng về giá trị): !=
– Khác (Không bằng về mọi thứ): !==
– Lớn hơn: >
– Lớn hơn hoặc bằng: >=
– Nhỏ hơn: <
– Nhỏ hơn hoặc bằng: <=
– Phủ định: !

Toán tử toán học gồm:

– Cộng: +
– Trừ: – – Nhân: *
– Chia: /
– Phần dư: %

Ngoài ra, có hai toán tử quan trọng là:

– Toán tử và (and): &&
– Toán tử hoặc (or): ||

Các bạn có thể tìm hiểu thêm về toán tử ở liên kết http://php.net/manual/en/language.operators.php.

Tác giả: Lê Trung Hiếu

Viết một bình luận