首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别$_REQUEST

识别$_REQUEST
EN

Stack Overflow用户
提问于 2013-02-23 15:02:47
回答 4查看 92关注 0票数 0
代码语言:javascript
复制
$a = $_REQUEST['label'];

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

代码语言:javascript
复制
$var = recognize($_REQUEST['label']);
if($var == 'GET') { } else { }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-23 15:07:52

一旦变量被赋值,你就不能知道它来自哪里(通常)。

考虑这样做,因为如果您使用$_REQUEST,它甚至可能来自$_COOKIE

代码语言:javascript
复制
if (isset($_GET['label'])) {
  // do redirect
} elseif (isset($_POST['label'])) {
  // do something else
}

或者,如果您将该变量传递到无法分辨其原始来源的地方:

代码语言:javascript
复制
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
}

但我建议以一种不必要的方式来组织你的代码。一种方法是检查是否发布了帖子:

代码语言:javascript
复制
$_SERVER['REQUEST_METHOD'] === 'POST'
票数 2
EN

Stack Overflow用户

发布于 2013-02-23 15:08:30

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

票数 1
EN

Stack Overflow用户

发布于 2013-02-23 15:52:19

最好使用$_SERVER‘’REQUEST_METHOD‘

代码语言:javascript
复制
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // …
}

更多详细信息,请参阅文档PHP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15038057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档