2008-12-08 3 views
11

У меня есть проект воспламенения кода, и я хотел попробовать отладить его с помощью Zend Studio. Когда я начинаю отлаживать, я сразу же запускаю inoURI, который вы отправили, имеет запрещенные символы

«Представленный вами URI имеет запрещенные символы».

У кого-нибудь есть идеи?

+0

Из любопытства кто-нибудь знает, соответствуют ли разрешенные символы спецификации URI? Очевидно, что отказ от "?" значит, это не так, а что касается других. Это, по-видимому, еще один пример системы, которая не может правильно реализовать основы (функциональность на основе RFC). – 2008-12-08 06:12:03

+0

Я проверил, и PHP НЕ соответствует спецификации URL/URI. – 2008-12-17 01:22:51

+2

Мы обновили наш сервер до PHP 5.3 и несколько раз сталкивались с этой проблемой из-за старых установок Codeigniter. Вы можете попробовать эту ссылку: http://riskianawulan.net/2010/11/fixed-the-uri-you-submitted-has-disallowed-characters-error-codeigniter/ – felix 2012-04-16 19:24:13

ответ

26

(Предполагая, что вы используете последнюю версию CodeIgniter (CI), который является 1.7.0)

CI довольно строги о том, что персонажи это позволяет в URL. Вы можете изменить регулярное выражение, которое используется для фильтрации URL-адресов.

В системе/Config/config.php на линии 126 является

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

Комментарий выше этой линии в значительной степени объясняет все это, и то, что дозорный значение для использования в чрезмерной езды этого фильтра и разрешить все символы (т.е. полностью отключить фильтрацию).

На стороне примечание, я нашел, что CI слишком ограничительный (для одного он не разрешает запросы GET и хочет, чтобы все взаимодействия происходили через POST. Я нахожу это абсолютно сумасшедшим и сродни тому, чтобы бросить ребенка с помощью ванна, видимо, я не единственный, кто считает, что CI чрезмерно ограничительный, проект Kohana является развилкой оптимизации CI +, а именно чистой поддержкой php5 (все OO), (CI по-прежнему совместим с PHP4 за счет отсутствия будучи в состоянии воспользоваться возможностями PHP5 OO).

Я предпочитаю Кохана над CI, YMMV

http://kohanaphp.com/home

6

При использовании старой версии CodeIgniter и PHP 5.4 вы должны изменить

if (! preg_match("|^[" . preg_quote($this->config->item('permitted_uri_chars')) . "]+$|i", $str)) { 

в

if (FALSE === preg_match("|^[" . preg_quote($this->config->item('permitted_uri_chars')) . "]+$|i", $str)) { 

в /system/libraries/URI.php

2

в Expression двигателя вы найти это в /admin/expressionengine/config/config.php

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

изменить на

$config['permitted_uri_chars'] = ''; 

, но прочитайте комментарий линии перед тем, как это сделать.

Или не используйте ничего на основе CI.

Смежные вопросы