如何更改codeigniter中显示的错误

时间:2012-09-27 00:28:55

标签: php codeigniter

The URI you submitted has disallowed characters.

如何拦截此错误?他们是callback_函数吗?当我尝试在URL中使用=时,会发生此错误。例如。我把1 = 1 - 我得到这个错误。而不是我想要的错误页面redirect('main/cate/page');

如何捕获此错误并重定向,而不是显示“遇到错误页面”

2 个答案:

答案 0 :(得分:5)

看起来system/core/URI.php中出现了错误。幸运的是,你可以extend core classes。在名为application/core的{​​{1}}中创建一个文件并覆盖该函数:

MY_URI.php

答案 1 :(得分:1)

您需要扩展CI_Exceptions文件。这篇论坛帖子提供了有关异常和错误处理的很好的信息。

http://codeigniter.com/forums/viewthread/67096/

与此覆盖相似的内容应允许您根据错误代码重定向:

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
class OOR_Exceptions extends CI_Exceptions
{
    public function show_error($heading, $message, $template = '', $status_code = 500)
    {
        $ci =& get_instance();
        if (!$page = $ci->uri->uri_string()) {
            $page = 'home';
        }
        switch($status_code) {
            case 403: $heading = 'Access Forbidden'; break;
            case 404: $heading = 'Page Not Found'; break;
            case 503: $heading = 'Undergoing Maintenance'; break;
        }
        log_message('error', $status_code . ' ' . $heading . ' --> '. $page);
        if ($status_code == 404) 
        {
            redirect('/mypage');
        }
        return parent::show_error($heading, $message, 'error_general', $status_code);
    }
}

注意:这包括基本问题 - “如何更改codeigniter中显示的错误”。对于这个特定的错误,可能有更具体的覆盖。