php,用curl写个post登陆并取回cookies的代码
我参考网上写的,如下,请问有问题么,为什么我保存cookie的文件里一直都没有内容呢curl_setopt($ch,CURLOPT_URL,$url1);curl_set...
我参考网上写的,如下,请问有问题么,为什么我保存cookie的文件里一直都没有内容呢
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result=curl_exec($ch);
curl_close($ch);
求大神告知原因 展开
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result=curl_exec($ch);
curl_close($ch);
求大神告知原因 展开
5个回答
展开全部
要在文件中保存COOKIE的信息,你的curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);中的$cookie_file必须是要保存cookie信息的文件名,最最关键的一点,这个文件名是必须要带绝对路径,否则是不行的,如果文件带上绝对路径的话,会在文件中以Netscape格式保存所有的cookie信息。
还有一个需要说明的,COOKIE必须指定有效期,如果没有指定有效期的话,默认的浏览器关闭COOKIE就失效。这种COOKIE信息在内存中存放,不会写入硬盘的。
这两个方面你都需要考虑。用绝对路径,保存一个长效的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);
$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);
更多追问追答
追问
在加入curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);之后,显示:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in……
追答
在您的php.ini, 把safe_mode = Off
safe_mode 在php5.3没有用了。
或curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) 去掉。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
缺少一个选项值,
追问
啥意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询