2011-11-13 42 views
1

Possible Duplicate:
CodeIgniter Disallowed Key CharactersCodeIgniter中的「禁止密鑰字符」錯誤?

當我檢查所有複選框(下面的代碼)它給了我這個錯誤:

Disallowed Key Character

這裏是我的HTML:

<label>Stability Control </label><input type="checkbox" class="largercheckbox" name="checkBox[Stability-Control]"></input><br/> 
<label>Xenon Headlamps</label><input type="checkbox" class="largercheckbox" name="checkBox[Xenon-Headlamps]"></input><br/> 

這裏有什麼問題嗎?我認爲我的配置文件允許這些字符:

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

我剛剛清理了我的cookies並且工作正常! – Alireza

回答

9

system/core/Input.php中發現的以下函數不允許使用字符。

function _clean_input_keys($str) { 
    if (! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) ... 

這將允許AZ,az或0-9:_ \/-

你應該通過創建一個/application/core/文件MY_Input.php擴展輸入級和重建方法,並添加你想要的任何字符允許。有關如何實現此目的的示例,請參見Creating Core System Classes

但是,你應該小心,因爲你可能會打開不必要的安全漏洞。您最好重寫表單,以便通過現有的驗證。

編輯:This article通過擴展Input類描述了上述問題和解決方案。

已經搜查,以下的職位還證明這是如何實現的解決同樣的問題

+0

沒有表單方法發佈,我不這麼認爲 – osos

+0

道歉,我錯誤地解釋了你的問題,因爲你提到'allowed_uri_chars'這導致我沒有正確地讀取錯誤信息。這來自Input類而不是config.php文件 –

+0

好的,謝謝你的啓發,我知道我必須做什麼 – osos

7

確定這裏就是我的回答

你必須先走系統/核心/ Input.php並尋找調用的函數

_clean_input_keys($str) 

我不知道什麼是不允許在這裏,所以當您添加$海峽像下面

字符
if (! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) 
    { 
     exit('Disallowed Key Characters.'.$str); // HERE 
    } 

你會得到正是導致問題我的是「)」,所以你必須做下面從HTML刪除不允許使用的字符或允許它像@Ben斯溫伯恩說

的一個字符

希望可以幫助別人