繁体   English   中英

PHP curl:CURLOPT_URL,CURLOPT_POST和CURLOPT_POSTFIELDS

[英]PHP curl: CURLOPT_URL, CURLOPT_POST, and CURLOPT_POSTFIELDS

如果我有一个如下所示的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);

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

$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字符串中发送的参数 - 但这实际上取决于单个服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM