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

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

时间:2009-12-03 13:58来源:互联网 作者:UNOVO整理 点击:
近期,长江VS长征做一个项目,需要整合自己程序与动网论坛,做到会员一站式登录。从网上找到一些方法,但没有做成功。现在长江VS长征先介绍自己的方法,然后,再将网上其他整合
  

近期,长江VS长征做一个项目,需要整合自己程序与动网论坛,做到会员一站式登录。从网上找到一些方法,但没有做成功。现在长江VS长征先介绍自己的方法,然后,再将网上其他整合动网论坛8.2版之Cookies方法转载于后。

整合动网论坛8.2版之Cookies方法及难度介绍

要很好的对动网进行整合,就必须能够在全站读得Cookies的值,要读到它首先必须搞懂它 的Cookies设置方式,动网在每次用户登录时都会更新数据库dv_setup里字段Forum_CookiesPath的值,这个值的取得的算法在 login.asp里有,它是一个相对路径,然后获取此站点路径下的相应的Cookies,如username,userclass,因此,你只有论坛的 目录下的代码才能读取客户端论坛的Cookies,如果要在其它的地方读取,怎么办呢?

下面是动网Login.asp 里关于Cookies 的设置算法:

  1. '判断更新cookies目录 
  2.  
  3. Dim cookies_path_s,cookies_path_d,cookies_path 
  4.  
  5. cookies_path_s=split(Request.ServerVariables("PATH_INFO"),"/"
  6.  
  7. cookies_path_d=ubound(cookies_path_s) 
  8.  
  9. cookies_path="/" 
  10.  
  11. For i=1 to cookies_path_d-1 
  12.  
  13.     If not (cookies_path_s(i)="upload" or cookies_path_s(i)="admin"Then cookies_path=cookies_path&cookies_path_s(i)&"/" 
  14.  
  15. Next 
  16.  
  17. If dvbbs.cookiepath<>cookies_path Then 
  18.  
  19.     cookies_path=replace(cookies_path,"'",""
  20.  
  21.     Dvbbs.execute("update dv_setup set Forum_Cookiespath='"&cookies_path&"'"
  22.  
  23.     Dim setupData 
  24.  
  25.     Dvbbs.CacheData(26,0)=cookies_path 
  26.  
  27.     Dvbbs.Name="setup" 
  28.  
  29.     Dvbbs.value=Dvbbs.CacheData 
  30.  
  31. End If 

实现动网cookies全站通用并且退出也是全站通用的三个步骤:

必须修改三个文件:

①打开inc/Dv_ClsMain.asp

寻找     Response.Cookies(Forum_sn).path=cookiepath

应该共有1个

替换为:

Response.Cookies(Forum_sn).path="/"

②     打开login.asp

寻找     Response.Cookies(Dvbbs.Forum_sn).path=Dvbbs.cookiepath

应该共有3个,其中一个是:Response.Cookies(Dvbbs.Forum_sn).path     =     Dvbbs.cookiepath(等号两旁有空格)

替换为:

Response.Cookies(Dvbbs.Forum_sn).path="/"

③     打开logout.asp

寻找     Response.Cookies(Dvbbs.Forum_sn).path=Dvbbs.cookiepath     第26行

应该只有一个

替换为:

Response.Cookies(Dvbbs.Forum_sn).path="/"

上面这几步长江VS长征按照做了,但底下的几步没有实验成功,也许还是没有理解其中道理的原因。

现在长江VS长征将自己的方法表述如下:

因为动网用的是gb2312编码,而我的程序用的是utf-8编码。所以我整合的过程如下:

1.首先,将conn.asp中除以下部分的其程序,放于我的程序中。

  1. <%@ LANGUAGE = "VBScript" CodePage = "936"%> 
  2. Option Explicit 
  3. session.codepage=936 
  4. Response.Buffer = True  
  5. Response.Charset = "GB2312" 

2. 其次,将程序login.asp中的如下如下函数完整地放入我的程序。

  1. Rem 判断用户登录 
  2. Function ChkUserLogin(username,password,mobile,usercookies,ctype) 
  3. 。。。 
  4. end function 

      3.在论坛中,去除了验证码。并且在我的提交页面中,只留下用户名和密码输入。

       4.我的核心如下:

  1. dim BBSUserID 
  2. if request("f_action")="bbslogin" then 
  3.     username=request("username"
  4.     if request("password")="" or username="" then p_frm_message_id=1 
  5.      
  6.     if p_frm_message_id=0 then 
  7.         sql = "select userpassword,truepassword from [Dv_User] where username='"&username&"'" 
  8.         set rs_tmp = Dvbbs.Execute(sql) 
  9.         If rs_tmp.eof and rs_tmp.bof Then 
  10.             p_frm_message_id=2 '用户名不存在
  11.         End If 
  12.         rs_tmp.close 
  13.     end if 
  14.      
  15.     if p_frm_message_id=0 then 
  16.         password=md5(trim(request("password")),16) 
  17.         mobile=trim(Dvbbs.CheckStr(request("passport"))) 
  18.         usercookies=request("CookieDate"
  19.         if ChkUserLogin(username,password,mobile,usercookies,1)=false then 
  20.             BBSLoginFlag=-1 '用户名或密码错等登录失败
  21.         else 
  22.             BBSLoginFlag=1 
  23.         end if 
  24.     end if 
  25. end if 

参考资料:http://www.pczpg.com/cmsjc/dw/20090808/13004.html

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