【发布时间】:2014-10-28 02:15:37
【问题描述】:
其他人已经问过如何从 perl、java、bash 等中执行此操作,但我需要在 PHP 中执行此操作,而且我没有看到任何与 PHP 相关(或答案)的问题.
我的代码:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
这不起作用。目标站点有print_r($_GET); print_r($_POST);,所以当我检查$result 时,我应该能够看到正在发送的字段。但是,$_POST 数组是空的——我只看到 get 变量。如果我从 $url 中删除 ?... 查询字符串,则正确填充 POST 数组。但现在我没有 GET 参数。我该怎么做?
我的具体情况是,我需要发送太多数据以将其放入查询字符串中,但我无法将其全部发送为 POST,因为我要提交的站点正在为基于发布的数据选择处理程序在 GET 字符串中的变量上。我可以尝试更改它,但理想情况下,我希望能够在同一个查询中同时发送 get 和 post 数据。
【问题讨论】:
-
您不能同时执行 POST 和 GET,但是您可以向您的 url 添加一些查询字符串参数,但是要添加 POST 变量,您必须执行 POST。
-
@ParagTyagi 是的,这是一个非常好的基础教程,但它没有解决我的问题 - 我如何同时发送 GET 和 POST?
-
你不能,但不要让 PHP 的
$_GET和$_POST超全局变量让你误以为查询字符串是一个特殊的 GET 请求。 -
@Benubird 您应该阅读 HTTP 如何工作才能真正理解这一点。每个请求只有一个动词。正如 Quentin 和 Dan 所说,您可以在查询字符串中包含变量并仍然使用 POST 动词。