Discuz!NT 2.5 beta下载测试
类库文档在线查看
Comsenz 招聘信息
首届Discuz!NT 模板大赛圆满结束
著名音乐网站SoGua网、分贝网
采用Discuz!NT搭建社区
FIFA Online2官网论坛使用Discuz!NT
游戏城寨论坛使用Discuz!NT搭建
要灌, 就灌有技术含量的水
一起交流学习ASP.net吧!
17套Discuz!NT界面模板提供下载
Discuz!NT后台截图先睹为快
Discuz!NT文档中心
用户整合说明文档
Discuz!NT亮相微软Tech-Ed 2007
Discuz!NT情景搞笑短片抢先看
1/7页1234567 跳转到查看:30678
发新话题 回复该主题

ASP整合Discuz!NT用户登录范例

ASP整合Discuz!NT用户登录范例

相关参考:

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>


最后编辑雪人 最后编辑于 2008-02-19 14:05:04
常见问题请先参看各版块置顶贴, 或参阅文档中心相关内容:  点击查看
提问问题请尽量在标题中说明大概
欢迎提意见建议
为了不耽误您的问题尽快解决,请勿发送短消息

TOP

 

回复:ASP整合Discuz!NT用户登录范例

几点补充:

1 头部的<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>很重要, 设置codepage为65001即设置页面编码为utf-8, 因为Discuz!NT的页面编码为utf-8, 这样传递参数避免出现编码不同导致错误.

2 本整合登录方案的原理是: 先用asp代码接受用户提交的信息, 然后以原数据库的用户表判断是否正确, 如果正确再以假的表单方式提交给Discuz!NT的login.aspx, 同时给login.aspx一个reurl参数, Discuz!NT的login.aspx判断用户如果成功会返回reurl里提供的地址.

3 需要在Discuz!NT管理员后台的"Discuz!NT选项" - "安全控制"里去掉登录的验证码
常见问题请先参看各版块置顶贴, 或参阅文档中心相关内容:  点击查看
提问问题请尽量在标题中说明大概
欢迎提意见建议
为了不耽误您的问题尽快解决,请勿发送短消息

TOP

 

回复: ASP整合Discuz!NT用户登录范例

这个有什么用啊?

类似的东西早有人弄出来过,你也放过一个类似的htm文件。
我想现在大家需要这样一个东西:

用户输入用户名。密码,点击登录后需要写入那些cookies,
这样不需要到论坛的登录界面登录,这个才是最重要的。

TOP

 

回复:ASP整合Discuz!NT用户登录范例

反正你们就是不准备直接提供这个了!
还是要到你这边转来转去。

TOP

 

回复:ASP整合Discuz!NT用户登录范例

楼上的, 你要的不就是等一次跳转写入原有的用户cookie和discuz!nt的cookie吗?这个方法能达到目的。

但asp要生成discuz!nt的cookie太麻烦了,不仅有加密算法还有utf-8转码,其中还要取discuz!nt的几个设置,还有,以后discuz!nt我们一旦更改cookie加密算法或对cookie有调整,用户的整合登录就会作废,因此这个办法相对比较有通用性。
常见问题请先参看各版块置顶贴, 或参阅文档中心相关内容:  点击查看
提问问题请尽量在标题中说明大概
欢迎提意见建议
为了不耽误您的问题尽快解决,请勿发送短消息

TOP

 

回复: ASP整合Discuz!NT用户登录范例



引用:
原帖由 roberto 于 2007-4-18 1620 发表
这个有什么用啊?

类似的东西早有人弄出来过,你也放过一个类似的htm文件。
我想现在大家需要这样一个东西:

用户输入用户名。密码,点击登录后需要写入那些cookies,
这样不需要到论坛的登录界面登录,这个......


现在这种方式不是那种htm,也不需要到论坛登录界面,发言之前先看仔细。
常见问题请先参看各版块置顶贴, 或参阅文档中心相关内容:  点击查看
提问问题请尽量在标题中说明大概
欢迎提意见建议
为了不耽误您的问题尽快解决,请勿发送短消息

TOP

 

回复:ASP整合Discuz!NT用户登录范例

是想要动网 以前的那种登录接口吧

TOP

 

回复:ASP整合Discuz!NT用户登录范例

就是那种 <接口代码 一般为javascirpt>  然后在用户的页面上 就出现一个登录窗口 方面用户调用 asp写cookies也不麻烦啊 可以用.net做一个登录接口 用户验证用户登录信息 如果对 返回给asp页面一个值 如果不对 返回另一个值 不过这样做 不会对原来系统有任何影响 不过 这样用户登录信息 在两个页面传输的时候 就要加密了

打个比方 就想登录QQ邮箱 点击QQ 就可以登录自己的邮箱 不用用户输入信息 其实用户的用户名 和 密码 是包含在URL里面的 雪人可以考虑这个方法的 我的很多项目都是这么做的

这样可以对两个方面的影响减到最少

TOP

 

回复: ASP整合Discuz!NT用户登录范例

刚发的嘛

TOP

 

回复: ASP整合Discuz!NT用户登录范例

晕,楼上的抢了两个位置

TOP

 
1/7页1234567 跳转到
发表新主题 回复该主题