其实,它变得如此混乱的,我甚至不能确定卷曲的罪魁祸首。所以,这里的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;

我得到的报头(符合正常的,成功的请求的标头,其),接着登录页面(我猜卷曲捕获在这个由于重定向),其具有的误差为“不良接触型的效果”

我认为,问题是,该请求必须在主机设置为请求服务器,而不是在远程服务器,但然后我注意到(萤火虫),该请求被发送作为GET,POST不

如果我复制登录网站的形式,剥离下来到刚刚与价值观的表单元素,并把完整的URL的行动,它的工作好了。所以,我觉得这不是一个安全问题,即登录请求已发起在同一台服务器,等上(我甚至摆脱空隐藏值和所有设置一些其他的cookie JS的)。

再然后,我会感到困惑很快。

任何想法,为什么它显示为GET,或者为什么它不工作,对于这个问题?

有帮助吗?

解决方案

在故障排除整个班级的PHP卷曲有关的问题,你只需要打开CURLOPT_VERBOSE,给CURLOPT_STDERR文件句柄。

tail -f您的文件,比较头和响应您在Firebug中看到的,这个问题应该很清楚。

其他提示

在请求从服务器制成,并且在萤火虫将不会显示。 (你可能与你的浏览器另一个请求混淆它)。使用 Wireshark的找出到底发生了什么。您没有设置CURLOPT_FOLLOWLOCATION;重定向不应遵循。

总结:猜以下,发布更多。链接到PCAP转储,我们将能够告诉你在做什么错误的;或张贴PHP脚本的精确输出,我们可能。

在所示代码执行多部分formpost(因为你传递散列阵列到POSTFIELDS选项),这可能也不是什么目标服务器所期望的。

尝试在端在print_r(curl_getinfo($loginpage))投掷,看什么的报头数据被发送回作为

另外,如果你试图伪装,你从他们的网站,你会记录到要确保您发送正确引用您的文章,让他们“想”你是在网站上,当你寄的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top