编程语言
首页 > 编程语言> > php-curl发送GET而不是POST

php-curl发送GET而不是POST

作者:互联网

实际上,它变得太凌乱了,我什至不确定卷曲是否是罪魁祸首.因此,这是php:

$creds = array(
    'pw' => "xxxx",
    'login' => "user"
    );

$login_url = "https://www.example.net/login-form"; //action value in real form.
$loginpage = curl_init();

curl_setopt($loginpage, CURLOPT_HEADER, 1);
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($loginpage, CURLOPT_URL, $login_url);
curl_setopt($loginpage, CURLOPT_POST, 1);
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds);

$response = curl_exec($loginpage);
echo $response;

我得到标题(与正常的成功请求的标题相匹配),然后是登录页面(我猜是由于重定向,curl捕获了它),其结果是“错误的联系人类型”的错误.

我以为问题是请求已将主机设置为请求服务器,而不是远程服务器,但后来我注意到(在Firebug中),请求是作为GET发送的,而不是POST.

如果我复制登录站点的表单,将其简化为带有值的表单元素,然后放置操作的完整URL,则效果很好.因此,我认为这不是一个必须在同一服务器上发起登录请求的安全问题.(我什至摆脱了空的隐藏值和设置了其他cookie的所有JS).

再说一次,我很快就感到困惑.

有什么想法为什么它显示为GET或为什么不起作用?

解决方法:

在对整个类与PHP-cURL相关的问题进行故障排除时,只需打开CURLOPT_VERBOSE并为CURLOPT_STDERR提供文件句柄.

将文件尾-f,将标头和响应与您在Firebug中看到的标头和响应进行比较,问题应该会变得清楚.

标签:forms,curl,http-post,server-side,php
来源: https://codeday.me/bug/20191107/2003749.html