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简单封装了一些常用JS操作
Feb 25 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
php 高性能书写
Dec 11 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
PHP文件与目录操作示例
Dec 24 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
php实现微信发红包功能
Jul 13 PHP
php命令行写shell实例详解
Jul 19 PHP
PHP实现简易计算器功能
Aug 28 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递归函数返回值使用方法
2013/02/18 PHP
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
土木工程应届生自荐信
2013/09/24 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
结婚典礼证婚词
2014/01/11 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
财务管理专业求职信
2014/06/11 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
离婚协议书格式
2015/01/26 职场文书
北京故宫导游词
2015/01/31 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript