动网论坛7.1彻底研究

文件名:Dv_ClsMain.asp
该文件是动网非常经典的部分,它被包含在动网论坛几乎所有的程序中。
主要功能:
1、定义Cls_Forum类
2、定义cls_Templates类
3、定义cls_UserOnlne类

分析:
1、定义Cls_Forum类
该类定义了非常多的共有和私有变量、属性以及过程和函数。直接分析变量是种痛苦的事情。下面就分别从过程、函数

、属性作为切入点进行分析。复杂非常,作好心理准备。

Class_Initialize,顾名思义,初始化Cls_Forum类(实际上是个构造函数,在类被实例化的时候首先自动执行),通过

设置或读取初始化变量
首先,判断客户端是否仍连接在服务器上,如果已经断开,没必要进行下面的任何操作:
If Not Response.IsClientConnected Then Response.End

IsUserPermissionOnly:

IsUserPermissionAll:

ShowErrType:错误信息显示模式,在showerr.asp中得到具体应用,并且可以通过Dv_ClsMain.asp的ErrType属性进行
设置

savelog:设置为1的时候会记录攻击或错误错信息。在Dv_ClsMain.asp中得到具体应用。

SqlQueryNum:数据库查询次数

Reloadtime:共有变量,缓存过期时间,这里是28800

CacheName :缓存组的总名称,这里是

Lcase(Replace(Replace(Replace(Server.MapPath("index.asp"),"index.asp",""),":",""),"//",""))

IsTopTable:

Forum_sn :
VipGroupUser:是否VIP组成员组
Vipuser = False :是否是VIP会员

Boardmaster = False :是否是版主

Superboardmaster = False:

Master = False:

FoundIsChallenge = False:

FoundUser = False

BoardID = Request("BoardID") :获取传进的版面ID

如果直接进入的是首页或其他情况下,当然不会传入BoardID了,所以:
If IsNumeric(BoardID) = 0 or BoardID = "" Then BoardID = 0

如果传入的BoardID是数字则(在这种情况下,Request("BoardID")是字符串,所以):
BoardID = Clng(BoardID)

然后读取cookie:
MemberName = checkStr(Trim(Request.Cookies(Forum_sn)("username"))):用户名(checkStr函数过滤单引号)
MemberWord = checkStr(Trim(Request.Cookies(Forum_sn)("password"))):密码
UserHidden = Trim(Request.Cookies(Forum_sn)("userhidden")):隐身属性(1-隐身,2-正常)
UserID = Trim(Request.Cookies(Forum_sn)("UserID")):用户ID

如果隐身属性为空为字符串“0”则说明隐身属性无效,重新设置:
If IsNumeric(UserHidden) = 0 or Userhidden = "" Then UserHidden = 2

如果用户ID为空或为字符串“0”则说明用户未登陆或已超时,所以:
If IsNumeric(UserID) = 0 Or UserID="" Then UserID=0

然后处理一下UserID:
UserID = Clng(UserID)

获取真实IP:
UserTrueIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserTrueIP = "" Then UserTrueIP = Request.ServerVariables("REMOTE_ADDR")
UserTrueIP = CheckStr(UserTrueIP)

获取脚本路径:
Dim Tmpstr
Tmpstr = Request.ServerVariables("PATH_INFO")
Tmpstr = Split(Tmpstr,"/")
ScriptName = Lcase(Tmpstr(UBound(Tmpstr)))
ScriptFolder = Lcase(Tmpstr(UBound(Tmpstr)-1)) & "/"
PATH_INFO服务器变量客户端提供的额外路径信息。可以使用这些虚拟路径和 PATH_INFO 服务器变量访问脚本。

获取用户等级:
MemberClass = checkStr(Request.Cookies(Forum_sn)("userclass"))

Page_Admin=False :该变量用的地方有点多,待总结

模拟HTML部分:略


class_terminate:在类卸载时触发该函数(析构函数)
释放缓存:
If NodeUpdate Then
Application.lock
Set Application(CacheName&"_Boradlist")=BoardXML.cloneNode(True)
Application.unlock
End If
释放数据集和数据库连接对象,以及临时对象BoardXML:
Set BoardXML = Nothing
If IsObject(Conn) Then Conn.Close : Set Conn = Nothing
If IsObject(Plus_Conn) Then Plus_Conn.Close : Set Plus_Conn = Nothing


Name属性: 定义缓存对象名称,只写属性
value属性: 读取和写入缓存数据
ObjIsEmpty()函数:判断当前缓存是否过期
DelCahe(MyCaheName)方法:手工删除一个缓存对象,参数是缓存对象的名称。

 
动网ASP8.3版本在ASP8.2版本基础上增加的功能列表: 1.用户注册IP记录(包含IP注册查询功能) 2.管理员可以发iframe标签功能(管理员可以发布iframe及javascript帖子及显示) 3.网站优化SEO(后台有开关控制(开启采用新的seo;关闭保留以前)) 4.网站关键词禁止提交功能(后台有开关控制(含有后台设置的关键词不允许提交)) 注:根据目前网络环境管理形式而专门开发的功能 5.全站快速开启除管理员及版主以外的审核功能,开启此功能后,批量设置的审核无效 6.批量更新某一版块的高级设置的一项属性功能 7.增加系统首页四格调用 8.文件比较功能 9.精华帖印章(精华帖显示印章) 10.增加审核功能(1.单用户需要审核 2.用户组需要审核功能) 11.防垃圾注册(设置验证码) 12.只看该用户(使用该功能,可在帖子中查看指定用户的发帖和回帖) 13.帖子审核通过更新功能(用户审核通过后将更新用户的最后发帖时间和dv_board表) 14.后台基本设置非法参数判断 15.批量改一个或多个用户组的个别属性 16.下载扣分功能优化 17.论坛相册功能 18.首右右栏插件 19.上传mp3等自动播放功能 20.优化后台短信群发功能(只插入一条数据,用户登录插入用户短信数据) 21.记录最后五个IP地址功能(配合网络环境监督检查) 22.复制帖子地址功能(方便用户复制喜欢的网址送给朋友) 23.快钱在线支付系统(直接在线充值金币) 动网ASP8.3在ASP8.2基础上修改更新的功能列表: 1.统一论坛说明(积分=经验 改成 全部是积分 财富=金钱 改成 全部是金钱) 2.自定义权限错误的更新(更新数据库结构) 3.数据库兼容问题(兼容SQL2000,2005,2008) 4.附件上传表(将announceid和topicid分开存储方便站长调用) 5.搜索功能优化(搜索速度优化) 6.帖子浏览及主题浏览分页加强功能,更新了存储过程让浏览显示速度更快(支持千万级数据库快速分页) 7.金币帖转换成普通帖功能(错发金币帖的用户选择设置) 8.获赠金币帖隐藏输入金币数量(BUG修复) 9.去掉首页导航菜单(当版块较多时,首页的导航载入较慢,去掉首页的导航可有效解决该问题) 10.首页调用复制功能(首页调用版块需增加时,点击复制,可直接建立与之前已设置成功的调用版块,对此进行再次编辑即可) 11.首页右侧采用后台开关形式 删除的功能: 1.帖子评论删除 2.个人主页删除 3.圈子功能删除 4.系统魅力删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值