Heim > Backend-Entwicklung > PHP-Tutorial > 高手进,关于curl模拟登陆

高手进,关于curl模拟登陆

WBOY
Freigeben: 2016-06-23 14:17:17
Original
908 Leute haben es durchsucht

本帖最后由 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);?>
Nach dem Login kopieren


回复讨论(解决方案)

没人会吗 坐等高手

坐等高手啊,没人会吗

代码的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
Nach dem Login kopieren



修改的第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;}	?>
Nach dem Login kopieren

不能用localhost的。

我是;来学习的。。。

dede登陆类做了限制

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage