2012-02-15 96 views
0

我最近遇到了這個錯誤,我正在構建自定義cms - 當我提交使用多選的表單時出現此錯誤 - 任何人都可以提出最常見的原因對於這個錯誤。Codeigniter(v2)中不允許的關鍵字符錯誤消息

好的 - 我想這可能是造成問題的多選陣列,例如,我有這樣的一個表中的數組..

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

這會不會在$ _ POST允許嗎?

+0

什麼是錯誤,它出現在什麼時候? – 2012-02-15 16:18:55

+2

嗯,最常見的原因是你在你的輸入中有不允許的字符......(我沒有試圖變得聰明,你問了一個原因,原因是..現在發佈代碼,讓我們看看你爲什麼有那些角色在那裏如果他們不被允許有目的) – 2012-02-15 16:20:18

回答

1

這可能是你用GET而不是POST提交表單。多重選擇通常使用數組符號(myarray []),它們是URL中CodeIgniter通常不允許使用的字符。

如果你確信你使用POST,那麼我會建議檢查兩件事情:

  1. 確保如果您使用的是您要提交與形式的有效令牌CodeIgniter的CSRF保護。您可以通過禁用CSRF保護並嘗試提交表單來測試這是否是問題。 CSRF保護通常通過$ config ['csrf_protection']變量在config.php文件中啓用。有關CodeIgniter CSRF保護的更多信息,請參閱here
  2. 仔細檢查您用於提交表單的URL,以確保它沒有任何字符,這些字符在application/config/config.php的$ config ['permitted_uri_characters']中不允許。
+0

我使用POST的形式 – Zabs 2012-02-15 17:16:34

+0

我已經更新了我的答案,包括其他幾種可能性。有時你會因爲CSRF問題而收到消息。 – 2012-02-15 18:35:17

2

如果您在應用程序/ config文件夾裏面的config.php文件看,你會發現這條線:

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

它含有笨允許白名單字符的正則表達式。如果查詢字符串中還有其他內容,則會出現該錯誤。

1

從輸入名稱中刪除逗號。例如:name ['type']是錯誤的。 它應該是名【類型】

0

如果(的preg_match(「/^[A-Z0-9:_/- ] + $ | /我」!,$ STR))

我添加| (管道)字符

相關問題