Tải bản đầy đủ (.pdf) (7 trang)

Tài liệu Lập trình web với PHP - p39 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (205.99 KB, 7 trang )

 9 : 

Sau khi viết mã lệnh, người mới lập trình sẽ gặp không ít khó khăn trong việc tìm
ra lỗi và chỉnh sửa lỗi. PHP hỗ trợ đầy đủ tính năng lập trình giao diện API (Applications
Programming Interface) có thể tìm ra lỗi và khắc phục những lỗi ấy. Ngoài PHP thì
Apache Web Server cũng hỗ trợ người lập trình tìm ra lỗi và khắc phục lỗi.

Apache có một thư mục Lỗi tài liệu, bạn có thể định cấu hình trong file httpd.conf
để tạo ra những trang thông báo lỗi với PHP, vì thế người thăm trang web không thấy
buồn chán. PHP tạo ra trang web thông báo lỗi thân thiện cho người dùng.
Không giống những trang thông báo lỗi như PHP, trang của Apache được sử dụng
nhiều cho những trang đã mất.


3. Vì lỗi của bạn là do người dùng định nghĩa, bạn có thể bắt lỗi và có thể tạo lại thông
báo lỗi dựa vào kiểu lỗi. Tạo file custom_error.php để sắp xếp những lỗi như sau:
<?php
//create your error handler function
function handler($error_type,
$error_message,
$error_file,
$error_line)
{
switch ($error_type)
{
//fatal error
case E_ERROR:
echo “<h1>Fatal Error</h1>”;
die(“A fatal error has occured at line $error_line of file
“ .
“$error_file.<br>” .


“Error message created was
&quot;$error_message&quot;”);
break;
//warnings
case E_WARNING:
echo “<h1>Warning</h1>”;
echo “A warning has occured at line $error_line of file
“ .
“$error_file.<br>”;
echo “ Error message created was
&quot;$error_message&quot;”;
//notices
case E_NOTICE:
//don’t show notice errors
break;
}
}
//set the error handler to be used
set_error_handler(“handler”);
//set string with “Wrox” spelled wrong
$string_variable = “Worx books are great!”;
//try to use str_replace to replace Worx with Wrox
//this will generate an E_WARNING
//because of wrong parameter count
str_replace(“Worx”, “Wrox”);
?>
4. Lưu file và đưa lên trình duyệt. Kết quả như Hình 9.4. E_ERROR được gọi
trong mệnh đề switch có thể sử dụng bất kỳ loại lỗi nào và thực hiện những hoạt động
khác nhau tùy theo lỗi.


Hình 9.4.
Nó hoạt động thế nào?
Tạo ra thông báo lỗi cho bạn điều khiển đầy đủ những trang web của bạn, bất chấp
thành công hay thất bại khi thi hành. Bạn sẽ bắt lỗi, đưa ra thông báo lỗi, hồ sơ thông báo
lỗi và lỗi nào xuất hiện. Trang web mà bạn đưa ra thông báo lỗi, trình bày hoặc gởi thông
báo nhất định đến người dùng phụ thuộc vào lỗi mà người dùng mắc phải.
Bạn đã tạo ra thông báo lỗi nhưng không muốn người dùng nhìn thấy thông báo
ấy, bạn có thể lịch sự xin lỗi người dùng hãy qua một trang khác vì trang này đang bị lỗi
như thế người dùng không thấy lỗi của mình. Dùng phương pháp email có thể cho người
dùng không trực tiếp xem xét cơ sở dữ liệu mà là có bao nhiêu yêu cầu tới trang lỗi xuất
hiện.

Trong bài này, bạn sẽ thiết lập việc thi hành một lỗi rõ ràng như bạn muốn. Bạn có
thể tìm tất cả những lỗi mà không cần sử dụng những hướng dẫn có sẵn trong PHP
1. Trình soạn thảo feature_error.php như sau:
<?php
//create your error handler function
function handler($error_type,
$error_message,
$error_file,
$error_line) {
switch($error_type)
{
//fatal error
case E_ERROR:
$to = “Administrator <>”;
$subject = “Custom Error Handling”;
$body = “<html>”;
$body .= “<head>”;
$body .= “<title>Website error</title>”;

$body .= “</head>”;
$body .= “<body>”;
$body .= “<h1>Fatal Error</h1>”;
$body .= “Error received was a <b>” . $error_type .
“</b> error.<br>”;
$body .= “The page that generated the error was: <b>” .
$error_file . “</b>”;
$body .= “ and was generated on line: <b>” . $error_line .
“</b><br>”;
$body .= “The generated error message was:” .
$error_message;
$body .= “</body>”;
$body .= “</html>”;
$headers = “MIME-Version: 1.0\r\n”;
$headers .= “Content-type: text/html; charset=iso-8859-
1\r\n”;
$headers .= “From: Apache Error
<>\r\n”;
$headers .= “Cc: \r\n”;
mail($to, $subject, $body, $headers);
die(); //kill the script
break;
//warnings
case E_WARNING:
$to = “Administrator <>”;
$subject = “Custom Error Handling”;
$body = “<html>”;
$body .= “<head>”;
$body .= “<title></title>”;
$body .= “</head>”;

$body .= “<body>”;
$body .= “<h1>Warning</h1>”;
$body .= “Error received was a <b>” . $error_type .
“</b> error.<br>”;
$body .= “The page that generated the error was: <b>” .
$error_file . “</b>”;
$body .= “ and was generated on line: <b>” . $error_line .
“</b><br>”;
$body .= “The generated error message was:” .
$error_message;
$body .= “</body>”;
$body .= “</html>”;
$headers = “MIME-Version: 1.0\r\n”;
$headers .= “Content-type: text/html; charset=iso-8859-
1\r\n”;

×