您的位置:首页 > 编程语言 > PHP开发

PHP用set_error_handler()拦截程序中的错误

2014-03-11 09:32 369 查看

PHP用set_error_handler()拦截程序中的错误

字号:




作者:JeffJing发布:2011-05-3008:05围观:16,903views
1条评论
一个很有用的函数,
set_error_handler()顾名思义,自定义错误的处理。很有用的函数:

可以用来屏蔽错误。出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。二来让用户觉得你的水平很挫。
可以记下错误的信息,及时发现一些生产环境的出现的问题。
可以做相应的处理,出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。

可以作为调试工具,一些时候必须在生产环境调试一些东西,但又不想影响正在使用的用户。
。。。。

废话不多说,上代码:

viewsourceprint?

01
<?php
02
//屏蔽程序中的错误
03
error_reporting
(0);
04
05
//定义Error_Handler函数
06
/**
07
*定义Error_Handler函数
08
*
09
*@param$error_level错误级别
10
*@param$error_message错误信息
11
*@param$file错误所在文件
12
*@param$line错误所在行数
13
*
14
*/
15
function
error_handler(
$error_level
,
$error_message
,
$file
,

$line
){
16
17
$EXIT
=FALSE;
18
19
switch
(
$error_level
){
20
//提醒级别
21
case
E_NOTICE:
22
case
E_USER_NOTICE:
23
$error_type
=
'Notice'
;
24
break
;
25
26
//警告级别
27
case
E_WARNING:
28
case
E_USER_WARNING:
29
$error_type
=
'Warning'
;
30
break
;
31
32
//错误级别
33
case
E_ERROR:
34
case
E_USER_ERROR:
35
$error_type
=
'FatalError'
;
36
$EXIT
=TRUE;
37
break
;
38
39
//其他未知错误
40
default
:
41
$error_type
=
'Unknown'
;
42
$EXIT
=TRUE;
43
break
;
44
}
45
//直接打印错误信息,也可以写文件,写数据库,反正错误信息都在这,任你发落
46
printf(
"<fontcolor='#ff0000'><b>%s</b></font>:%sin<b>%s</b>online<b>%d</b><br/><br/>\n"
,
$error_type
,
$error_message
,

$file
,
$line
);
47
48
//错误影响到程序的正常执行的话跳转到友好的错误提示页面
49
if
(TRUE==
$EXIT
){
50
echo
"<scriptlanguage='Javascript'>location='err.html';</script>"
;
51
}
52
53
}
54
//这个才是关键点,把错误的处理交给error_handler()
55
set_error_handler(
'error_handler'
);
56
57
#使用未定义的变量要报notice的
58
echo
$novar
;
59
#除以0要报警告的
60
echo
3/0;
61
#自定义一个错误
62
trigger_error(
'Triggerafatalerror'
,E_USER_ERROR);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐