请选择 进入手机版 | 继续访问电脑版
返回列表

让hdwiki使用discuz的登录和注册(完成)_弘科资讯网 [复制链接]

hongkewang 2016-9-3 04:16:43 查看全部 使用道具 举报 回复

版权信息:站内会员分享作品,仅供学习与参考,版权为原作者所有。
hdwiki是国内开源wki结构简单,安装使用还是很方便的。DZ是使用最多的开源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>


本内容系 弘科网络团队 客服与技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!弘科资讯网感谢您的支持,弘科网络团队号召全网:要么不分享,分享请免费!

推荐作品查看更多

全部评论/0 条

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0关注

0粉丝

67作品

发布作品
加入收藏 我要分享

分享到微信

打开微信扫一扫即可将网页分享至微信

分享到论坛或者博客

复制
关闭

站长推荐上一条 /1 下一条

弘科资讯网(中国最大的跨平台社区)© 2005-2016 Comsenz Inc
, Processed in 0.183375 second(s), 35 queries .
快速回复 返回顶部 返回列表