Недопустимое сообщение об ошибках клавиш в Codeigniter (v2)

Я недавно столкнулся с этой ошибкой в ​​пользовательских cms, которые я создаю – эта ошибка появляется, когда я отправляю форму, которая использует мультиселекцию. Может ли кто-нибудь предложить наиболее распространенные причины этой ошибки.

ok – я думаю, что это могут быть массивы с несколькими выборами, вызывающие проблему, например, у меня есть такой массив в таблице.

hotels[url][] hotels[text][] hotels[url][] 

Не разрешено ли это в $ _POST?

Возможно, вы отправляете свою форму с помощью GET вместо POST. Multi-selects обычно используют нотацию массива (myarray []), которые являются символами, которые обычно не разрешены CodeIgniter в URL-адресе.

Если вы уверены, что используете POST, я бы предложил проверить две вещи:

  1. Убедитесь, что если вы используете защиту CSRF от CodeIgniter, вы отправляете действительный токен с формой. Вы можете проверить, является ли это проблемой, отключив защиту CSRF и попытавшись отправить форму. Защита CSRF обычно включается в файле config.php через переменную $ config ['csrf_protection']. Более подробную информацию о защите CSRF от CodeIgniter можно найти здесь .
  2. Дважды проверьте URL-адрес, который вы используете, чтобы отправить форму, чтобы убедиться, что у нее нет символов, которые не разрешены в вашей $ config ['allowed_uri_characters'] в application / config / config.php.

Если вы посмотрите в файле config.php внутри папки application / config, вы найдете эту строку:

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

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

удалите запятые из ваших имен ввода. Например: имя ['type'] неверно. Это должно быть имя [type]

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

Я добавляю | (трубы) в примере выше