2010-09-07 194 views
0
$_REQUEST[$k] = isset($_GET[$k]) ? $_GET[$k] : $_POST[$k]; 

$_REQUEST[$k] = isset($_POST[$k]) ? $_POST[$k] : $_GET[$k]; 

是哪種情況,原因是什麼?

+1

*(建議閱讀)* [使用$ _REQUEST有什麼問題?](http://stackoverflow.com/questions/2142497/whats-wrong-with-using-request)和[$ _REQUEST是否存在安全問題? ](http://stackoverflow.com/questions/1149118/does-request-have-security-problem) – Gordon 2010-09-07 08:31:24

回答

3

$_REQUEST$_GET$_POST,並$_COOKIE其中variables_order並且由於PHP 5.3 request_order定義的順序進行結合。

默認順序是GET,POST,然後是cookie。這意味着POST參數會覆蓋現有的GET參數,Cookie會覆蓋現有的POST和GET參數。

1

INI指令 「的variables_order」 被認爲是*影響$ _REQUEST,看到http://php.net/manual/en/ini.core.php

* 「認爲」,因爲我從來沒有使用過,要麼或$ _REQUEST本身。

+1

你是對的,它在實踐中的確如此工作;不過我同意$ _REQUEST本身就是一種代碼味道。 – Piskvor 2010-09-07 08:35:42