Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



禁止codeigniter抛出错误

首先说下CodeIgniter 的错误处理
1.CI在引导文件index.php中设置了“执行环境常量 EVIROMENT”,在值为“development”打开php的全部报错。
2.在Common文件中,CI载入了Exception类,该类可以让用户使用show_error等函数主动输出错误。
3.在Common文件,CI定义了_exception_handler来自行处理php错误。
4.在Exceptions.php中,CI还定义了出php 的标准错误级别意外的级别。在log_exception函数中记录这个级别。
在你的程序里使用以下的函数,CodeIgniter将允许你建立自己的错误报告。另外,他有一个错误记录类能够将错误和调试信息保存为文本文档。
注意: 在默认的情况下, CodeIgniter 会显示所有的PHP错误. 但是当你开发程序结束时,你可能想要改变这个情况. 你会发现在index.php文件顶端有这个函数error_reporting(),通过它可以进行对错误的设置。 即使你关闭了错误报告,当有错误发生时,错误记录也不会停止。
不像大多数系统, CodeIgniter的错误报告函数是一个简单的程序接口,可以在整个应用程序里使用。 不用考虑类或者是函数的范围,这种办法可以直接触发错误通知。
可以使用以下函数来产生错误消息:
show_error('消息' [, int $status_code = 500 ] )

这个函数将会使用以下错误模版来显示错误消息:
application/errors/error_general.php
可选参数 $status_code 决定在显示错误的同时将会发送哪种 HTTP 状态代码。
show_404('页面')


这个函数将会使用以下错误模版来显示 404 错误信息:
application/errors/error_404.php
传递给该函数的字符串代表的是找不到的文件路径。注意CodeIgniter会在找不到目标控制器情况下,自动显示404消息。
log_message('级别', '消息')


这个函数可以让你将消息写入记录文件中。你必须在第一个参数中选择三个“级别“中的任何一个, 指明它是那一类消息(调试 debug, 错误 error, 信息info)。 第二个参数是消息本身。 例如:
if ($some_var == "")
{
    log_message('error', 'Some variable did not contain a value.');
}
else
{
    log_message('debug', 'Some variable was correctly set');
}


log_message('info', 'The purpose of some variable is to provide some value.');
有三种不同类型的消息:
错误类型的消息。 这种是真正的错误消息. 例如PHP错误或者用户错误。
调试类型的消息。 这种是用来帮助调试的消息。 例如, 如果当一个类被初始化时,你可以将这个初始化纪录下来,然后用于调试。
信息类型的消息。 这种是最低优先级别的消息,它只是简单的提供了关于运行的一些信息。 CodeIgniter 不会自动产生任何信息类型的消息,但是你可能会在你的程序里使用它
注意: 确保"logs" 文件夹是可写的,才能准确地将消息写入记录文件中。另外,你必须要设置记录的“threshold“来进行记录。例如通过设置“threshold“,你可以只记录错误类型的消息,而不用记录其他两种。如果你将“threshold“设为0,记录就会被禁止。


================================
  if(!$this->get(‘id’))  
        {  
            $this->response(NULL, 400);  
        }  

错误的请求。



既然知道他们调用的都是模版 那就直接把错误模版文件改成跳转到404页面就好了

把application/views/errors/html目录下的所有页面都改成重定向到404页面的代码

这个是我的404页面从定向代码

<?php
      defined('BASEPATH') OR exit('No direct script access allowed');
      echo $url="http://".$_SERVER['HTTP_HOST']."/404.html";
      header('HTTP/1.1 404 Not Found');
      header("Location:$url");
      exit();
?>

浏览719  评论0  Alex于 2016-6-3 10:55
发言