我試圖讓Codeigniter接受URL中的「@」符號。我已經包括它低於允許的人物之一:不允許Codeigniter URL中的「@」符號
$config['permitted_uri_chars'] = 'a-z 0-9~%.:[email protected]';
但是我繼續得到他的錯誤消息:
Disallowed Key Characters.
每隔性格似乎工作除了「@」精符號。有任何想法嗎?
謝謝!
我試圖讓Codeigniter接受URL中的「@」符號。我已經包括它低於允許的人物之一:不允許Codeigniter URL中的「@」符號
$config['permitted_uri_chars'] = 'a-z 0-9~%.:[email protected]';
但是我繼續得到他的錯誤消息:
Disallowed Key Characters.
每隔性格似乎工作除了「@」精符號。有任何想法嗎?
謝謝!
CodeIgniter路由系統將轉換您的url以將控制器,操作和參數定義爲鍵/值。它檢查密鑰的值是否允許使用字符,並且您可以使用$config['permitted_uri_chars']
進行配置,但是您收到的錯誤消息是關於密鑰本身而不是其值。在這種情況下,$config['permitted_uri_chars']
不會幫助您允許@符號。你會發現檢查system/core/input.php中的鍵的功能function _clean_input_keys($str)
。 %字符是不允許如此「%40」不會通過:在你的情況下解決此
if (! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
唯一的辦法就是避免這個人物在關鍵參數(也許它翻譯)。
感謝您的解釋。這在Codeigniter 2.1.0中似乎是新的。我能夠在舊版本中使用「@」符號。 – Nick 2012-02-20 17:30:54
您是否已將適當的轉義添加到允許的uri字符串中?
$config['permitted_uri_chars'] = 'a-z 0-9~%\.\:_\-';
我從我的一個CI站點複製了此權限,並允許%40。
請參考pekka上面有關實際@符號的評論。
它仍然無法正常工作。這太奇怪了。它適用於我的舊項目,但不是這個。我從字面上開始了這個,所以我想不出任何可能導致它的東西。 – Nick 2012-02-17 20:38:31
'@'不是URL的有效字符。它是通用的,而不是CI特定的。你必須百分比編碼它 – 2012-02-17 20:09:18
即使「%40」正在返回錯誤。 – Nick 2012-02-17 20:14:56
您需要允許%作爲允許的字符傳遞%40我相信 – 2012-02-17 22:07:56