使用PHP的錯(cuò)誤處理
更新時(shí)間:2006年10月09日 00:00:00 作者:
在web 上所有常見的錯(cuò)誤之一就是無效的鏈接。一旦從其它站點(diǎn)上出現(xiàn)了無效的鏈接,你會重新安排你
的站點(diǎn)。人們會將他們喜歡的站點(diǎn)存成書簽,如果在三個(gè)月后再次訪問時(shí),僅僅發(fā)現(xiàn)的是'404 Not Fount '
時(shí),將不會給他們?nèi)蝿?wù)幫助,告訴他們?nèi)绾螐哪愕恼军c(diǎn)去查找原始的信息。讓我們解決這個(gè)問題,或者至少
給你的用戶一個(gè)友好的幫助,一旦他們遇到'a 404' 錯(cuò)誤時(shí),能夠得到一些痕跡。你可以創(chuàng)建普通的頁面來
報(bào)告在處理你的頁面時(shí)所遇到的所有的錯(cuò)誤。 PHP 與Apache一起可以很自由地讓你創(chuàng)建自已的出錯(cuò)頁面,但是需要重新進(jìn)行配置,并且要編少量的代
碼。先讓我們學(xué)習(xí)配置部分。
Apache的ErrorDocument指示用來指出在出現(xiàn)錯(cuò)誤時(shí)Apache應(yīng)重定向到哪一個(gè)文檔(或URI)。它允許你
為每一個(gè)你的用戶可能遇到的錯(cuò)誤代碼指定一個(gè)資源。通過在你的服務(wù)器配置中增加一個(gè)ErrorDocument 404
/error.php指示。這個(gè)將在用戶訪問一個(gè)不存在的頁面時(shí),重定向到'error.php'中,下面我們就會寫出
'error.php'頁面。不要忘了重新啟動(dòng)Apache以使改動(dòng)生效。
接著,我們寫出一個(gè)簡單的error.php:
你所請求的文件 (<?=$REDIRECT_URL?>) 在這個(gè)服務(wù)器上不存在。
請查找你想要的文件從 <A HREF="/">前頁</A>。
現(xiàn)在試著讀取一個(gè)在你服務(wù)器上不存在的頁面,怎么樣,你可以看到error.php了,它有著一個(gè)良好和
友好的消息,并且還有一個(gè)到前頁的鏈接。
讓我們把它擴(kuò)展一下。正如你所見,我在error.php中使用了REDIRECT_URL變量。這個(gè)變量是Apache在
執(zhí)行了一個(gè)ErrorDocument指示時(shí)所設(shè)置的,并且給出了一種可能來找到原始的資源。在這種情況下,Apache
還設(shè)置了一些別的變量,所有的變量可以在這里找到。使用這些變量可能創(chuàng)建一個(gè)很好的出錯(cuò)頁面,用于給
用戶一個(gè)不錯(cuò)與友好的出錯(cuò)頁面,而代替Apache給出的缺省頁面。
從PHP頁面中輸出錯(cuò)誤
從一個(gè)PHP頁面輸出錯(cuò)誤與模擬Apache對ErrorDocument指示所做的很象,你只要簡單地將用戶重定向,
通過使用query-string變量,而Apache則通常是設(shè)置在環(huán)境變量里面。這樣就可以使用同一個(gè)出錯(cuò)頁面來處
理各種錯(cuò)誤。下面是一個(gè)例子:
----------------------------------------------------------------------
<?php
function throw_error($message) {
$error_page = "/err/error.php";
$error_url = $error_page;
$error_url .= "?REDIRECT_ERROR_NOTES=$message";
$error_url .= "&REDIRECT_URL=" . $GLOBALS["PHP_SELF"];
$error_url .= "&REDIRECT_REQUEST_METHOD=$REQUEST_METHOD";
$error_url .= "&REDIRECT_STATUS=501";
Header("Status: 501");
Header("Location: $error_url");
exit;
}
ob_start();
// 使用輸出緩沖以便在這頁中的任何地方輸出錯(cuò)誤
if(!condition) {
throw_error("the condition failed");
}
ob_end_flush();
// 頁面處理完畢,刷新輸出緩沖
?>------------------------------------------------------------------
使用PHP4的輸出緩沖特性對生成一般的出錯(cuò)報(bào)告功能也會有幫助。但是在你確認(rèn)整個(gè)出錯(cuò)頁面處理完畢
時(shí),不要忘記刷新緩沖區(qū),你可以在你的代碼中的任可地方通過Header調(diào)用來進(jìn)行重定向。
讀者可以自行設(shè)計(jì),實(shí)現(xiàn)自已的出錯(cuò)頁面來適應(yīng)他/她的站點(diǎn)。不要忘了,你可以包含一個(gè)帶email的提
交表單在出錯(cuò)頁面中,這樣用戶可以反饋給你一些意見。
相關(guān)文章
PHP函數(shù)之日期時(shí)間函數(shù)date()使用詳解
date()函數(shù)是我們在php開發(fā)中常碰到并且會使用到的一個(gè)日期函數(shù),下面我來給大家介紹date()函數(shù)的一些基本扮靚和方法,有需要了解的朋友可進(jìn)入?yún)⒖?/div> 2013-09-09不用數(shù)據(jù)庫的多用戶文件自由上傳投票系統(tǒng)(3)
不用數(shù)據(jù)庫的多用戶文件自由上傳投票系統(tǒng)(3)...2006-10-10php中將指針移動(dòng)到數(shù)據(jù)集初始位置的實(shí)現(xiàn)代碼[mysql_data_seek]
在php中我們要返回?cái)?shù)據(jù)集初始位置mysql_data_seek函數(shù)即可實(shí)現(xiàn),下面看代碼2012-11-11一個(gè)查看session內(nèi)容的函數(shù)
這篇文章主要給大家介紹了一個(gè)查看session內(nèi)容的函數(shù),需要的朋友可以參考下2006-10-10建立動(dòng)態(tài)的WML站點(diǎn)(一)
建立動(dòng)態(tài)的WML站點(diǎn)(一)...2006-10-10最新評論