Не допускается использование символа «@» в URL Codeigniter - PullRequest
1 голос
/ 18 февраля 2012

Я пытаюсь заставить Codeigniter принять символ "@" в URL. Я включил его как один из разрешенных символов ниже:

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

Все же я продолжаю получать его сообщение об ошибке:

Disallowed Key Characters.

Кажется, что все остальные символы работают нормально, за исключением символа "@". Есть идеи?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

Система маршрутизации CodeIgniter преобразует ваш URL, чтобы определить контроллер, действие и параметры в качестве ключей / значений.Он проверяет, имеет ли значение ключа разрешенные символы, и вы можете настроить его с помощью $config['permitted_uri_chars'], но полученное сообщение об ошибке касается самого ключа, а не его значения.$config['permitted_uri_chars'] не поможет вам разрешить символ @ в этом случае.Вы найдете функцию function _clean_input_keys($str), которая проверяет ключи в system / core / input.php.Символ% недопустим, поэтому «% 40» не пройдет:

 if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))

Единственный способ обойти это в вашем случае - избежать использования этого символа (возможно, его перевода) в ключевых параметрах.

0 голосов
/ 18 февраля 2012

Вы добавили правильное экранирование в разрешенную строку uri?

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

Я скопировал это право с одного из моих сайтов CI, и% 40 разрешено.

Пожалуйста, обратитесь к комментарию Пекки выше относительно фактического символа @.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...