我有一个函数文件,我处理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) {
....
}
}
答案 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_order或variables_order设置。因为根据ini设置,它们也可能都不是这些,我根本不会使用它。
我的建议是分别使用$_GET
和$_POST
。他们的意思完全不同。您希望使用$_POST
进行操作,使用$_GET
进行提取。如果您希望根据$_GET
填写表单,可以使用$_SERVER['REQUEST_METHOD'] == 'POST'
来确定实际发生的情况并在两者之间切换。
答案 3 :(得分:0)
是的,您可以$_REQUEST
同时处理$_POST
和$_GET
。
答案 4 :(得分:0)
$_REQUEST
是处理这两种请求($_GET & $_POST)
的最便捷方式。所以使用$ _REQUEST: