2017-02-06 1 views
2

Я видел несколько других вопросов, подобных этому, но я не могу найти решение моей конкретной проблемы.Codeigniter - URI Запрещенные символы

Я получаю ошибку The URI you submitted has disallowed characters. Когда я отправить следующий запрос:

http://myrul/login/createNewPassword/reset_token/pwd70xkainz500d57311rli/username/contact%40email.com 

Теперь я определил, что % в моем username является то, что запуск ошибки, но у меня есть, что позволило в моем файле конфигурации.

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

Я, хотя это должно позволить % быть разрешены в URL. Если я настрою конфигурацию как

$config['permitted_uri_chars'] = ''; 

Работает нормально. Неверна ли строка конфигурации? Или есть еще одна вариация строки, которую я должен использовать?

+0

Дефрагментация URL, похоже, происходит до того, как отменена проверка символа, что означает, что CI проверяет '@', а не '% 40'. Просто добавьте '@' к разрешенным символам или измените URL-адрес, чтобы вместо этого использовать адрес электронной почты в качестве параметра GET. – SolarBear

+0

@ SolarBear Работал. Благодарю. – bos570

ответ

1

contact%40email.com есть фактически контакт@email.com, но urlencoded.

Таким образом, запрещенный персонаж, который вы отправляете, является @, а не %.

Если вы добавите «@» на свой permitted_uri_chars, вы должны быть в порядке.

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

Ну, я не отправляю @ в URL. Весь смысл отправлять его как '% 40', так что' @ 'никогда не видел. – bos570

+0

не имеет значения, что не «видно». веб-сервер видит это. 'urldecode' происходит до проверки правильности URL. поэтому вы ** ** отправляете символ «@». :) – yivi

+0

Хорошо, я думаю, что отбросил меня, мой локальный сервер XAMPP обрабатывает его иначе, чем мой живой сервер. Так оно работало на моей местной, но не живой среде. Благодарю. – bos570

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