PHP $ _POST,$ _GET或$ _REQUEST

时间:2013-07-12 14:57:14

标签: php html post get request

我有一个函数文件,我处理POST和GETS,让用户执行post或get。它更像是一个API调用。

我应该这样做还是使用$ _REQUEST处理POST和GET?

if ($_SERVER['REQUEST_METHOD'] === "GET") {

    $function = $_GET['f'];
    $user_id  = $_GET['user_id'];
}
elseif ($_SERVER['REQUEST_METHOD'] === "POST") {

    $function = $_POST['f'];
    $user_id  = $_POST['user_id'];
}

$res = new stdClass();

if (isset($function)) {

    switch ($function) {    
         ....
    }
}

5 个答案:

答案 0 :(得分:4)

您当前的方法为您提供的好处是,您可以为每个实例使用最佳方法。有些时候你不想GET,因为它只是将数据附加到URL,将它暴露给那些看起来同样向任何知道如何使用URL来处理坏事的人“调用”的人。

如果您担心捕获无法控制请求方法的调用,您可以添加$ _REQUEST作为最后的手段,但我建议限制您使用的内容 - 例如:只需从中提取数据DB而不是修改它的任何东西。

答案 1 :(得分:3)

如果您想同时允许两者,则可以使用$_REQUEST。如果你不关心值是POST还是-er-GETted,那就容易多了。但请注意,$_REQUEST也可能包含Cookie,基于settings in PHP.ini

答案 2 :(得分:1)

$_REQUEST 可以同时为$_POST$_GET,但 也可以是$_COOKIE,取决于request_ordervariables_order设置。因为根据ini设置,它们也可能都不是这些,我根本不会使用它。

我的建议是分别使用$_GET$_POST。他们的意思完全不同。您希望使用$_POST进行操作,使用$_GET进行提取。如果您希望根据$_GET填写表单,可以使用$_SERVER['REQUEST_METHOD'] == 'POST'来确定实际发生的情况并在两者之间切换。

答案 3 :(得分:0)

是的,您可以$_REQUEST同时处理$_POST$_GET

答案 4 :(得分:0)

$_REQUEST是处理这两种请求($_GET & $_POST)的最便捷方式。所以使用$ _REQUEST:

REQUEST METHOD IN PHP