• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!

让hdwiki使用discuz的登录和注册

2015-06-13 16:29:09   来源:叶景网络
    hdwiki是国内开源wki结构简单,安装使用还是很方便的。discuz是使用最多的开源BBS。
    hdwiki虽然在官方说可以已经与discuz无缝对接,但是实际中使用会发现对接后会出现不少的问题,比如说:在hdwiki注册后很多的信息在discuz中是错误的;而且对接前的用户hdwiki也没有处理。最重要的是,hdwiki登录机制保存用户名和密码是有安全问题的,不如discuz设计得安全方便。所以对于老discuz的用户,大家还是非常想使用discuz的登录页面和登录验证机制。
    最近我对2者研究了一下,进行一下相关改造,实现了hdwiki使用discuz的登录和注册机制。对程序的修改也是尽可能的少,同时尽可能的考虑了可扩展性。
    主要有2方面工作要做:
    1、用户同步,将老discuz的用户导入hdwiki;
    2、discuz登录和注册的时候hack进hdwiki的登录和注册。
    要求:
    1、本例是以discuz用户为基准,如果以hdwiki为准的话,需要自己修改第一步骤。所以最好是已经安装discuz后再安装hdwiki。
    2、对discuz数据库配置参数可以直接访问hdwiki数据库,也就是要求两都要在同一台服务器上,如果在不同服务器上也是可以实现,可是我不需要:)
    3、discuz数据库名为discuz,hdwiki数据库名为hdwiki。对于读者请自行更改对应的数据库名。
    具体实现:
    -、将discuz用户导入hdwiki中
    我使用的sql语句来进行的相关操作
    1、先执行:
    insert into hdwiki.hdwiki_user(
    user_id,user_email,user_nick,user_nick_upper,user_password
    ,user_city,user_sex,user_address,user_birthday
    ,user_qq,user_msn
    ,user_intro
    ,user_reg_time
    )
    SELECT
    m.uid,m.email,m.username,upper(m.username),m.password
    ,mf.site,m.gender,mf.location,m.bday
    ,mf.qq,mf.msn
    ,mf.sightml
    ,FROM_UNIXTIME(m.regdate)
    FROM discuz.cdb_members m
    LEFT JOIN discuz.cdb_memberfields mf ON m.uid=mf.uid
    WHERE m.uid>2
    2、再执行:
    update hdwiki.hdwiki_user
    set
    user_small_ico='uploads/userface/face.gif',user_big_ico='uploads/userface/face.gif',usergroup_id=2,state=1
    where user_id>2;
    以上就是将discuz的用户导入到hdwiki中。
    二、修改程序文件
    1、添加一个模块文件,在注册与登录过程调用hdwiki的用户
    discuz/include/hdwiki_user.php
    下载链接
    2、修改discuz/loggin.php
    找到代码:
    $discuz_user = $discuz_pw = '';
    $styleid = $_DCACHE['settings']['styleid'];
    在下面添加:
    include_once './include/hdwiki_user.php';
    找到代码
    $sessionexists = 0;
    在下面添加:
    //-- hdwiki login
    include_once './include/hdwiki_user.php';
    3、修改discuz/register.php
    找到:
    $groupid = $groupinfo['groupid'];
    $styleid = $styleid ? $styleid : $_DCACHE['settings']['styleid'];
    在下面添加:
    // hdwiki register
    include_once './include/hdwiki_user.php';
    4、修改hdwiki/sitetop.php
    找到:
    @$arr_user_info=reloadUser();
    $tpl->assign($arr_user_info);
    在下面添加:
    $_DCACHE['settings']['authkey'] = 'CMUS6ipYZr0EJZ4';
    $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);
    $formhash = substr(md5(substr(time(), 0, -7).$arr_user_info['user_nick'].$arr_user_info['user_id'].$arr_user_info['user_password'].$discuz_auth_key), 8, 8);
    $tpl->assign("formhash",$formhash);
    其中$_DCACHE['settings']['authkey']的值请查找你的discuz/forumdata/cache/cache_settings.php文件,找到 'authkey'对应的值,如果这个值添加写错误将不能正常退出。
    5、修改hdwiki/templates/default/sitetop.html
    将代码:
    <a href="/club/logging.php?action=logout">退出</a>
    修改成:注意添加formhash
    <a href="/club/logging.php?action=logout&formhash=2ee9b36d&referer=/wiki/index.php">退出</a>
    将代码:
    <a href="logging.php">我要登录</a> | <a href="register.php">注册</a>
    修改成:
    <a href="/club/logging.php?action=login&referer=/wiki/index.php">我要登录</a> | <a href="/club/register.php?referer=/wiki/index.php">注册</a>
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
discuz插件开发的入门篇 discuz插件开发的入
彻底解决关于dedecms留言板的安装问题 彻底解决关于dedecm
DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 DiscuzX2.5登录无法
discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2.5安装手
关注排行RANKING
1

discuz插件开发的入门篇

discuz插件开发的入门篇 在config config_global php 文件里设置$_config[ plugindeveloper ] = ...

2

彻底解决关于dedecms留言板的安装问题

彻底解决关于dedecms留言板的安装问题 先前使用dedecms5 5做的网站在服务器上运行两年了,某天突然想给网站加上个留言板模块...

3

DiscuzX2.5登录无法同步登录到PHPCM...

DiscuzX2.5登录无法同步登录到PHPCMS v9解决办法 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领...

4

discuz X2.5安装手动选择ucenter时...

discuz X2.5安装手动选择ucenter时出错问题解决 discuz X2 5安装时想自定义选择ucenter时出错,因为discuz X2 5中也有一个uc_server...

5

Discuz百万级数据的压力测试实现(...

Discuz百万级数据的压力测试实现(创建海量数据库) 由于开发的需求,对discuz创建海量数据库来进行压力测试,以下是对discuz百万级数据的压...

6

discuzX2.5安装不成功,到了正在安装...

discuzX2.5安装不成功,到了正在安装附加数据就不动了 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

7

Discuz!中分表的实现方法

Discuz!中分表的实现方法 论坛系统中的帖子表,是访问量大很大的表,为了保证数据的快速提取返回给用户,...

8

什么情况下选用hdwiki(for discuz)?

什么情况下选用hdwiki(for discuz)? 如果您已经有了一个dz论坛,并且还想要一个自己专业的知识库,建个百科频道。建...

9

让hdwiki使用discuz的登录和注册

让hdwiki使用discuz的登录和注册 hdwiki是国内开源wki结构简单,安装使用还是很方便的。discuz是使用最多的开源BBS。