以文本方式查看主题 - ※缘聚久久※ (http://yjjj.com/bbs/index.asp) -- 『 资讯平台 』 (http://yjjj.com/bbs/list.asp?boardid=111) ---- [分享]久久论坛数据清理过程与编程 (http://yjjj.com/bbs/dispbbs.asp?boardid=111&id=46857) |
-- 作者:红色-13 -- 发布时间:2010-1-4 17:41:34 -- [分享]久久论坛数据清理过程与编程 总则
清理工作总算告一段落了.今天进行了最后的清理工作.清理掉无效贴子的相关图片,一直以来总被图片的清理方式困扰.最后由自己分析了数据库搞了个独断专行.
清理思路:在进行过贴子的清理数据库的压缩后.得到了一份现存有效的数据(清理过的数据库),依据数据库中的数据表 Dv_UpFile 的 F_Filename 字段去判断图片是否为有效.再进行现存所有图片的文件列表进行排除,排除掉数据库中的部分.最终得到的结果就是要清理掉的图片.理论上,这样的结果是完美的但论坛是一个众人参与的地方.在历史的数据(被清理掉的)中,如果用户将图片上传到被清理的版块,其结果是上传贴子不存在了,那么用户所上传的图片也将被清理.
编程思路: 确认取得 UploadFile 文件夹下所有子文件夹中的文件清单 , 构建成符合要求的字串 , 与数据库 Dv_UpFile 表 F_Filename 字段格式相同,生成 Xml 文件 , 打开数据库 Dv_UpFile 表,取出 F_Filename 字段,只要存在的数据全部从 Xml 中删除节点.最后依据存留的节点内容删除文件.
知识要点: ASP VbScript 基础, Html 语言基础, Asp 数据流操作, Asp Fso 基本应用, Xml 基本应用.
每天写一些.实在没有精力一次写完. 以下的叙述都是一些基础知识.高手可以无视了. [此贴子已经被作者于2010-1-4 22:39:13编辑过]
|
-- 作者:红色-13 -- 发布时间:2010-1-4 17:41:55 -- ASP VbScript 基础
ASP 是 Active Server Page 的缩写,意为"动态服务器页面".ASP 是微软公司开发的代替 CGI 脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单,方便的编程工具.ASP 的网页文件的格式是 .asp,现在常用于各种动态网站中.例如现在正在使用的 [ 久久论坛 ].
页面中的 VbScript 是基于 Vb 语言的一个分支.如果你已经学习过 Visual Basic 那么就能很轻松的使用 Visual Basic 的语法进行编写 ASP 网页.就算对 Visual Basic 不了解也没有关系.因为 VB 语言非常的简单科学.
看一段页面的源码:
以下内容为程序代码:
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <title>动网论坛清理助手 CopyRight To 缘聚久久</title> 7 <style type="text/css"> 8 body{font-family:Arial, Helvetica, sans-serif; background-color:#666; line-height:1.2em; font-size:0.9em; color:#0F0;} 9 span{padding:0 5px;} 10 Form{ float:left; width:auto;} 11 </style> 12</head> 13<body> 14</body> 15</html>
以上,是一个显示背景色为 #66666 前景色为 #00FF00 的空的网页源码. 在第13行与第14行间输入任何文本则可看到前景色.与 HTML 不同之处在于源码的第1行, <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 使用了尖括号与百分号开头.在<%.....%> 之间的内容就是放在服务器上执行的部分.第1行解释为, 服务器脚本解释器语言( Language ) ,页面编码( CodePage ).可以看出在第1行中,指定了服务器脚本解释器语言为 "VbScript" 而页面编码则使用 "65001" ,需要注意的是 65001 的页面编码配对第5行的 charset=utf-8 ,如果要将页面使用简体中文进行编码,那么就应该将 65001 改为 936 ,而第5行则要改成 charset=Gb2312 .不要然的话,页面在执行的时候将会出现乱码.
可以将以上源码(去掉行号) 保存为网页文件(.Asp 或 .Html)放在服务器上执行试试.如果服务器不支持 ASP 页面,那么你将会看到以文本显示在页面上的<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> .如果没有看到<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>这一行在页面上显示,那么说明服务器支持 Asp 页面.
本地系统的IIS架设不在本文的讨论范围,这里不进行讨论.
既然是 Asp 页面,上边的源码是远远不够的.这里还要进行一些变量的设置,例如页面执行的超时时间;页面所在路径的判断;服务器组件的支持等等.只有了解了服务器的情况才能更好的编写源码用于页面执行.
下边开始丰富源码. 以下内容为程序代码:
1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>动网论坛清理助手 CopyRight To 缘聚久久</title> 6 <style type="text/css"> 7 body{font-family:Arial, Helvetica, sans-serif; background-color:#666; line-height:1.2em; font-size:0.9em; color:#0F0;} 8 span{padding:0 5px;} 9 Form{ float:left; width:auto;} 10 </style> 11 12 <% 13 \'程序名称: 动网论坛垃圾图片清理工具 14 \'运行环境: Asp + Xml + Fso 15 \'程序作者: Www.Yjjj.Com Red-13 16 \'编写时间: 2010年01月03日 17 \'########################### 18 \' 初始设置 19 \'########################### 20 Dim RootPath,WWWRoot,POST_PATH,F_STR,Pic_Folder,XML_Temp,XmlFileName,Act,Temp 21 DIM FSO,F_ITEM,F_FILE,F_FOLDER,FC,FD 22 Server.ScriptTimeout=999999999 \'超时时间设置到最大 23 Response.Buffer =true \'打开页面缓存 24 On Error Resume Next \'ASP 容错 25 RootPath=Server.MapPath(".") \'页面程序根路径 26 WWWRoot=Server.MapPath("/") \'网站程序根路径 27 UpFilePath="UploadFile" \'定义操作文件夹 28 Pic_Folder=RootPath&"\\"&UpFilePath \'图片目录 29 XmlFileName="Pic_Path.Xml" \'定义 Xml 文件名 30 Act="" \'接收参数 31 Act=trim(request("Act")) 32 33 \'########################### 34 \'数据库链接 35 \'########################### 36 DIM CONN,CONNSTR 37 DIM DBPATH 38 DBPATH="./数据库文件夹/数据库文件名称" \'数据库路径 39 connstr="DBQ="+server.mappath(""&DBPATH&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" 40 set conn=server.createobject("ADODB.CONNECTION") 41 if err then 42 err.clear 43 else 44 conn.open connstr 45 end if 46 %> 47 </head> 48 49 <body> 50 </Body> 51 </html>
上边一段源码中,从第12行到第45行处理了几件事情. 注意: 每一行开头带个单引号的 [ \' ] 表示本行被注释, Asp 页面不执行被注释掉的行.要注意的是在 Asp 中的注释符与 Html 中的不同, Asp 总是将单引号 [ \' ] 后的内容全给注释掉,直到键入回车另起一行为止.而 Html 的注释符是成对出现的 " <!-- ***** -->" ,Html 页面会在读到 " <!-- " 时,视为释开始,直接页面读取到注释的闭合符 " -->" 后结束注释. 可见,上边的源码中,第12行开始到第19行.都被页面注释掉了,在这些行中写入了一些页面的基本信息.
20行与21行:Dim RootPath,WWWRoot.................
定义了一些全局变量名称,Asp 页面并不像 Visual Basic 那样严谨,不必遵循先定义后使用的原则可以不定义变量名称直接使用.但做为一个编写人员,还是应该有严谨的编写规范.养成良好的习惯! 变量的定义应该避免一些敏感词,例如:Time,Now,Date,Size,Sub,Class,Function....等,这些字符是被系统保留的.如果定义这些词为变量,将会发生一些不易察觉的错误,大大增加后期调试的难度.同时还应该注意,变量名称不允许使用数字开头,例如: 1Temp,2Str...这类的变量是不合法的.应该改为:Temp1,Str2,....这样,这些是合法变量.
注意:
变量名称不允许被重复定义,也就是一个名称被 Dim 了两次,如果重复定义变量,页面在执行时将会提示 "定义名重复" 的错误.
定义过了变量名,就可以对变量名进行赋值了.等号有着特殊的作用,一方面是判断是否相等,另一方面是将右边的数值,字符串等内容传递给左边. Server.ScriptTimeout=999999999 \'脚本执行超时的时间设置到最大,如果不进行设置的话,一般默认为20分钟.需要注意的是,时间设置的越大占用系统资源越多,直到页面关闭时这些被占用的资源才会被系统回收
注意: 相对路径:指的是由当前位置引申出的路径,如果当前路径为 "D:\\WWWPath\\yjjj\\Bbs" ,那么 "../" 的位置就是 "D:\\WWWPath\\yjjj" 绝对路径:"D:\\WWWPath\\yjjj\\Bbs"就是一个绝对路径.区分在于,绝对路径有盘符.相对路径没有. Server.MapPath() 作用就是取得服务器的绝对路径.因为Fso与XML的文件操作都将使用绝对路径.
[此贴子已经被作者于2010-1-4 22:24:55编辑过]
|
-- 作者:红色-13 -- 发布时间:2010-1-4 17:42:12 -- 霸五层 |
-- 作者:红色-13 -- 发布时间:2010-1-4 17:42:26 -- Asp 数据流操作 |
-- 作者:红色-13 -- 发布时间:2010-1-4 17:42:37 -- Asp Fso 基本应用 |
-- 作者:红色-13 -- 发布时间:2010-1-4 17:42:49 -- Xml 基本应用 |
-- 作者:蒲公英 -- 发布时间:2010-1-4 21:17:02 -- 搬张凳凳,发呆 |
-- 作者:红色-13 -- 发布时间:2010-1-4 22:43:48 -- 发什么呆呀?!... |