首页 > 后端开发 > php教程 > 高手进,关于curl模拟登陆

高手进,关于curl模拟登陆

WBOY
发布: 2016-06-23 14:17:17
原创
909 人浏览过

本帖最后由 dz215136304 于 2013-04-04 10:25:43 编辑

模拟登陆织梦,版本5.7,已经去掉后台验证码,不知道为啥一直登陆不上(提示登陆成功却又跳回登陆地址)


<?php$cookie_file    =    tempnam('./temp','cookie');$login_url        =    'http://localhost/dedecms/dede/login.php';$post_fields    =    'gotopage=%2Fdedecms%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=123456&sm1=';$ch = curl_init($login_url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);curl_exec($ch);curl_close($ch);$url='http://localhost/dedecms/dede/article_add.php?channelid=1';$ch = curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);$contents = curl_exec($ch);curl_close($ch);?>
登录后复制


回复讨论(解决方案)

没人会吗 坐等高手

坐等高手啊,没人会吗

代码的12 行改成 echo curl_exec($ch); 你嫩刚看到什么?

代码的12 行改成 echo curl_exec($ch); 你嫩刚看到什么?
改了也不行,提示登陆成功,跳转到后台首页 然后就又跳转到登陆页面了

代码的12 行改成 echo curl_exec($ch); 你嫩刚看到什么?
貌似从16行来时 获取不到cookie了,但是明明已经生成cookie了(ps:只是猜测)

那你 curl_setopt($ch, CURLOPT_HEADER, 1);
证实一下

那你 curl_setopt($ch, CURLOPT_HEADER, 1);
证实一下

1HTTP/1.1 302 Found Date: Thu, 04 Apr 2013 12:23:50 GMT Server: Apache/2.2.21 (Win32) PHP/5.3.10 X-Powered-By: PHP/5.3.10 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: private Pragma: no-cache location: login.php?gotopage=%2Fdedecms%2Fdede%2Farticle_add.php%3Fchannelid%3D1 Content-Length: 0 Content-Type: text/html; charset=gb2312
登录后复制



修改的第18行 结果

他不是要跳转到这里吗
login.php?gotopage=%2Fdedecms%2Fdede%2Farticle_add.php%3Fchannelid%3D1

他不是要跳转到这里吗
login.php?gotopage=%2Fdedecms%2Fdede%2Farticle_add.php%3Fchannelid%3D1
不是啊,要跳转到 要跳转到 http://localhost/dedecms/dede/article_add.php?channelid=1

他不是要跳转到这里吗
login.php?gotopage=%2Fdedecms%2Fdede%2Farticle_add.php%3Fchannelid%3D1

我需要跳转到 http://localhost/dedecms/dede/article_add.php?channelid=1 而他错误的跳转到了登陆页面(即:http://localhost/dedecms/dede/login.php?gotopage=%2Fdedecms%2Fdede%2Findex.php)

他不是要跳转到这里吗
login.php?gotopage=%2Fdedecms%2Fdede%2Farticle_add.php%3Fchannelid%3D1

需要获取 http://localhost/dedecms/dede/article_add.php?channelid=1这个页面的数据

dede验证

dede验证 验证码已经去掉

坐等高手解答

坐等高手解答

我是打酱油的。

哈哈,我可用分太少了,回复搞点分。

应该是cookie没有生效,或者cookie域不对

如果登陆成功之后还跳转回首页 那应该就是cookie的问题了...

如果登陆成功之后还跳转回首页 那应该就是cookie的问题了...
貌似确实是cookie 但是cookie已经保存到文件里面了,难道第20行代码没将cookie发过去?求解决方法

哈哈,我可用分太少了,回复搞点分。

哈哈,我可用分太少了,回复搞点分。 我擦 咋都是打酱油的

继续求高手继续求高手

继续坐等高手 ,今天

继续坐等高手 ,今天

header("location:login.php?gotopage=".urlencode($dedeNowurl));

用这个函数去试试,我用它查询汽车违章是没有问题的~~~

<?phpsession_start();function getHtml($url,$tmpFile,$postData){	$ch = curl_init($url);	curl_setopt($ch,CURLOPT_HEADER,0);	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  	curl_setopt($ch, CURLOPT_COOKIEJAR, $tmpFile);	curl_setopt($ch, CURLOPT_COOKIEFILE, $tmpFile); 	if($postData!=NULL)	{		curl_setopt($ch, CURLOPT_POST, 1);  		curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 	}	$content=curl_exec($ch);  	curl_close($ch); 	return $content;}	?>
登录后复制

不能用localhost的。

我是;来学习的。。。

dede登陆类做了限制

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板