PHP curl : CURLOPT_URL, CURLOPT_POST 和 CURLOPT_POSTFIELDS

标签 php post curl get

如果我有一个如下所示的 URL:

$url = 'http://domain.com/?foo=bar';

然后执行curl如下:

$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

我了解我通过 GET(默认)发出此请求。

现在,如果我在同一场景中设置以下选项:

curl_setopt($resource, CURLOPT_POST, 1);

我知道它使用 POST 而不是 GET,但是它随后是否使用值 bar POST foo?或者正确的方法是:

$url = 'http://domain.com/';
$post = 'foo=bar';
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_POST, 1);
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

如果我这样做会发生什么(即通过 CURLOPT_POSTFIELDS 提交 URL 中的值):

$url = 'http://domain.com/?foo=bar';
$post = 'foo=bar';
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, $url);
curl_setopt($resource, CURLOPT_POST, 1);
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($resource);
curl_close($resource);

在那种情况下将如何提交数据?

最佳答案

POST 和 GET 之间的区别在于服务器检索数据的方式。当您将 CURLOPT_POST 设置为 true 时,服务器通常会通过 CURLOPT_POSTFIELDS 值(即 HTTP 正文中的参数)接收参数,并且可能会忽略 URL 字符串中发送的参数 - 但这实际上取决于各个服务器。

关于PHP curl : CURLOPT_URL, CURLOPT_POST 和 CURLOPT_POSTFIELDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916233/

相关文章:

javascript - 从 api 响应中获取特定值

php - Android - 连接到 wamp = 服务器问候错误

php字符串是值类型?

带有 php 文件登录详细信息的 Android POST 数据 - https

java - JAVA中HTTP POST和GET请求+Javascript调用的结合?

php - 自定义二进制数据的 cURL POST(不是表单内容)

git - 尝试使用curl通过CLI创建GitHub存储库时出现"Bad Credentials"

php - 有什么方法可以在仅提供 Cpanel 访问的共享主机上运行 Composer

c# - curl 后 Xamarin C#

linux - https ( SSL ) 的 curl 命令