我试图使用php自动登录网站,我没有得到任何错误,这个代码既不给我任何结果。这是我试过的代码,我只得到一个空白页面,我期待登录后页面的源代码。
<?php
$fields_string=array();
$url = 'https://subscriber.hoovers.com/H/login/login.html';
$fields = array(
"j_username"=>"XXXXXX",
"j_password"=>"XXXX"
);
//url-ify the data for the POST
foreach($fields as $key=>$value)
{
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields);
//execute post
$result = curl_exec($ch);
echo $result;
//close connection
curl_close($ch);
?>
答案 0 :(得分:0)
我能够让你的脚本通过添加这些curl选项来返回页面的源代码:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
默认情况下,curl不信任Web服务器的证书,上面的最后一个选项告诉curl不要验证Web服务器。您可能希望将最后一个选项切换为:
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt ($ch, CURLOPT_CAINFO, "path/to/your/cacert.pem");
如果你打算走这条路,我会查看Using cURL in PHP to access HTTPS (SSL/TLS) protected sites这是一本很棒的教程,并会详细介绍你需要知道的一切。