CodeIgniter Запрещенные Ключевые Символы - PullRequest
31 голосов
/ 16 ноября 2010

CodeIgniter выдаёт мне ошибку Disallowed Key Characters.Я сократил его до атрибута имени поля формы: name='prod[50-4121.5]', но я не уверен, что с этим делать.

Ответы [ 20 ]

2 голосов
/ 10 сентября 2013

У меня была такая же ошибка после того, как я отправил свою форму.Я просто пропустил начальную цитату в одном из моих атрибутов входного имени.Я имел:

<input name=first_name">

Исправление, которое избавило от ошибки.

1 голос
/ 13 июля 2015

У меня была эта проблема, но моя проблема заключалась в том, что я по ошибке добавил пробел перед именем ввода следующим образом:

<input type="text" name=" evening_time_phone">

Когда это будет выглядеть так:

1 голос
/ 13 апреля 2015

Я увидел эту ошибку, когда пытался отправить форму, и в одном из имен полей я пропустил слово "endereço".

echo form_input(array('class' => 'form-control', 'name' => 'endereco', 'placeholder' => 'Endereço', 'value' => set_value('endereco')));

Когда я изменил 'ç' для 'c ', ошибка исчезла.

1 голос
/ 15 июля 2014

Потребовалось время, чтобы понять это. Кажется, что большинство из нас пропустили очевидную ошибку ... последний «-» не избежал.

Добавление. и | как я уже видел, другие предложения могут работать для вас, но регулярное выражение должно было быть:

if ( ! preg_match("/^[a-z0-9:_\/\-\.|]+$/i", $str))  
1 голос
/ 10 февраля 2014

В Ubuntu вы можете решить проблему, очистив куки вашего браузера. У меня была такая же проблема, и я решил ее таким образом.

1 голос
/ 26 марта 2013

В моем случае я сериализировал форму ввода с помощью jquery serialize (), а затем кодировал ее с помощью encodeURIComponent ().

var datas = form.serialize();
encodeURIComponent(datas);
$.getJSON(url,datas,function(){});

и codeigniter выдавал недопустимую ошибку символа.

Я подумал, что проблема здесь в том, что jquery serialize дает закодированный вывод, и я снова кодировал его с помощью codedeURIcomponent, который был ненужным, и когда codeingiter декодировал его, он не получал фактическую строку, поскольку некоторая часть была закодирована дважды. я объясню это на примере.

string: quantity[]=1&option=sell

urlencoded while serializing: quantity%5B%5D%3D1%26option%3Dsell

again urlencoded with encodedURICompontent(): quantity%255B%255D%253D1%2526option%253Dsell

--- на коде

urldecode: quantity%5B%5D=1&option=sell

, который запрещает использование символов согласно регулярному выражению входного класса.

примечание: это не ответ на этот вопрос, но поможет проверить, не возникает ли кто-то с этой ошибкой ... спасибо.

0 голосов
/ 11 августа 2017

Замените приведенный ниже код в функции _clean_input_keys

    if ( ! preg_match("/^[a-z0-9:_\/-]+$|/i", $str))
    {
        exit('Disallowed Key Characters.\n');
    }
    if (UTF8_ENABLED === TRUE)
    {
        $str = $this->uni->clean_string($str);
    }

    return $str;
0 голосов
/ 01 августа 2016

По моему опыту, это может быть вызвано незавершенным синтаксисом, например:

$('#teks').val

вместо

$('#teks').val()
0 голосов
/ 26 ноября 2015

У меня та же проблема, и я обнаружил, что она находится в доменном имени адреса электронной почты, который каким-то образом изменен с . на _, например: name@domain_com вместо name@domain.com

0 голосов
/ 17 ноября 2010

Ошибка, на которую я ссылался, была сгенерирована в system / library / Input.php (около строки 215 - найдите функцию _clean_input_keys ($ str).

Регулярное выражение там не учитывает символ точки в индексе. Я изменил это так, что это будет.

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