0

我有一个非常简单的路由规则,用于将路由配置文件放入 CodeIgniter 中。

$route['building/(:num)'] = 'building/$1'; 

路由规则工作得很好,没有问题我发现的唯一问题是,当将变量传递给参数时,它会显示此错误消息

An Error Was Encountered

The URI you submitted has disallowed characters.

我知道我的规则告诉 CodeIgniter 只接受数字作为参数,但是如果参数错误,我需要这样做,它必须重定向到另一个定义的页面或 url 而不是显示此错误。
我不知道是否可以通过配置文件来做到这一点,或者我应该写一个控制器来做到这一点
谢谢

4

1 回答 1

0

路由从不清理或错误检查 URI,它们只是为了匹配一个模式。生成错误是因为 URI 中的某些字符在 中的$config['permitted_uri_chars']设置中不存在application/config/config.php,然后由_filter_uri()方法中的 URI 类检查。

在不知道您尝试使用的变量是什么样子的情况下(它显然具有对 URI 不友好的字符),我建议在尝试在您的 URL 中使用它们之前验证和清理这些变量。特别是如果它们是用户生成的。不要相信人。曾经。

您的一些选择包括:

  1. 清理/检查变量的值以查看它是否包含不应出现在 URI 中的字符。默认配置设置几乎是 URI 字符的规范(尽管其他一些字符也是允许的),所以如果可能的话,我会尽量坚持这一点(特别是如果你不知道自己在做什么)。

  2. 更改您的permitted_uri_chars列表以包含其他字符(不推荐,请参阅#1)。

  3. 扩展 URI 类并替换/修改_filter_uri()方法,将show_error()部分替换为重定向或其他代码以满足您的需要。也不是很推荐,因为库不应该控制您的重定向。

于 2013-04-09T19:56:54.003 回答