首頁 > 後端開發 > php教程 > 高手进,关于curl模拟登陆

高手进,关于curl模拟登陆

WBOY
發布: 2016-06-23 14:17:17
原創
923 人瀏覽過

本帖最后由 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板