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