以文本方式查看主题

-  ※缘聚久久※  (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"%>

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分钟.需要注意的是,时间设置的越大占用系统资源越多,直到页面关闭时这些被占用的资源才会被系统回收
Response.Buffer =true                             \'打开页面缓存,与上一行类似将这里的 True 改为 False 的话,页面每次都将从服务器上重新下载回本地,这里的设置视情况需要而定.一般在登录页将此处设置为 False 强制让服务器重新执行本页再将执行结果发送到本地计算机.如果为 True 时服务器将会从内存中读出执行结果直接发送给客户端(浏览者).设置为 False 时的好处是每一次刷新页面都将得到最新的结果.但服务器的内存开销加大.
On Error Resume Next                             \'ASP 容错,本行的意思为页面在执行错误时,忽视错误继续执行下一条语句.如果注释掉本行.页面将中断在第一个错误处.(调试时请先注释掉本行,便与跟踪页面错误.)
RootPath=Server.MapPath(".")                  \'页面程序根路径,取得当前页面在服务器上的绝对路径.*1
WWWRoot=Server.MapPath("/")               \'网站程序根路径,取得当前网站在服务器上的绝对路径.*2
UpFilePath="UploadFile"                            \'定义操作文件夹,将右边的 UploadFile 字符串赋值给左边的变量 UpFilePath
Pic_Folder=RootPath&"\\"&UpFilePath          \'图片目录,在取得路径后使用 & 符号串上 UpFilePath 的值,并赋值给 Pic_Folder 变量. 假设:RootPath 的值为 "D:\\WWWPath\\yjjj\\Bbs" 在执行本句后,Pic_Folder 的值就变成 D:\\WWWPath\\yjjj\\Bbs\\UploadFile
XmlFileName="Pic_Path.Xml"                     \'定义 Xml 文件名,设定一个Pic_path.Xml 的文件名,后边将会使用 XmlFileName 变量做为文件名称.
Act=""                                                    \'接收参数,初始化 Act 变量的值.设定为空,什么都没有.
Act=trim(request("Act"))                          \'通过页面的提交来取得 Act 的值. Trim() 是一个 Asp 函数,作用是去掉内容中头尾的空格.Request("KEY") 也是 Asp 函数,作用是取得页面提交关键字"KEY"中的内容

 

注意:

相对路径:指的是由当前位置引申出的路径,如果当前路径为 "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
--  
发什么呆呀?!...图片点击可在新窗口打开查看