事实上,它变得非常混乱,我甚至不确定卷曲是否是罪魁祸首。所以,这里的PHP:curl发送GET而不是POST
$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;
我得到的报头(符合正常的,成功的请求的头标),其次是登录页面(我猜卷曲捕获在这个由于重定向),其中有对“不良联系类型”的影响存在错误。
我认为问题是请求主机设置为请求服务器,而不是远程服务器,但后来我注意到(在Firebug中),请求发送为GET,而不是POST。
如果我复制登录网站的表单,将它剥离为只包含带有值的表单元素,并放置完整的网址,它的工作原理非常棒。所以我认为这不是一个安全问题,登录请求必须在同一台服务器上发起,等等(我甚至摆脱了空的隐藏值和所有设置其他一些cookie的JS)。
再次,我很快就感到困惑。
任何想法,为什么它显示为GET,或为什么它不起作用?
谢谢你的抬头。当我做了一个几乎相同的curl_exec到另一台服务器,我看到一个帖子(与表单值我设置),所以我想萤火(在Net标签)是准确的。可以肯定的是,我在本地机器上使用wireshark?我猜不是,因为请求是服务器端的。如何为服务器配置它? – Anthony 2009-06-05 15:22:43
@Anthony Wireshark的,必须运行在任何机器上的PHP正在运行或一个你发送请求。如果wireshark没有安装,请查找tcpdump。我在卷曲相关的东西很感兴趣,所以如果你有不适合在此框中进一步的问题,不要犹豫,通过IM或电子邮件联系我(见我的地址配置文件)。 – phihag 2009-06-05 18:36:20