Возможный дубликат:
Недопустимые ключевые символы CodeIgniter
Недавно я обновил CI с 1,7 до 2,0. Там, после того как я начал получать CI
Запрещенные Ключевые персонажи
ошибка.
Затем я разрешил принимать все символы, чтобы увидеть, исчезнет ли ошибка.
$config['permitted_uri_chars'] = '';
Однако это ничего не меняло
Я также включил строки запроса
$config['enable_query_strings'] = TRUE;
Я просто не знаю, почему я получаю ошибку с запрещенными символами, когда я разрешаю принимать все символы.
Вот пример URL-адреса, где я получаю ошибку с запрещенными ключевыми символами:
http://localhost/myapp/index.php??c=user&m=login
Однако, если бы я удалил один из «?» оно работает
http://localhost/myapp/index.php?c=user&m=login
У меня есть файл htaccess, который содержит:
RewriteEngine on RewriteRule (.*)/index.php $1/ [L]
любая помощь?
Похоже, CodeIgniter делает отдельную проверку для GET / POST / и имен ключей файлов cookie, где он проверяет их:
/^[a-z0-9:_\/-]+$/i
См .: https://bitbucket.org/ellislab/codeigniter/src/c2dad3edb148/system/core/Input.php#cl-537
Я не вижу простого способа отключить эту проверку, кроме редактирования / подкласса Input.php. Вы, вероятно, лучше использовать ключи без странных символов.
Как указано в комментариях к коду, то, что вы делаете, не приветствуется
| As a security measure you are STRONGLY encouraged to restrict URLs to | as few characters as possible. By default only these are allowed: az 0-9~%.:_- | | Leave blank to allow all characters -- but only if you are insane. | | DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
Тем не менее, возможным решением может стать очистка вашего кеша и, в частности, ваших файлов cookie , как вы можете видеть, например, в этом разделе на CI Forum (и, в меньшей степени, на других ресурсах, которые вы просто получаете в Google)
EDIT: после публикации я увидел, что вы отредактировали свой вопрос и добавили важные детали. Как было предложено другим пользователем, вам нужно проверить класс ввода, чтобы взломать, как codeigniter реализует свою собственную обработку POST и GET.
Особенно, я ищу function _clean_input_keys($str)
в библиотеке / input.php и меняю Regex там