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加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
Jun 20 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
php简单的上传类分享
May 15 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
laravel Model 执行事务的实现
Oct 10 PHP
通过代码实例解析PHP session工作原理
Dec 11 PHP
php 原生分页
Apr 01 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
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
php下MYSQL limit的优化
2008/01/10 PHP
PHP学习之正则表达式
2011/04/17 PHP
简单JS代码压缩器
2006/10/12 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
python 解压pkl文件的方法
2018/10/25 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
金属材料工程个人求职的自我评价
2013/12/04 职场文书
采购部主管岗位职责
2014/01/01 职场文书
矫正人员思想汇报
2014/01/08 职场文书
大学新生军训感言
2014/02/25 职场文书
开业主持词
2014/03/21 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
2014全年工作总结
2014/11/27 职场文书
2014小学年度工作总结
2014/12/20 职场文书
思想政治表现评语
2015/01/04 职场文书
党员公开承诺书2015
2015/01/21 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript