discuz版本:UC1.5_UCH2.0_DZ7.2_SC_UTF8(即discuz7.2,UCenter1.5,UCenterHome2.0)
有没有UCenterHome不重要,只有discuz和UCenter就行。
1.思想:解决的方法就是在自己的网站上注册的时候,不仅向自己的数据库插入用户数据,同时向discuz的数据库的表里插入相同的数据(这也是比较直接,比较浅显易懂的)
2.通过在网上的搜索加上自己的尝试,确定当用户注册的时候,discuz数据库的 uc_members 和 cdb_members 两张表插入了数据,当这两张表的数据正确的情况下,才能够在discuz上登录。
通过不过不断试验得到 一下两条sql语句:
insert into cdb_members(username,password,secques,gender,adminid,groupid,groupexpiry,extgroupids, regip,regdate,lastip,lastvisit,lastactivity,lastpost,posts,threads,digestposts,oltime,pageviews,credits, extcredits1,extcredits2,extcredits3,extcredits4,extcredits5,extcredits6,extcredits7,extcredits8,email, bday,sigstatus,tpp,ppp,styleid,dateformat,timeformat,pmsound,showemail,newsletter,invisible,timeoffset, prompt,accessmasks,editormode,customshow,xspacestatus,customaddfeed,newbietaskid) values ('aaa','c98609f7dd51f87225d0d7aafd096b7d','',0,0,10,0,'','10.10.4.102', 1267774084,'',1267774084,1267774084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'[email protected]', '0000-00-00',0,0,0,0,0,0,1,0,1,0,9999,1,0,2,26,0,0,0) insert into uc_members(username,password,email,myid,myidkey,regip,regdate,lastloginip,lastlogintime,salt,secques) values ('aaa','c98609f7dd51f87225d0d7aafd096b7d','[email protected]','','','10.10.4.102',1267774084,0,0,'45207c','')
这两张表的相同的字段要插入相同的数据,这时候用 用户名:aaa 和密码: aaa就可以登录自己的discuz了
3.当在写代码的时候将静态的数据换成动态的前台提交的数据就可以了,另外有一点必须要强调的是密码,一开始我以为password的数据是前台提交的密码的MD5加密后的值,经过反复验证,发现想法错误,经过搜索和反复验证,终于明白这里插入的password的值是:
前台提交的密码加密后,再加上随机产生的6位字母和数字的一串字符串(即数据库里的salt字段的值),然后再MD5加密得到值表达式可以理解为:
pass=前台提交的密码;
salt=随机产生的六位字母与数字的组合;
(可以参见 http://blog.csdn.net/xiayaxin/archive/2010/03/08/5355851.aspx 得到六位随机数)
password=MD5(MD5(pass)+salt )
这里得到password才为正确加密的后应该插入数据库的password字段的值,salt也就是 uc_members 表里salt字段的值。
4.cdb_members 表里regdate、lastvisit和lastactivity字段,uc_members 表里regdate字段的值为
Date date = new Date();
new Integer(String.valueOf(date.getTime()).substring(0,10));
5.这样再加上调试,就可以将自己的网站与自己搭建的discuz整合在一起了,当用户在你的网站注册后,跳转到discuz时就不用再去注册了。
自己的心得:没有耐心干不成事!