您的位置:首页 > 其它

set_error_handler() 顾名思义,自定义错误的处理

2017-01-09 11:24 351 查看
  一个很有用的函数, set_error_handler() 顾名思义,自定义错误的处理。很有用的函数:

可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。

可以记下错误的信息, 及时发现一些生产环境的出现的问题。

可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。 

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

。。。。

    废话不多说, 上代码:

view sourceprint?

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
 
=
'Fatal
Error'
;
36
            
$EXIT
 
=TRUE;
37
            
break
;
38
        
 
39
        
//其他未知错误
40
        
default
:
41
            
$error_type
 
=
'Unknown'
;
42
            
$EXIT
 
=TRUE;
43
            
break
;
44
    
}
45
    
//直接打印错误信息,
也可以写文件, 写数据库, 反正错误信息都在这, 任你发落
46
    
printf
(
"<font
color='#ff0000'><b>%s</b></font>: %s in <b>%s</b> on line <b>%d</b><br /><br />\n"
,
$error_type
,
$error_message
,
 
$file
,
$line
);
47
    
 
48
    
//错误影响到程序的正常执行的话跳转到友好的错误提示页面
49
    
if
 
(TRUE
==
$EXIT
)
{
50
        
echo
 
"<script
language='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
(
'Trigger
a fatal error'
,E_USER_ERROR);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: