gpt4 book ai didi

php - 如何使用 cURL 在 PHP 中同时使用 GET 和 POST 参数发出请求?

转载 作者:可可西里 更新时间:2023-11-01 13:41:18 36 4
gpt4 key购买 nike

其他人已经问过如何从 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 query goes in the URL you're hitting
$ch = curl_init('http://example.com/script.php?query=parameter');
# POST fields go here.
curl_setopt($ch, CURLOPT_POSTFIELDS, array('post' => 'parameter', 'values' => 'go here'));

如果执行 POST,PHP 本身不会决定忽略 GET 参数。无论使用哪种 http 动词加载页面,它都会填充 $_GET - 如果 URL 中有查询参数,它们将进入 $_GET。

如果你没有得到 $_POST 和 $_GET ,那么某些东西导致了重定向或以其他方式杀死了某些东西。例如您是否检查了 $_SERVER['REQUEST_METHOD'] 以查看您的代码是否实际上作为 POST 运行?如果没有实际执行发布,则 PHP 不会填充 $_POST。您可能已经向服务器发送了一个帖子,但这并不意味着您的代码实际上将在 POST 机制下执行 - 例如一个 mod_rewrite 重定向。

由于您启用了 FOLLOW_REDIRECT,您只是假设在代码执行时您实际上收到了一条消息。

关于php - 如何使用 cURL 在 PHP 中同时使用 GET 和 POST 参数发出请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646692/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com