Как изменить ошибку, отображаемую в codeigniter

The URI you submitted has disallowed characters.

Как перехватить эту ошибку? Является ли их функцией callback_ ? Эта ошибка возникает, когда я пытаюсь использовать a = в URL. Например, я ставлю 1 = 1 – я получаю эту ошибку. Вместо страницы с ошибкой я хочу redirect('main/cate/page');

Как я могу поймать эту ошибку и перенаправить вместо отображения «Ошибка была обнаружена страница»

Похоже, что ошибка system/core/URI.php в system/core/URI.php . К счастью, вы можете расширить основные классы . Создайте файл в application/core MY_URI.php и переопределите функцию:

 class MY_URI extends CI_URI{ function __construct(){ parent::__construct(); } function _filter_uri($str){ if ($str != '' && $this->config->item('permitted_uri_chars') != '' && $this->config->item('enable_query_strings') == FALSE) { // preg_quote() in PHP 5.3 escapes -, so the str_replace() and addition of - to preg_quote() is to maintain backwards // compatibility as many are unaware of how characters in the permitted_uri_chars will be parsed as a regex pattern if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", $str)) { redirect('main/cate/page'); } } // Convert programatic characters to entities $bad = array('$', '(', ')', '%28', '%29'); $good = array('$', '(', ')', '(', ')'); return str_replace($bad, $good, $str); } } 

Вам необходимо расширить файл 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); } } 

ПРИМЕЧАНИЕ. Это касается основного вопроса – «как изменить ошибку, отображаемую в кодеигниторе». Там, возможно, более конкретные переопределения для этой конкретной ошибки.