$a = $_REQUEST['label'];
現在,我怎麼能識別存儲在變量$a
的值是從$_GET
或$_POST
?我想重定向用戶,如果它是從$_GET
收集的。有什麼方法可以檢查嗎? PHP很難。只要是這樣的:
$var = recognize($_REQUEST['label']);
if($var == 'GET') { } else { }
$a = $_REQUEST['label'];
現在,我怎麼能識別存儲在變量$a
的值是從$_GET
或$_POST
?我想重定向用戶,如果它是從$_GET
收集的。有什麼方法可以檢查嗎? PHP很難。只要是這樣的:
$var = recognize($_REQUEST['label']);
if($var == 'GET') { } else { }
一旦一個變量被分配,你將不能夠說出它從(通常)來了。
考慮做這樣的事情,因爲如果你使用$_REQUEST
它甚至可能來自$_COOKIE
!
if (isset($_GET['label'])) {
// do redirect
} elseif (isset($_POST['label'])) {
// do something else
}
或者,如果你傳遞變量在內心深處,你不能說出它最初來自:
class RequestParameter
{
private $name;
private $value;
private $source;
public function __construct($name)
{
$this->name = $name;
if (isset($_POST[$name])) {
$this->value = $_POST[$name];
$this->source = INPUT_POST;
} elseif (isset($_GET[$name])) {
$this->value = $_GET[$name];
$this->source = INPUT_GET;
}
}
public function isFromGet()
{
return $this->source === INPUT_GET;
}
public function getValue()
{
return $this->value;
}
}
$a = new RequestParameter('label');
if ($a->isFromGet()) {
// do redircet
}
但我建議構建你的代碼的方式,這是不必要。一種方法是檢查POST是否被做:
$_SERVER['REQUEST_METHOD'] === 'POST'
試試這個
if(isset($_REQUEST['label'])){
//redirect
}
檢查if($_GET['label']) { then redirect using header location; }
OP想知道你是否可以單獨從'$ a'中知道。 – 2013-02-23 07:15:27
@傑克如何來你的答案會告訴如果從'$ a' – 2013-02-23 07:22:31
因爲我的回答包括一個奇特的方式做到這一點:) – 2013-02-23 07:24:35
更好地使用$ _ SERVER [ 'REQUEST_METHOD']:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// …
}
更多信息請參考文檔PHP
這可能不工作預期;請求可以是'POST'請求,但仍然在querystring上有值,$ _ ['GET']'仍然可以訪問。 – 2013-02-23 10:10:49
使用'$ _GET'和'$ _POST'? – 2013-02-23 07:03:22
什麼情況下是從*'$ _GET'或'$ _POST'任意發送的標籤? – 2013-02-23 07:06:46
聽起來像你的代碼結構不好。 – Leri 2013-02-23 07:08:01