$a = $_REQUEST['label'];
现在我如何识别存储在变量$a
中的值是来自$_GET
还是来自$_POST
?如果用户是从$_GET
收集的,我想重定向用户。有没有办法检查? PHP有点难度。就像这样:
$var = recognize($_REQUEST['label']);
if($var == 'GET') { } else { }
答案 0 :(得分:2)
分配变量后,您将无法确定它的来源(通常)。
考虑做这样的事情,因为如果你使用$_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'
答案 1 :(得分:1)
检查if($_GET['label']) { then redirect using header location; }
答案 2 :(得分:0)
最好使用$ _SERVER ['REQUEST_METHOD']:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// …
}
更多详细信息,请参阅文档PHP
答案 3 :(得分:-3)
试试这个
if(isset($_REQUEST['label'])){
//redirect
}