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);

求大神告知原因
展开
 我来答
zhj808008
2017-10-29
知道答主
回答量:34
采纳率:12%
帮助的人:3.6万
展开全部
要在文件中保存COOKIE的信息,你的curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_file);中的$cookie_file必须是要保存cookie信息的文件名,最最关键的一点,这个文件名是必须要带绝对路径,否则是不行的,如果文件带上绝对路径的话,会在文件中以Netscape格式保存所有的cookie信息。
还有一个需要说明的,COOKIE必须指定有效期,如果没有指定有效期的话,默认的浏览器关闭COOKIE就失效。这种COOKIE信息在内存中存放,不会写入硬盘的。
这两个方面你都需要考虑。用绝对路径,保存一个长效的COOKIE,肯定可以成功!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
molaifeng
2014-01-14 · TA获得超过5273个赞
知道大有可为答主
回答量:1629
采纳率:50%
帮助的人:1787万
展开全部

看看我写的完整例子

$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,看看

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Zerolone
2014-01-14 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:132万
展开全部
curl也不是万能的, 网站可以屏蔽的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dzicrystal
2014-01-14 · TA获得超过1727个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:271万
展开全部
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);
更多追问追答
追问
在加入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) 去掉。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tomlee20122
2014-01-14
知道答主
回答量:5
采纳率:0%
帮助的人:5376
展开全部
缺少一个选项值,
追问
啥意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式