返回空參數: www.example.com/users/checkusername?username=eCakePHP的上我有問題以讀取關於GET請求參數的GET請求
我使用CakePHP 3,上cakePHP 2.6.4正在工作沒有問題。
通過這些方式,我有一個空的結果:
$this->log($this->request->query['username']);
$this->log($this->params['url']);
結果:
2015-04-28 17:28:22 Error:
2015-04-28 17:28:22 Error:
然而,檢查整個請求有可能驗證參數是有
$this->log($this->request);
這些是輸出:
2015-04-28 17:28:22 Error: Cake\Network\Request Object
(
[params] => Array
(
[plugin] =>
[controller] => Users
[action] => checkusername
[_ext] =>
[pass] => Array
(
)
[_Token] => Array
(
[unlockedFields] => Array
(
)
)
)
[data] => Array
(
)
[query] => Array
(
)
[cookies] => Array
(
[CAKEPHP] => u8lgs1cup81331lka3a90jidd4
)
[_environment:protected] => Array
(
**removed**
[REQUEST_METHOD] => GET
[REQUEST_URI] => /users/checkusername?username=e
[SCRIPT_NAME] => /index.php
**removed**
)
[url] => users/checkusername
[base] =>
[webroot] =>/
[here] => /users/checkusername
[trustProxy] =>
[_detectorCache:protected] => Array
(
[post] =>
[put] =>
)
[_input:protected] =>
[_session:protected] => Cake\Network\Session Object
(
[_engine:protected] =>
[_started:protected] => 1
[_lifetime:protected] => 1440
[_isCli:protected] =>
)
)
有人知道如何讀取這個參數嗎?
更多的調試
後,我發現這個問題是關係到海華沙重寫規則。我只是添加
<?php echo phpinfo(); ?>
在開始文件/webroot/index.php。
當我使用:https://www.example.com/?code=123
它的工作原理,我得到這些結果
PHP Variables Variable Value
_REQUEST["code"] 123
_GET["code"] 123
_SERVER["REQUEST_URI"] /?code=123
_SERVER["SCRIPT_NAME"] /index.php
但是當我嘗試:https://www.example.com/users/confirm?code=123
的變量沒有顯示。
_SERVER["REQUEST_URI"] /users/confirm/?code=123
_SERVER["SCRIPT_NAME"] /index.php
我重寫規則是根據介紹CakePHP書推薦:
UrlToolkit {
ToolkitID = cakephp
RequestURI exists Return
Match .* Rewrite /index.php
}
沒有人有CakePHP的重寫規則或有其他地方定義的?
你是哪裏的要求看'username'?除了REQUEST_URI –
Hi @Peter Bowers,我只能在REQUEST_URI上看到它。當我使用安全組件時,我嘗試使用$ this-> Security-> config('unlockedActions','checkusername');但仍然不起作用 – coder
默認情況下,請求對象'query'屬性直接使用'$ _GET' +可能從'Request :: _ url()'提取的附加參數提供,所以如果請求中沒有任何內容,則可能是$ _GET '是空的(無論出於何種原因),或者財產在某個時候被清空,或者...因此,是時候進行更多的調試了。 – ndm