返回首页
当前位置: 主页 > 开源软件 > 动网论坛 >

整合动网论坛8.2版之Cookies方法收集整理(4)

时间:2009-12-03 13:58来源:互联网 作者:UNOVO整理 点击:
ASP类型个人网站与动网整合非官方方法 个人网站如有会员注册模块+动网论坛的话,那网站要与动网论坛系统整合,实现不同Web系统之间的用户信息同步更
  

ASP类型个人网站与动网整合非官方方法

个人网站如有会员注册模块+动网论坛的话,那网站要与动网论坛系统整合,实现不同Web系统之间的用户信息同步更新、登录等操作就不是件容易的事了,虽然 动网已提供有详细的"动网论坛系统Api接口开发人员指南",但像我这样的菜鸟一时半会可是参详不透的,汗。不甘心,在对其登录、验证等函数进行一番研究 再加以测试后最终竟也小有所成,菜鸟也有菜鸟的办法,哈哈。

一、网站文件结构

wwwroot
  ┝ index.asp
  ┝ CheckUserLogin.asp
  ┕ bbs/

二、整合原理

对 于同步更新实现不困难,整合主要问题就是难在同步登录,所以我们的重点都将放在讨论如何实现同步登录上。我的方法是将主站用户表整合至动网用户表 Dv_User中(免去以后得更新两个库的麻烦),可按需要在Dv_User新增字段,并对bbs/login.asp和bbs/inc /Dv_ClsMain.asp做适当的修改;登录时将表单发至bbs/login.asp进行验证;主站根据动网登录成功后在Session记录的信息 判断是否登录成功,并取得用户资料。

三、新增修改文件

1.index.asp

  1. <html> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  4. <title>个人网站与动网整合(www.mzwu.com)</title> 
  5. </head> 
  6.  
  7. <body> 
  8. <!--#include file="CheckUserLogin.asp" --> 
  9. <
  10. If CheckUserLogin Then 
  11.     Response.write("<a href=""bbs/logout.asp?back=1"">退出登陆</a><p></p>") 
  12.     Response.write("用户名:" & Request.Cookies("username") & "<br>") 
  13.     Response.write("性别:" & Request.Cookies("sex") & "<br>") 
  14.     Response.write("注册时间:" & Request.Cookies("joindate") & "<br>") 
  15.     Response.write("最后登录:" & Request.Cookies("lastlogin") & "<br>") 
  16.     Response.write("登录次数:" & Request.Cookies("userlogins") & "<br>") 
  17.     Response.write("浏览器类型:" & Request.Cookies("browser") & "<br>") 
  18.     Response.write("浏览器版本:" & Request.Cookies("version") & "<br>") 
  19.     Response.write("操作系统:" & Request.Cookies("platform") & "<br>") 
  20. Else 
  21. %> 
  22. <form id="form1" name="form1" method="post" action="bbs/login.asp?action=chk&back=1"> 
  23.   用户名: 
  24.     <input name="username" type="text" id="username" size="10" /> 
  25.     <br /> 
  26.     密  码: 
  27.     <input name="password" type="password" id="password" size="10" /> 
  28.     <input type="submit" name="Submit" value="登录" /> 
  29. </form> 
  30. <
  31. End if 
  32. %> 
  33. <p></p><a href="bbs/">进入论坛</a> 
  34. </body> 
  35. </html> 

2.CheckUserLogin.asp code:

  1. <!--#Include File="bbs/inc/Dv_ClsMain.asp"--> 
  2. <% 
  3. Function CheckUserLogin() 
  4.     Dim Dvbbs,UserSession 
  5.     Const MsxmlVersion=".3.0" 
  6.     Set Dvbbs = New Cls_Forum 
  7.     Set UserSession=Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion) 
  8.     If UserSession.loadxml(Session(Dvbbs.CacheName & "UserID")&""Then 
  9.         If UserSession.documentElement.selectSingleNode("userinfo/@userid").text<>"0" Then 
  10.             '在论坛登录成功 
  11.             CheckUserLogin = True 
  12.             '下边是用户一些信息的获取方法,可自行将其保存于Cookies或Session中便于使用: 
  13.             '用户ID      :  UserSession.documentElement.selectSingleNode("userinfo/@userid").text 
  14.             '用户名      :  UserSession.documentElement.selectSingleNode("userinfo/@username").text 
  15.             '生日        :  UserSession.documentElement.selectSingleNode("userinfo/@userbirthday").text 
  16.             '电子邮箱    :  UserSession.documentElement.selectSingleNode("userinfo/@useremail").text 
  17.             '性别        :  UserSession.documentElement.selectSingleNode("userinfo/@usersex").text  '0为女,1为男 
  18.             '注册时间    :  UserSession.documentElement.selectSingleNode("userinfo/@joindate").text 
  19.             '最后登录    :  UserSession.documentElement.selectSingleNode("userinfo/@lastlogin").text 
  20.             '登录次数    :  UserSession.documentElement.selectSingleNode("userinfo/@userlogins").text 
  21.             '金钱        :  UserSession.documentElement.selectSingleNode("userinfo/@userwealth").text 
  22.             '积分        :  UserSession.documentElement.selectSingleNode("userinfo/@userep").text 
  23.             '魅力        :  UserSession.documentElement.selectSingleNode("userinfo/@usercp").text 
  24.             '最后登录IP  :  UserSession.documentElement.selectSingleNode("userinfo/@userlastip").text 
  25.             '浏览器类型  :  UserSession.documentElement.selectSingleNode("agent/@browser").text 
  26.             '浏览器版本  :  UserSession.documentElement.selectSingleNode("agent/@version").text 
  27.             '操作系统    :  UserSession.documentElement.selectSingleNode("agent/@platform").text 
  28.             '来访IP      :  UserSession.documentElement.selectSingleNode("agent/@ip").text 
  29.             '举例应用: 
  30.             Response.Cookies("username") = UserSession.documentElement.selectSingleNode("userinfo/@username").text 
  31.             Response.Cookies("joindate") = UserSession.documentElement.selectSingleNode("userinfo/@joindate").text 
  32.             If UserSession.documentElement.selectSingleNode("userinfo/@usersex").text="0" Then 
  33.                 Response.Cookies("sex") = "靓妹" 
  34.             Else 
  35.                 Response.Cookies("sex") = "酷哥" 
  36.             End if 
  37.             Response.Cookies("lastlogin") = UserSession.documentElement.selectSingleNode("userinfo/@lastlogin").text 
  38.             Response.Cookies("userlogins") = UserSession.documentElement.selectSingleNode("userinfo/@userlogins").text 
  39.             Response.Cookies("browser") = UserSession.documentElement.selectSingleNode("agent/@browser").text 
  40.             Response.Cookies("version") = UserSession.documentElement.selectSingleNode("agent/@version").text 
  41.             Response.Cookies("platform") = UserSession.documentElement.selectSingleNode("agent/@platform").text 
  42.         Else 
  43.             '访问过论坛尚未登录,为来宾状态 
  44.             CheckUserLogin = False 
  45.         End if 
  46.     Else 
  47.         '未访问过论坛 
  48.         CheckUserLogin = False 
  49.     End if 
  50.     Set UserSession = nothing 
  51.     Set Dvbbs = nothing 
  52. End Function 
  53. %> 

3.bbs/login.asp新增红色部分,使在站点首页登录成功后仍能返回首页:

 

  1.   Dim comeurlname 
  2.     If instr(lcase(request("comeurl")),"reg.asp")>0 or instr(lcase(request("comeurl")),"login.asp")>0 or trim(request("comeurl"))="" Then 
  3.         comeurlname="" 
  4.         comeurl="index.asp" 
  5.     Else 
  6.         comeurl=request("comeurl") 
  7.         comeurlname="<li><a href="&request("comeurl")&">"&request("comeurl")&"</a></li>
  8.     End If 
  9.      
  10.     If request("back")="1" Then 
  11.         Response.Redirect("../index.asp") 
  12.     End If 
  13.  
  14.     Dim TempStr 
  15.     TempStr = template.html(2) 
  16.     'If Dvbbs.Forum_ChanSetting(0)=1 And Dvbbs.Forum_ChanSetting(10)=1 And Dvbbs.Forum_ChanSetting(12)=1 Then 
  17.     '    TempStr = Replace(TempStr,"{$ray_logininfo}",template.html(3)) 
  18.     'Else 
  19.     '    TempStr = Replace(TempStr,"{$ray_logininfo}","") 
  20.     'End If 
  21.     '----------------------------------------------------------------- 
  22.     '系统整合 
  23.     '----------------------------------------------------------------- 
  24.     If DvApi_Enable Then 
  25.         Response.Write DvApi_SaveCookie 
  26.         Response.Flush 
  27.     End If 
  28.     '----------------------------------------------------------------- 
  29.     TempStr = Replace(TempStr,"{$ray_logininfo}","") 
  30.     TempStr = Replace(TempStr,"{$comeurl}",comeurl) 
  31.     TempStr = Replace(TempStr,"{$comeurlinfo}",comeurlname) 
  32.     TempStr = Replace(TempStr,"{$forumname}",Dvbbs.Forum_Info(0)) 
  33.     Response.Write TempStr 
  34.     TempStr="" 
  35. End Function 

4.bbs/logout.asp新增红色部分,使在站点首页点退出登录后仍能返回首页:

  1. '----------------------------------------------------------------- 
  2.    '系统整合 
  3.    '----------------------------------------------------------------- 
  4.    Dim DvApi_Obj,DvApi_SaveCookie,SysKey 
  5.    If DvApi_Enable Then 
  6.        Md5OLD = 1 
  7.        SysKey = Md5(Dvbbs.MemberName&DvApi_SysKey,16) 
  8.        Md5OLD = 0 
  9.        Set DvApi_Obj = New DvApi 
  10.            DvApi_SaveCookie = DvApi_Obj.SetCookie(SysKey,Dvbbs.MemberName,"",""
  11.        Set DvApi_Obj = Nothing 
  12.        Response.Write DvApi_SaveCookie 
  13.        Response.Flush 
  14.    End If 
  15.     
  16.    If request("back")="1" Then 
  17.        Response.Redirect("../index.asp"
  18.    End If 
  19.     
  20.    '----------------------------------------------------------------- 
  21.    'Response.Redirect Dvbbs.Forum_Info(11) 
  22.    response.write"<script language=JavaScript>" 
  23.    response.write"setTimeout(""window.location='"&Dvbbs.Forum_Info(11)&"'"",1000);" 
  24.    response.write"</script>" 

四、动网设置:去掉登录验证码,OK,整合完毕。

五、扩展:

默认Dv_User表中的字段有些时候并不能满足我们的实际需求,我们就需要新增字段对其进行扩展,动手吧:
1.打开Dv_User表新增一文本类型字段info_1
2.bbs/login.asp的ChkUserLogin函数中
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin,lastlogin as cometime , LastLogin as activetime,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,userid as boardid"
修改为:
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin,lastlogin as cometime , LastLogin as activetime,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,userid as boardid,info_1"
3.bbs/inc/Dv_ClsMain.asp的TrueCheckUserLogin函数中
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin as cometime ,LastLogin,LastLogin as activetime,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,userid as boardid"
修改为:
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,UserWidth,UserHeight,JoinDate,LastLogin as cometime ,LastLogin,LastLogin as activetime,UserLogins,Lockuser,Userclass,UserGroupID,UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday,UserMoney,UserTicket,FollowMsgID,Vip_StarTime,Vip_EndTime,userid as boardid,info_1"
4.CheckUserLogin.asp中
Response.Cookies("platform") = UserSession.documentElement.selectSingleNode("agent/@platform").text
后添加
Response.Cookies("info_1") = UserSession.documentElement.selectSingleNode("userinfo/@info_1").text
5.index.asp中
Response.write("操作系统:" & Request.Cookies("platform") & "<br>")
后添加
Response.write("新增:" & Request.Cookies("info_1") & "<br>")
6.OK,圆满完成!

六、后记

本次测试的论坛版本为Version 7.1.0 Sp1,未对其他版本做进行测试,大家有时间都可测下,望告知结果。凌晨五点了,睡觉先...

资料来源:http://www.webjx.com/htmldata/2007-10-04/1191510352.html

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码: