PHP出错界面


Posted in PHP onOctober 09, 2006

在web 上所有常见的错误之一就是无效的链接。一旦从其它站点上出现了无效的链接,你会重新安排你
的站点。人们会将他们喜欢的站点存成书签,如果在三个月后再次访问时,仅仅发现的是'404 Not Fount '
时,将不会给他们任务帮助,告诉他们如何从你的站点去查找原始的信息。让我们解决这个问题,或者至少
给你的用户一个友好的帮助,一旦他们遇到'a 404' 错误时,能够得到一些痕迹。你可以创建普通的页面来
报告在处理你的页面时所遇到的所有的错误。

PHP 与Apache一起可以很自由地让你创建自已的出错页面,但是需要重新进行配置,并且要编少量的代
码。先让我们学习配置部分。

Apache的ErrorDocument指示用来指出在出现错误时Apache应重定向到哪一个文档(或URI)。它允许你
为每一个你的用户可能遇到的错误代码指定一个资源。通过在你的服务器配置中增加一个ErrorDocument 404
/error.php指示。这个将在用户访问一个不存在的页面时,重定向到'error.php'中,下面我们就会写出
'error.php'页面。不要忘了重新启动Apache以使改动生效。

接着,我们写出一个简单的error.php:

你所请求的文件 (<?=$REDIRECT_URL?> ) 在这个服务器上不存在。
请查找你想要的文件从 <A HREF="/">前页</A>。

现在试着读取一个在你服务器上不存在的页面,怎么样,你可以看到error.php了,它有着一个良好和
友好的消息,并且还有一个到前页的链接。

让我们把它扩展一下。正如你所见,我在error.php中使用了REDIRECT_URL变量。这个变量是Apache在
执行了一个ErrorDocument指示时所设置的,并且给出了一种可能来找到原始的资源。在这种情况下,Apache
还设置了一些别的变量,所有的变量可以在这里找到。使用这些变量可能创建一个很好的出错页面,用于给
用户一个不错与友好的出错页面,而代替Apache给出的缺省页面。

从PHP页面中输出错误
从一个PHP页面输出错误与模拟Apache对ErrorDocument指示所做的很象,你只要简单地将用户重定向,
通过使用query-string变量,而Apache则通常是设置在环境变量里面。这样就可以使用同一个出错页面来处
理各种错误。下面是一个例子:

<?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();
// 使用输出缓冲以便在这页中的任何地方输出错误

if(!condition) {
throw_error("the condition failed");
}

ob_end_flush();
// 页面处理完毕,刷新输出缓冲
?>
使用PHP4的输出缓冲特性对生成一般的出错报告功能也会有帮助。但是在你确认整个出错页面处理完毕
时,不要忘记刷新缓冲区,你可以在你的代码中的任可地方通过Header调用来进行重定向。 

PHP 相关文章推荐
php Static关键字实用方法
Jun 04 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
PHP操作MySQL事务实例
Nov 05 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
Apr 21 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
Feb 19 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
PHP最常用的正则表达式
Feb 13 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 PHP
ftp类(myftp.php)
Oct 09 #PHP
第1次亲密接触PHP5(2)
Oct 09 #PHP
PHP的FTP学习(一)[转自奥索]
Oct 09 #PHP
一个多文件上传的例子(原创)
Oct 09 #PHP
[FAQ]PHP中的一些常识:类篇
Oct 09 #PHP
Oracle Faq(Oracle的版本)
Oct 09 #PHP
PHP 和 HTML
Oct 09 #PHP
You might like
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
JS 判断代码全收集
2009/04/28 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
python读取和保存视频文件
2018/04/16 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
团员个人的自我评价
2013/12/02 职场文书
农村党支部先进事迹
2014/01/14 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
岗位安全生产责任书
2014/07/28 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
2015年教师节主持词
2015/07/03 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
情感电台广播稿
2015/08/18 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Nginx代理Redis哨兵主从配置的实现
2022/07/15 Servers
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers