我正在学习PHP中的cURL,需要对网页进行身份验证,并将会话存储在cookie中。我能够很好地登录,但是当我尝试使用cookie加载另一个页面时,我没有得到任何输出。现在已经很晚了,而且我确信我有一些愚蠢的东西,但是我不认为没有这个工作就能睡觉。
$curl_p = curl_init($auth_url);
curl_setopt($curl_p, CURLOPT_COOKIEJAR, $svck);
curl_setopt($curl_p, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_p, CURLOPT_RETURNTRANSFER, 1);
$cres_auth = curl_exec($curl_p);
if(!preg_match("/Successful/i",$cres_auth))
{
?><pre><?
print_r("Login was unsuccessful. URL passed was:");
?><br><br><?
print_r($auth_url);
?></pre><?
}else
{
?><pre><?
print_r("Login was successful.");
?></pre><?
$curl_p = curl_init($data_url);
curl_setopt($curl_p, CURLOPT_COOKIEFILE, $svck);
curl_setopt($curl_p, CURLOPT_URL, $data_url);
$cres_data = curl_exec($curl_p);
echo $cres_data;
}
鉴于正确的凭据,我得到“登录成功”,否则失败。如果成功,我什么也得不到;我需要做curl_close()并重新初始化吗?谢谢!
修改
不确定是否重要,但这是正常登录时(通过浏览器)响应的标题:
POST /admin HTTP/1.1
Host: url.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: https://url.com/admin?cmd=submit_logout
Cookie: svanoncollected=collected; password=4cf0ed4321adabbf46784e123a0316fb; extension=4470; iar=8123123f2b3e3541456cae084aeae77f;
lang_locale=en_us
Content-Type: application/x-www-form-urlencoded
Content-Length: 96
HTTP/1.1 200 OK
Date: Wed, 29 Jun 2011 07:43:11 GMT
Server: Apache/2.2.3 (Fedora)
Set-Cookie: lang_locale=en_us; path=/
Set-Cookie: admin_pass=74927c9b91234d2ffb95e60fc832ffe0; path=/
Set-Cookie: admin_name=user; path=/
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
修改
我登录https:// ..并且没有包含curl_setopt($ curl_p,CURLOPT_SSL_VERIFYPEER,false);在if()..块中。添加它似乎有效。再次感谢大家!