相关参考:asp.net调用Discuz!NT方法实现用户整合登陆:
http://nt.discuz.net/download/doc/dnt_2_userapidoc.zip与开发语言无关的用户整合登陆:
http://nt.discuz.net/doc/default.aspx?cid=135======================================================
用途: 假设asp网站原有一个用户数据库 (下文称为原数据库),安装Discuz!NT后,你直接修改原来的注册用户程序,让用户注册后同时将用户信息添加到原数据库和Discuz!NT的数据库. 现在希望用户登录一次即可同时登录原网站和Discuz!NT论坛,而你又只熟悉asp的话,即可以此asp脚本稍作修改,来作为用户的一次登录程序使用.
更新时间: 2007-4-18
这个范例仅提供给网站现有部分功能为asp, 且不熟悉asp.net的朋友使用. 如果你的网站是asp.net且你对asp.net略有了解, 那当然就不要考虑陈旧的asp了.
需要的朋友看下, 有什么意见建议提出来, 逐步改进.
以下为login.asp的内容:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登录</title>
</head>
<body>
<%
Rem ==============参数设置开始================
Rem ==========================================
Rem 设置论坛Url地址,请根据你的实际情况修改
Rem 注意只要目录,不要文件名,例如:
Rem 正确用法: [url]http://www.abc.com/bbs[/url]
Rem 错误用法: [url]http://www.abc.com/bbs/index.aspx[/url]
Rem ==========================================
url_dnt = "http://www.abc.com/bbs"
Rem ==========================================
Rem 设置Discuz!NT登录完毕后返回的Url地址,请根据你的实际情况修改
Rem ==========================================
url_return = "http://www.abc.com/main.asp"
Rem ==============参数设置结束================
%>
<form name="dntloginform" method="post" action="#">
<input name="username" type="hidden" id="username" />
<input name="password" type="hidden" id="password" />
<input name="question" type="hidden" id="question" />
<input name="answer" type="hidden" id="answer" />
</form>
<script language="javascript">
function postdntloginform(username, password, question, answer)
{
document.dntloginform.action="<%=url_dnt%>/login.aspx?reurl=<%=%>";
document.dntloginform.username.value=username;
document.dntloginform.password.value=password;
document.dntloginform.question.value=question;
document.dntloginform.answer.value=answer;
document.dntloginform.submit();
}
</script>
<%
if request("username")<>"" then
strUsername = request("username")
strPassword = request("password")
strQuestion = request("question")
strAnswer = request("answer")
Rem ==========================================
Rem 函数ChkUserLogin检查你原数据库用户名字密码,根据用户名和密码判断后返回true或false(真或假)
Rem 具体的判断请根据你的实际情况修改后面的ChkUserLogin函数内容
Rem ==========================================
if ChkUserLogin(strUsername, strPassword) then
response.write "<" & "script language=javascript>postdntloginform('" & Server.URLEncode(strUsername) & "','" & Server.URLEncode(strPassword) & "','" & Server.URLEncode(strQuestion) & "','" & Server.URLEncode(strAnswer) & "');</script" & ">"
response.end
end if
response.write "<" & "script language=javascript>alert('帐号错误,请重新输入');</script" & ">"
end if
Rem ==========================================
Rem 函数ChkUserLogin检查你原数据库用户名字密码
Rem 以下程序中需要你根据实际情况修改数据库连接串和原用户表名以及用户和密码字段名
Rem ==========================================
function ChkUserLogin(strUsername, strPassword)
ChkUserLogin = false
set conn = server.createobject("adodb.connection")
Rem ==========================================
Rem 出于SQL安全考虑, 将“'”替换为“''”
Rem ==========================================
strUsername = replace(strUsername, "'", "''")
Rem ==========================================
Rem 连接原数据库
Rem ==========================================
conn.open "provider=microsoft.jet.oledb.4.0;data source=d:\web\abc\db.mdb"
Rem ==========================================
Rem 如果是SQLServer数据库就类似于:
Rem conn.open "DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=databasename"
Rem ==========================================
Rem ==========================================
Rem 查找符合用户名的记录
Rem ==========================================
set rs = conn.execute("SELECT TOP 1 [password] FROM [] WHERE [username]=" & strUsername)
if not(rs.bof or rs.eof) then
Rem ==========================================
Rem 如果存在该用户名则判断用户密码是否正确
Rem 这里strPassword为密码明文
Rem 如果数据库库中存储的密码是进行过处理后的(例如MD5加密),则请进行相应修改,例如:
Rem if rs(0) = MD5(strPassword) then
Rem ==========================================
if rs(0) = strPassword then
ChkUserLogin = true
end if
end if
end function
%>
<form id="form1" name="form1" method="post" action="">
<table width="500" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#F9F9F9">
<tr>
<td colspan="2" align="center" bgcolor="#CCCCCC">用户登录</td>
</tr>
<tr>
<td width="30%" align="right">用户名:</td>
<td width="70%"><input name="username" type="text" id="username" size="20" /></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input name="password" type="text" id="password" size="20" /></td>
</tr>
<tr>
<td align="right">安全问题:</td>
<td><select name="question" id="question">
<option value="0" selected="selected">无</option>
<option value="1">母亲的名字</option>
<option value="2">爷爷的名字</option>
<option value="3">父亲出生的城市</option>
<option value="4">您其中一位老师的名字</option>
<option value="5">您个人计算机的型号</option>
<option value="6">您最喜欢的餐馆名称</option>
<option value="7">驾驶执照的最后四位数字</option>
</select>
</td>
</tr>
<tr>
<td align="right">答案:</td>
<td><input name="answer" type="text" id="answer" size="20" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="登 录" /></td>
</tr>
</table>
</form>
</body>
</html>