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

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

  • 字号:
  作者:JeffJing   发布:2011-05-30 08:05   围观:16,903 views   1条评论  

    一个很有用的函数, set_error_handler() 顾名思义,自定义错误的处理。很有用的函数:

  1. 可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。
  2. 可以记下错误的信息, 及时发现一些生产环境的出现的问题。
  3. 可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。 
  4. 可以作为调试工具, 一些时候必须在生产环境调试一些东西, 但又不想影响正在使用的用户。
  5. 。。。。
    废话不多说, 上代码:

01<?php
02//屏蔽程序中的错误
03error_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 */
15function 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()
55set_error_handler ('error_handler');
56 
57#使用未定义的变量要报 notice 的
58echo $novar;
59#除以0要报警告的
60echo 3/0;
61#自定义一个错误
62trigger_error ('Trigger a fatal error', E_USER_ERROR);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值