0
$a = $_REQUEST['label'];

现在我如何识别存储在变量中的值$a是来自$_GET还是来自$_POST?如果它是从收集的,我想重定向用户$_GET。有什么方法可以检查吗?PHP 有点难。就像这样:

$var = recognize($_REQUEST['label']);
if($var == 'GET') { } else { }
4

4 回答 4

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'
于 2013-02-23T07:07:52.493 回答
1

检查if($_GET['label']) { then redirect using header location; }

于 2013-02-23T07:08:30.330 回答
0

最好使用 $_SERVER['REQUEST_METHOD']:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // …
}

更多细节参见文档PHP

于 2013-02-23T07:52:19.473 回答
-3

试试这个

if(isset($_REQUEST['label'])){
//redirect
}
于 2013-02-23T07:05:06.303 回答