要在文件中保存COOKIE的信息,你的curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);中的$cookie_file必须是要保存cookie信息的文件名,最最关键的一点,这个文件名是必须要带绝对路径,否则是不行的,如果文件带上绝对路径的话,会在文件中以Netscape格式保存所有的cookie信息。
还有一个需要说明的,COOKIE必须指定有效期,如果没有指定有效期的话,默认的浏览器关闭COOKIE就失效。这种COOKIE信息在内存中存放,不会写入硬盘的。
这两个方面你都需要考虑。用绝对路径,保存一个长效的COOKIE,肯定可以成功!
看看我写的完整例子
$data = array(
'username' => 'username',
'password' => 'password'
);
$cookie = tempnam('./', 'cookie');
$ch = curl_init('http://112.124.24.77/Public/authLogin');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_exec($ch);
curl_close($ch);
楼主测试时可以把url换成自己测试的url,看看
curl也不是万能的, 网站可以屏蔽的
cookies 在Header 里, 所以需 curl_setopt($ch, CURLOPT_HEADER, 1); 执行后查看cookie.txt。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)');
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //saved cookies
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$string = curl_exec ($ch);
curl_close ($ch);
缺少一个选项值,