TRANG THÊM MỚI THÀNH VIÊN (PHẦN 6)
Nội dung kiến thức phần này gồm:
- Xử lý lỗi (Error handling).
Trong thư mục admin/user, tạo mới file add{dot}php để viết mã lệnh trang thêm mới thành viên.
Nội dung file admin/user/add{dot}php như sau:
PHP Code:
<?php
//Khởi động session
session_start();
//Kiểm tra nếu chưa đăng nhập thì quay về trang đăng nhập
if(!isset($_SESSION***91;'user'***93;)){
header('location:login{dot}php');
}
//Require các file cần thiết
require '../../configs/Config{dot}php';
require '../../models/User{dot}php';
//Nếu có POST dữ liệu lên thì xử lý
if($_POST){
//Nhận dữ liệu từ form và gán vào một mãng (Có thể sử dụng UserObj để lưu dữ liệu)
$data = array(
'username' => $_POST***91;'username'***93;,
'password' => md5($_POST***91;'password'***93;),
'fullname' => $_POST***91;'fullname'***93;,
'email' => $_POST***91;'email'***93;,
'status' => isset($_POST***91;'status'***93;) ? 1 : 0,
'created' => date('Y-m-d H:i:s'),
'modified' => date('Y-m-d H:i:s')
);
//Khởi tạo đối tượng thành viên (User)
$userModel = new User();
//Thêm mới
if($userModel->add($data)){
//Tạo session để lưu cờ thông báo thành công
$_SESSION***91;'success'***93; = true;
//Tải lại trang (Mục đích là để reset form)
header('location:add{dot}php');
//Ngừng thực thi
exit();
}
}
//Tiêu đề trang
$title = 'Thành viên - Thêm mới';
//View
$view = 'user/add{dot}tpl{dot}php';
//Require layout
require '../../views/admin/layout{dot}tpl{dot}php';
?>
Mở file models/User{dot}php và thêm vào lớp User khối lệnh mới dưới đây:
PHP Code:
public function add($data){
//SQL
$sql = "INSERT INTO tbl_user(username, password, fullname, email, status, created, modified) VALUES('{$data***91;'username'***93;}', '{$data***91;'password'***93;}', '{$data***91;'fullname'***93;}', '{$data***91;'email'***93;}', {$data***91;'status'***93;}, '{$data***91;'created'***93;}', '{$data***91;'modified'***93;}')";
//Query và return
return $this->db->query($sql);
}
Trong thư mục views/admin/user, tạo mới file add{dot}tpl{dot}php để trình bày giao diện trang thêm mới thành viên.
Nội dung file views/admin/user/add{dot}tpl{dot}php như sau:
Code:
<form name="add" method="POST" action="">
<?php if(isset($_SESSION['success'])): ?>
<p style="color:green;">Thành viên đã được thêm mới thành công!</p>
<?php unset($_SESSION['success']); ?>
<?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>
<label>Họ tên:</label>
<input type="text" name="fullname" value="" />
</p>
<p>
<label>Email:</label>
<input type="text" name="email" value="" />
</p>
<p>
<label>Trạng thái:</label>
<input type="checkbox" name="status" value="1" />
</p>
<p>
<input type="submit" value="Thêm mới" />
</p>
</form>
Các bạn truy cập trang thêm mới thành viên theo địa chỉ localhost/admin/user/add{dot}php để kiểm tra.
* Xử lý lỗi (Error handling):
Xử lý lỗi là quá trình bắt lỗi chương trình (Khối lệnh) do người lập trình viết với mục đích thực hiện những hành động (Hoặc thông báo) tương ứng với lỗi để chương trình không thực thi sai mục đích.
Việc xử lý lỗi trong PHP khá đơn giản và các bạn sẽ thường thấy hai cách xử lý lỗi sau đây:
- Sử dụng hàm die.
- Sử dụng trường hợp ngoại lệ (Exceptions).
Hàm die có chức năng kết thúc thực thi khối lệnh. Các lập trình viên thường ít khi sử dụng hàm die vào mục đích bắt lỗi vì thường không đáp ứng được yêu cầu lập trình.
Ví dụ:
PHP Code:
if(!file_exists('path/content{dot}txt')){
die('File not found!');
}else{
unlink('path/content{dot}txt');
}
Trong PHP 5 thì có thêm cách sử lý lỗi chuyên nghiệp hơn đó là dùng ngoại lệ (Exceptions) với cú pháp try..catch. Các bạn có thể sử dụng theo mẫu sau:
try{
//Khối lệnh cần bắt lỗi
}catch(Exception $Biến_exception){
//Xử lý ngoại lệ
}
Ví dụ:
PHP Code:
try{
if(!file_exists('path/content{dot}txt')){
//Nếu không tìm thấy file thì lưu thông báo lỗi và chuyển sang catch
throw new Exception('File not found!');
}
//Nếu tìm thấy file
unlink('path/content{dot}txt');
}catch(Exception $e){
echo $e->getMessage();
}
Các bạn có thể tìm hiểu thêm về xử lý lỗi ngoại lệ ở liên kết php{dot}net/manual/en/language{dot}exceptions{dot}php.
Ngoài ra, trong PHP các bạn có thể tùy biến xuất các thông báo lỗi PHP mà người lập trình không kiểm soát được bằng hàm error_reporting. Các bạn có thể sử dụng hàm error_reporting theo mẫu sau:
error_reporting(Cấp_độ_lỗi);
Ví dụ:
PHP Code:
error_reporting(E_ALL);
error_reporting(0);
Trong đó, câu lệnh đầu với cấp độ "E_ALL" là hiển thị tất cả các thông báo lỗi còn câu lệnh thứ hai thì ngăn chặn tất cả các thông báo lỗi.
Các bạn có thể tìm hiểu thêm về hàm error_reporting ở liên kết php{dot}net/manual/en/function{dot}error-reporting{dot}php.
Bookmarks