立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 2991|回复: 0

[Discuz 通用教程] 让hdwiki使用discuz的登录和注册(完成)

[复制链接]
发表于 2016-8-20 22:00:56 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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>

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程【道勤网】 ( 皖ICP备15000319号-1 )

GMT+8, 2024-5-20 03:50

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表