一直以来,没有时间来整理这一段时间以来使用DNT2.0的经验,现在简单的说一下,以下主要说的是按照网上很多办法去解决的时候,需要另外再做一些工作,说人之所未说就行!
整合就意味着要整合登陆以及注册和退出,我的网站结构是这样的,包括中国建造师人才网的人才库、论坛的数据库、建造师问吧的数据库,目前我的登陆与退出没有整合
1、重点谈注册整合,我的人才库为sql数据库,论坛为DNT2.0access数据库
在按照雪人的注册整合思路进行整合时,发现注册总是无法成功,后来把数据库下载下来,直接过行查询语句,也无法插入,即排除了戏水所说的数据库的权限问题,最终发现问题在于,DNT的数据库每一个字段都是必填选项,少一个也无注册成功,明白了这个道理,就动手把DNT数据库的用户的字段,除ID字段外,其余字段均修改为非必填项,再进行注册就可以了
2、下面是注册整合的代码:
'新论坛整合区
dim dnt_name,dnt_email,dnt_password,dnt_birth
dnt_name=pmember_login1 ‘给用户姓名赋值,即你其它数据库的取值
dnt_email=pmember_email1 ‘给用户密码赋值,即你其它数据库的取值
dnt_password=pmember_pwd1‘给用户邮箱赋值,即你其它数据库的取值
dnt_birth=pmember_birth1‘给用户生日赋值,即你其它数据库的取值,其余变量设定初始值即可!
'下面的代码摘自于DNT论坛,版权归原作者作有,本人权修必了其中的变量,可以做到只要修改以上的四个变量,即可以把以上的代码插入进去就可以运行的形式。
Private Function getIP()
Dim strIPAddr
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
Else
strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr, 1, 30))
End Function
set sqlconn=server.createobject("adodb.connection")
sqlconn.open "DBQ="&server.mappath("请在此处填入数据库的路径")&";driver={microsoft access driver (*.mdb)}"
'-----------下以是网站全站信息-----------
set sqlrs=server.createobject("adodb.recordset")
'判定discuz用户表中是否存在当前用户名,如果存在则跳过。
sqlsql1="select * from dnt_users where username='"&dnt_name&"'"
sqlrs.open sqlsql1,sqlconn,1,3
if sqlrs.eof or sqlrs.bof then
'用户名不存在,新建,先定入dnt_users
sqlrs.addnew
sqlrs("username")=dnt_name
sqlrs("password")=dnt_password
sqlrs("nickname")=dnt_name
sqlrs("email")=dnt_email
sqlrs("groupid")=10 '默认用户组'
sqlrs("regip")=getIP()
sqlrs("lastip")=getIP()
sqlrs("sigstatus")=1
sqlrs("pmsound")=1
sqlrs("showemail")=1
sqlrs("newsletter")=1
sqlrs("newpm")=1
sqlrs("onlinestate")=1
sqlrs("newpmcount")=0
sqlrs("extcredits1")=100
sqlrs("extcredits2")=100
sqlrs("credits")=200
sqlrs("templateid")=0
sqlrs("bday")=dnt_birth
sqlrs.update
sqlrs.close
'获取UID
sqlrs.open "select * from dnt_users where username='"&dnt_name&"' and email='"&dnt_email&"'",sqlconn,1,1
saveuid=sqlrs("uid")
sqlrs.close
'在dnt_userfields表添加uid对应的新记录,这样的用户数据才是完整的。
sqlrs.open "select * from dnt_userfields",sqlconn,1,3
sqlrs.addnew
sqlrs("uid")=saveuid
sqlrs.update
'最后,修改论坛状态表。
sqlrs.close
sqlrs.open "select * from dnt_statistics",sqlconn,1,3
sqlrs("totalusers")=sqlrs("totalusers")+1 '用户总数+1
sqlrs("lastusername")=dnt_name '最后注册用户名
sqlrs("lastuserid")=saveuid '最后注册用户ID
sqlrs.update
end if
sqlrs.close
sqlconn.close
set sqlconn=nothing
最后一个步骤,由于我的主站和重点功能是人才网,而论坛只是一部分,所以屏蔽掉论坛的注册即可,办法如下:
搜索模板目录下所有含有注册二字的页面,将其中的注册链接网址,导向你自己的注册页面并重新生成模板就好了!
3、注册登陆和退出整合
其实思路很简单,登陆的时候向login.aspx传递用户名及密码参数即可,退出时向LOGINOUT.aspx传递用户名即可,但是asp的response.redirect的转向页面比较烦琐,可能采用其它的方式会好一些,我不是太喜欢用户转来转去的,所以放弃了登陆和退出的整合,把注册整合了,娄据库统一了我就感觉够了!
但要是真的能实现登陆整合是最好的,希望能有其它更好的办法。
演示网站:
www.jzrc.net/bbs2,中国建造师人才网论坛
如果是采用同样的access数据库的同行可以多交流!