2017-02-06 44 views
2

我已經看到類似這樣的其他幾個問題,但我找不到解決我的具體問題。Codeigniter - URI不允許的字符

我收到錯誤The URI you submitted has disallowed characters.當我發送以下請求:

http://myrul/login/createNewPassword/reset_token/pwd70xkainz500d57311rli/username/contact%40email.com 

現在我已經確定,在我username%是什麼觸發了錯誤,但我有一個可以在我的配置文件。

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

我雖然這應該允許%被允許在url中。如果我將配置設置爲

$config['permitted_uri_chars'] = ''; 

工作正常。配置字符串不正確?或者我應該使用另一個字符串變體?

+0

URL解碼似乎發生在不允許的字符驗證之前,這意味着CI正在檢查「@」而不是「%40」。只需將「@」添加到允許的字符或更改URL以將該電子郵件用作GET參數。 – SolarBear

+0

@SolarBear工作。謝謝。 – bos570

回答

1

contact%40email.com實際上是[email protected],但urlencoded

因此,您發送的禁止字符是@,而不是%

如果你在你的permitted_uri_chars上加「@」,你應該沒問題。

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

嗯,我沒有在URL中發送@。把它作爲'%40'發送的重點就是'@'永遠不會被看到。 – bos570

+0

並不重要,這是不「看到」。網絡服務器看到它。 'urldecode'ing發生在URL驗證之前。所以你**正在發送「@」字符。 :) – yivi

+0

好吧,我想我扔掉的是我的XAMPP本地服務器處理它的方式與我的活動服務器不同。所以它適用於我的本地但不活的環境。謝謝。 – bos570