2

我想确定 CodeIgniter 是否 100% 支持这种行为。

我怀疑config.phppermitted_uri_chars是,如下:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

它说只允许使用英文字符。但请考虑以下网址的结果:

  • http://localhost/codeigniter/index.php/controller/method/hell0-there+++

结果:The URI you submitted has disallowed characters.

  • http://localhost/codeigniter/index.php/controller/method/hello-سلام

结果:没问题!!!

这个词سلام(在波斯语中,意思是“你好”)不能被模式接受'a-z 0-9~%.:_\-',但它不会像前面的例子那样出错!

为什么会发生这种行为?

现在下一个问题:是否需要在模式中添加和包含波斯字符?

我正在考虑将其更改config.php为这样:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

// Add all the persian characters after standard pattern:
$config['permitted_uri_chars'] .= 'آابپتثجچحخدذرزسشصضطظعغفقکگلمنوهیي‌۱۲۳۴۵۶۷۸۹۰';
4

3 回答 3

2

非 ASCII 字符应该是 URLEncoded 将它们转换为%F3等。我相信基于%a-z 0-9

于 2012-02-20T21:31:49.513 回答
1

以这种方式使用它,更改配置文件:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-|آ-ی';

通过这种方式,它支持除“Hamze”之外的所有字符。如果你想支持“Hamze”,你可以这样改变它:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-|آ-یء';
于 2015-02-20T07:28:58.153 回答
1

我刚刚阅读了您的问题,它有一个我已经达到的简单答案!答案是 :

$route[urlencode ('ورود-به-حساب-کاربری')] = 'Login';

你不需要像你说的那样操作你的配置文件!所以你只需要将这行代码也设置到你route.php的。这个对我有用。

于 2016-11-23T22:58:45.313 回答