+ -
当前位置:首页 → 问答吧 → 使用curl 模拟登录 discuz 程序

使用curl 模拟登录 discuz 程序

时间:2009-06-28

来源:互联网

本帖最后由 网鬼 于 2009-6-28 02:12 编辑

写了个curl模拟登录discuz的程序,现在对于开启验证码的论坛想不到可以用什么方法解决,大家讨论下
[php]
<?php   
/**   
* Curl 模拟登录 discuz 程序   
* 尚未实现开启验证码的的论坛登录功能   
* @author lvyaozu(http://www.lvyaozu.com)   
*/   
   
!extension_loaded('curl') && die('The curl extension is not loaded.');   
   
$discuz_url = 'http://localhost/discuz7';//论坛地址   
$login_url = $discuz_url .'/logging.php?action=login';//登录页地址   
$get_url = $discuz_url .'/my.php?item=threads'; //我的帖子   
   
$post_fields = array();   
//以下两项不需要修改   
$post_fields['loginfield'] = 'username';   
$post_fields['loginsubmit'] = 'true';   
//用户名和密码,必须填写   
$post_fields['username'] = 'admin';   
$post_fields['password'] = '123456';   
//安全提问   
$post_fields['questionid'] = 0;   
$post_fields['answer'] = '';   
//@todo验证码   
$post_fields['seccodeverify'] = '';   
   
//获取表单FORMHASH   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
$contents = curl_exec($ch);   
curl_close($ch);   
preg_match('/<input\s*type="hidden"\s*name="formhash"\s*value="(.*?)"\s*\/>/i', $contents, $matches);   
if(!empty($matches)) {   
    $formhash = $matches[1];   
} else {   
    die('Not found the forumhash.');   
}   
   
//POST数据,获取COOKIE   
$cookie_file = dirname(__FILE__) . '/cookie.txt';   
//$cookie_file = tempnam('/tmp');   
$ch = curl_init($login_url);   
curl_setopt($ch, CURLOPT_HEADER, 0);   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
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);   
   
//带着上面得到的COOKIE获取需要登录后才能查看的页面内容   
$ch = curl_init($get_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);   
   
var_dump($contents);   
?>  
[/php]

作者: 网鬼   发布时间: 2009-06-28

支持一下最近正在学这个

作者: phpquanchao   发布时间: 2009-06-28

让CURL记住COOKIE就可以解决验证码问题了。

作者: 老胡   发布时间: 2009-06-28

学习学习

作者: nianjin   发布时间: 2009-06-28

支持网鬼

作者: ahsxw   发布时间: 2009-07-08

似乎没什么人讨论开启验证码的情况下怎么登录么?
呵呵,我也想知道有验证码该咋办?

作者: 风无影   发布时间: 2009-07-10

老胡
这个怎么说

作者: 你回来了   发布时间: 2009-08-04

官方已经提供API,就没必要自己折腾了

作者: deeka   发布时间: 2009-08-04

热门下载

更多