PHP出錯(cuò)界面
更新時(shí)間:2006年10月09日 00:00:00 作者:
在web 上所有常見的錯(cuò)誤之一就是無效的鏈接。一旦從其它站點(diǎn)上出現(xiàn)了無效的鏈接,你會(huì)重新安排你
的站點(diǎn)。人們會(huì)將他們喜歡的站點(diǎn)存成書簽,如果在三個(gè)月后再次訪問時(shí),僅僅發(fā)現(xiàn)的是'404 Not Fount '
時(shí),將不會(huì)給他們?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'中,下面我們就會(huì)寫出
'error.php'頁面。不要忘了重新啟動(dòng)Apache以使改動(dòng)生效。
接著,我們寫出一個(gè)簡單的error.php:
你所請(qǐng)求的文件 (<?=$REDIRECT_URL?> ) 在這個(gè)服務(wù)器上不存在。
請(qǐng)查找你想要的文件從 <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對(duì)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的輸出緩沖特性對(duì)生成一般的出錯(cuò)報(bào)告功能也會(huì)有幫助。但是在你確認(rèn)整個(gè)出錯(cuò)頁面處理完畢
時(shí),不要忘記刷新緩沖區(qū),你可以在你的代碼中的任可地方通過Header調(diào)用來進(jìn)行重定向。
相關(guān)文章
php中一個(gè)完整表單處理實(shí)現(xiàn)代碼
《PHP5與MySQL5 Web開發(fā)技術(shù)詳解》第5章主要講的是表單——處理用戶輸入,本小節(jié)主要講的是一個(gè)完整表單處理。2011-11-11
php cookis創(chuàng)建實(shí)現(xiàn)代碼
php下創(chuàng)建cookis實(shí)現(xiàn)代碼2009-03-03
使用網(wǎng)絡(luò)地址轉(zhuǎn)換實(shí)現(xiàn)多服務(wù)器負(fù)載均衡
使用網(wǎng)絡(luò)地址轉(zhuǎn)換實(shí)現(xiàn)多服務(wù)器負(fù)載均衡...2006-10-10
PHP registerXPathNamespace()函數(shù)講解
今天小編就為大家分享一篇關(guān)于PHP registerXPathNamespace()函數(shù)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
利用php來自動(dòng)調(diào)用不同服務(wù)器上的flash
利用php來自動(dòng)調(diào)用不同服務(wù)器上的flash...2006-10-10
PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作
PHP_MySQL教程-第二天while循環(huán)與數(shù)據(jù)庫操作...2007-03-03

