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中的array数组类型分析说明
Jul 27 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
一个PHP并发访问实例代码
Sep 06 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
php验证手机号码
Nov 11 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
php出租房数据管理及搜索页面
May 23 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
javascript中this的四种用法
2015/05/11 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
vue axios用法教程详解
2017/07/23 Javascript
js读取本地文件的实例
2017/12/22 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python中几个比较常见的名词解释
2015/07/04 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
生产车间主任的个人自我鉴定
2013/10/25 职场文书
2013年保送生自荐信格式
2013/11/20 职场文书
歌唱比赛主持词
2014/03/18 职场文书
小学生演讲稿大全
2014/04/25 职场文书
初中英语课后反思
2014/04/25 职场文书
工作分析计划书
2014/04/30 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript