以文本方式查看主题

-  ※缘聚久久※  (http://yjjj.com/bbs/index.asp)
--  『 久坛站务 』  (http://yjjj.com/bbs/list.asp?boardid=112)
----  旧贴剥离与搬迁公示  (http://yjjj.com/bbs/dispbbs.asp?boardid=112&id=45740)

--  作者:流子
--  发布时间:2009-10-30 22:30:39
--  旧贴剥离与搬迁公示

 

久坛自开坛以后,已运行6年有余,数据库也越来越庞大,目前9个分区皆已严重超载,对论坛的运行速度和新数据的录入已造成一定影响。故此,本坛决定对2008年之前的旧数据库进行剥离和搬迁,建立“久久珍藏馆”,一方面方便旧贴的查找,另一方面确保主坛的正常运行。

1. 执行时间暂定于2010年1月1日。此间,论坛将进行一系列测试以确保数据完整安全。

2. 除以下版块外,主坛(www.yjjj.com/bbs)只留存2008年1月1日之后的数据。此前的所有贴子将如数收录在“久久珍藏馆”。

1)“共同走过”记录了久坛历年的重大事件和标志性记忆,主坛将保留所有贴子,不做剥离。

2)“泼墨写意”版收录了大量坛友的原创书画作品,搬迁可能对图片造成影响,因此也将全部保留在主坛。

3)“会员相册”的照片数量不大,且可作大家留念,予以保留。

3. 因馆藏空间有限,旧贴的上传图片将不带入“珍藏馆”,请坛友们及时做好下载、留存(包括头像)。

4. 坛友们对以上内容有任何疑问或建议都请在此跟贴提出。


在此,特别感谢红色-13为“珍藏馆”提供空间和技术支持!


缘聚久久管理团队

2009年10月30日


--  作者:狐说九道
--  发布时间:2009-11-1 10:33:16
--  
感谢流子、红色-13等筒子为论坛做出的努力。
建议:1、是否能限制一个ID上传图片的总量,能反映在控制面板,便于大家及时清除不必要或临时性的图片。同时提倡尽量采用连接形式,毕竟很多人都有自己的博客,就是如何能保证连接顺利,还请13等高手多多指点。
              2、上传的头像,虽然已经控制了发表大小,最好能控制原始大小,因为有些头像的原图会很大,同时也要控制签名档图片的大小。
              3、风云板块是坛子的一个热门板块,每次游戏会留下大量的上传图片,是否有技术可以在多少时间后,这些图片会自动转成低像素的图片?(这条恐怕难实现)

--  作者:顺手牵羊
--  发布时间:2009-11-2 17:21:20
--  

流子你就大胆干吧,俺支持你~


--  作者:红色-13
--  发布时间:2009-11-5 20:12:58
--  
从10月26日起到此时历时10天编写了如下代码。这是一个枯燥的过程,不断的重新思考每一步骤,力求功能全面,操作可靠。其中不断的测试不断的失败……此时,总算是大体上完成了。由于对动网论坛的数据库结构不了解,只能将部分功能写死。匆匆而成,洋洋一千三百行,其中有许多可以改进可以取消的无效代码。公开源码希望有高手能给予斧正。

作用:online 方式清理动网论坛历史数据、自动分析清理数据后的无效图片,垃圾图片、独占方式压缩论坛数据库。
适用:动网论坛 V7-V8 ASP + ACCESS 版。

〈%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%〉
〈%
\'页面载入
\'SESSION("PICTT")=累计DV_BBS表数
Server.ScriptTimeout=999999999                                \'超时时间设置到最大
Response.Buffer =true                                        \'打开页面缓存
On Error Resume Next                                        \'ASP容错
USERNAME="datavip"                                            \'默认用户名
PASSWODR="XXXXX"                                            \'默认密码
PAGENAME="历史数据管理"                                        \'程序名称
COPYRIGHT="CopyRight To Red-13"
URL=Request.ServerVariables("URL")                            \'页面URL
ServerIP=Request.ServerVariables("LOCAL_ADDR")                \'服务器IP
Action=Request("Action")                                    \'提交标签
RootPath=Server.MapPath(".")                                \'网站根路径
WWWRoot=Server.MapPath("/")                                    \'页面程序根路径
serveru=request.servervariables("http_host")&url            \'服务器路径
POSTPASS=TRIM(REQUEST.Form("PASSWODR"))                        \'密码验证
IF POSTPASS〈〉"" THEN
SESSION("WEBPASS")=POSTPASS
END IF
THISPAGE=TRIM(REQUEST("THISPAGE"))                            \'取得图片处理页面页面数
IF IsNumeric(THISPAGE)=FALSE THEN
    THISPAGE=1
END IF
PICDBPATH=TRIM(REQUEST.FORM("PICDBPATH"))                    \'接收SQL字串
DelPicData=TRIM(REQUEST("DelPicData"))                        \'清理数据
DelPicFile=TRIM(REQUEST("DelPicFILE"))                        \'清理文件   
SESSION("INPUTLOG")=TRIM(REQUEST.Form("INPUTLOGH"))            \'用户便签
page=cint(request("page"))                                    \'当前页面
if page="" or page〈=0 then
page=1
end if
TK=trim(cint(request("TK")))                            \'默认选项卡标签
IF TK="" OR TK〈0 THEN
TK=0
END IF
sqlinfo=trim(lcase(request.Form("sqlinfo")))
DBTN=trim(request("DBTN"))
TableName=trim(request("Tablename"))
IF DBTN="" THEN
DBTN=TableName
END IF
DIM F_STR
    \'========================================================================
    \'数据库链接
    \'========================================================================
    DIM CONN,CONNSTR
    DIM DBPATH
    DBPATH="./数据库路径/数据库名称.MDB"                                            \'提交上来的数据库路径
    c+server.mappath(""&DBPATH&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
    set conn=server.createobject("ADODB.CONNECTION")
    if err then
    err.clear
    else
    conn.open connstr
    end if
    %〉
〈!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"〉
〈html xmlns="http://www.w3.org/1999/xhtml"〉
〈head〉
〈meta http-equiv="Content-Type" c /〉
〈title〉〈%=PAGENAME%〉------〈%=SERVERIP%〉〈/title〉
〈style type="text/css"〉
body{font-family:Arial, Helvetica, sans-serif; background-color:#666; line-height:1.2em; font-size:0.9em;}
.TabbedPanels {
    margin: 0px;
    padding: 0px;
    float: left;
    clear: none;
    width: 100%; /* IE Hack to force proper layout when preceded by a paragraph. (hasLayout Bug)*/
}


.TabbedPanelsTabGroup {
    margin: 0px;
    padding: 0px;
}

.TabbedPanelsTab {
    position: relative;
    top: 1px;
    float: left;
    padding: 4px 10px;
    margin: 0px 1px 0px 0px;
    font: bold 0.7em sans-serif;
    background-color: #DDD;
    list-style: none;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #999;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    -moz-user-select: none;
    -khtml-user-select: none;
    cursor: pointer;
}

.TabbedPanelsTabHover {
    background-color: #CCC;
}

.TabbedPanelsTabSelected {
    background-color: #EEE;
    border-bottom: 1px solid #EEE;
}

.TabbedPanelsTab a {
    color: black;
    text-decoration: none;
}

.TabbedPanelsContentGroup {
    clear: both;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #CCC;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    background-color: #EEE;
}

.TabbedPanelsContent {
    font-family:Arial, Helvetica, sans-serif;
    font-size:0.9em;
    color:#0F0;
    background-color:#000;
    padding: 4px;
}


.TabbedPanelsContentVisible {
}


.VTabbedPanels .TabbedPanelsTabGroup {
    float: left;
    width: 10em;
    height: 20em;
    background-color: #EEE;
    position: relative;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #CCC;
}


.VTabbedPanels .TabbedPanelsTab {
    float: none;
    margin: 0px;
    border-top: none;
    border-left: none;
    border-right: none;
}

.VTabbedPanels .TabbedPanelsTabSelected {
    background-color: #EEE;
    border-bottom: solid 1px #999;
}


.VTabbedPanels .TabbedPanelsContentGroup {
    clear: none;
    float: left;
    padding: 0px;
    width: 30em;
    height: 20em;
}
#LOGIN{ padding:15px;margin:auto; margin-TOP:100PX; width:40%; border: solid 1px #999; text-align:center; background-color:#000; color:#0F0; }
#INPUTCLASS{ margin:4PX; padding:0PX 4PX; border:none; background-color:#000; color:#0F0; }
textarea{ width:95%; height:150px; color:#0F0; background-color:#000; border:1px #0F0 solid; overflow-x:hidden; overflow-y:auto; margin:3px;}
A{COLOR: #fff; TEXT-DECORATION: none;}
A:visited {COLOR: #fff;TEXT-DECORATION: none;}
A:active {COLOR: #ffffff; TEXT-DECORATION: none;}
A:hover {    COLOR: #ff9900;    TEXT-DECORATION: underline blink;}
〈/style〉
〈script type="text/javascript"〉
var Spry;
if (!Spry) Spry = {};
if (!Spry.Widget) Spry.Widget = {};
Spry.Widget.TabbedPanels = function(element, opts)
{
    this.element = this.getElement(element);
    this.defaultTab =〈%=TK%〉;
    this.tabSelectedClass = "TabbedPanelsTabSelected";
    this.tabHoverClass = "TabbedPanelsTabHover";
    this.tabFocusedClass = "TabbedPanelsTabFocused";
    this.panelVisibleClass = "TabbedPanelsContentVisible";
    this.focusElement = null;
    this.hasFocus = false;
    this.currentTabIndex = 0;
    this.enableKeyboardNavigation = true;
    this.nextPanelKeyCode = Spry.Widget.TabbedPanels.KEY_RIGHT;
    this.previousPanelKeyCode = Spry.Widget.TabbedPanels.KEY_LEFT;

    Spry.Widget.TabbedPanels.setOptions(this, opts);
    if (typeof (this.defaultTab) == "number")
    {
        if (this.defaultTab 〈 0)
            this.defaultTab = 0;
        else
        {
            var count = this.getTabbedPanelCount();
            if (this.defaultTab 〉= count)
                this.defaultTab = (count 〉 1) ? (count - 1) : 0;

        }

        this.defaultTab = this.getTabs()[this.defaultTab];
    }
    if (this.defaultTab)
        this.defaultTab = this.getElement(this.defaultTab);

    this.attachBehaviors();
};

Spry.Widget.TabbedPanels.prototype.getElement = function(ele)
{
    if (ele && typeof ele == "string")
        return document.getElementById(ele);
    return ele;
};

Spry.Widget.TabbedPanels.prototype.getElementChildren = function(element)
{
    var children = [];
    var child = element.firstChild;
    while (child)
    {
        if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
            children.push(child);
        child = child.nextSibling;
    }
    return children;
};

Spry.Widget.TabbedPanels.prototype.addClassName = function(ele, className)
{
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\\\b" + className + "\\\\b")) != -1))
        return;
    ele.className += (ele.className ? " " : "") + className;
};

Spry.Widget.TabbedPanels.prototype.removeClassName = function(ele, className)
{
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\\\b" + className + "\\\\b")) == -1))
        return;
    ele.className = ele.className.replace(new RegExp("\\\\s*\\\\b" + className + "\\\\b", "g"), "");
};

Spry.Widget.TabbedPanels.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
{
    if (!optionsObj)
        return;
    for (var optionName in optionsObj)
    {
        if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
            continue;
        obj[optionName] = optionsObj[optionName];
    }
};

Spry.Widget.TabbedPanels.prototype.getTabGroup = function()
{
    if (this.element)
    {
        var children = this.getElementChildren(this.element);
        if (children.length)
            return children[0];
    }
    return null;
};

Spry.Widget.TabbedPanels.prototype.getTabs = function()
{
    var tabs = [];
    var tg = this.getTabGroup();
    if (tg)
        tabs = this.getElementChildren(tg);
    return tabs;
};

Spry.Widget.TabbedPanels.prototype.getContentPanelGroup = function()
{
    if (this.element)
    {
        var children = this.getElementChildren(this.element);
        if (children.length 〉 1)
            return children[1];
    }
    return null;
};

Spry.Widget.TabbedPanels.prototype.getContentPanels = function()
{
    var panels = [];
    var pg = this.getContentPanelGroup();
    if (pg)
        panels = this.getElementChildren(pg);
    return panels;
};

Spry.Widget.TabbedPanels.prototype.getIndex = function(ele, arr)
{
    ele = this.getElement(ele);
    if (ele && arr && arr.length)
    {
        for (var i = 0; i 〈 arr.length; i++)
        {
            if (ele == arr[i])
                return i;
        }
    }
    return -1;
};

Spry.Widget.TabbedPanels.prototype.getTabIndex = function(ele)
{
    var i = this.getIndex(ele, this.getTabs());
    if (i 〈 0)
        i = this.getIndex(ele, this.getContentPanels());
    return i;
};

Spry.Widget.TabbedPanels.prototype.getCurrentTabIndex = function()
{
    return this.currentTabIndex;
};

Spry.Widget.TabbedPanels.prototype.getTabbedPanelCount = function(ele)
{
    return Math.min(this.getTabs().length, this.getContentPanels().length);
};

Spry.Widget.TabbedPanels.addEventListener = function(element, eventType, handler, capture)
{
    try
    {
        if (element.addEventListener)
            element.addEventListener(eventType, handler, capture);
        else if (element.attachEvent)
            element.attachEvent("on" + eventType, handler);
    }
    catch (e) {}
};

Spry.Widget.TabbedPanels.prototype.cancelEvent = function(e)
{
    if (e.preventDefault) e.preventDefault();
    else e.returnValue = false;
    if (e.stopPropagation) e.stopPropagation();
    else e.cancelBubble = true;
    return false;
};
Spry.Widget.TabbedPanels.prototype.onTabClick = function(e, tab)
{
    this.showPanel(tab);
    return this.cancelEvent(e);
};

Spry.Widget.TabbedPanels.prototype.onTabMouseOver = function(e, tab)
{
    this.addClassName(tab, this.tabHoverClass);
    return false;
};

Spry.Widget.TabbedPanels.prototype.onTabMouseOut = function(e, tab)
{
    this.removeClassName(tab, this.tabHoverClass);
    return false;
};

Spry.Widget.TabbedPanels.prototype.onTabFocus = function(e, tab)
{
    this.hasFocus = true;
    this.addClassName(tab, this.tabFocusedClass);
    return false;
};

Spry.Widget.TabbedPanels.prototype.onTabBlur = function(e, tab)
{
    this.hasFocus = false;
    this.removeClassName(tab, this.tabFocusedClass);
    return false;
};

Spry.Widget.TabbedPanels.KEY_UP = 38;
Spry.Widget.TabbedPanels.KEY_DOWN = 40;
Spry.Widget.TabbedPanels.KEY_LEFT = 37;
Spry.Widget.TabbedPanels.KEY_RIGHT = 39;



Spry.Widget.TabbedPanels.prototype.onTabKeyDown = function(e, tab)
{
    var key = e.keyCode;
    if (!this.hasFocus || (key != this.previousPanelKeyCode && key != this.nextPanelKeyCode))
        return true;

    var tabs = this.getTabs();
    for (var i =0; i 〈 tabs.length; i++)
        if (tabs[i] == tab)
        {
            var el = false;
            if (key == this.previousPanelKeyCode && i 〉 0)
                el = tabs[i-1];
            else if (key == this.nextPanelKeyCode && i 〈 tabs.length-1)
                el = tabs[i+1];

            if (el)
            {
                this.showPanel(el);
                el.focus();
                break;
            }
        }

    return this.cancelEvent(e);
};

Spry.Widget.TabbedPanels.prototype.preorderTraversal = function(root, func)
{
    var stopTraversal = false;
    if (root)
    {
        stopTraversal = func(root);
        if (root.hasChildNodes())
        {
            var child = root.firstChild;
            while (!stopTraversal && child)
            {
                stopTraversal = this.preorderTraversal(child, func);
                try { child = child.nextSibling; } catch (e) { child = null; }
            }
        }
    }
    return stopTraversal;
};

Spry.Widget.TabbedPanels.prototype.addPanelEventListeners = function(tab, panel)
{
    var self = this;
    Spry.Widget.TabbedPanels.addEventListener(tab, "click", function(e) { return self.onTabClick(e, tab); }, false);
    Spry.Widget.TabbedPanels.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e, tab); }, false);
    Spry.Widget.TabbedPanels.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e, tab); }, false);

    if (this.enableKeyboardNavigation)
    {
        var tabIndexEle = null;
        var tabAnchorEle = null;

        this.preorderTraversal(tab, function(node) {
            if (node.nodeType == 1 /* NODE.ELEMENT_NODE */)
            {
                var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
                if (tabIndexAttr)
                {
                    tabIndexEle = node;
                    return true;
                }
                if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
                    tabAnchorEle = node;
            }
            return false;
        });

        if (tabIndexEle)
            this.focusElement = tabIndexEle;
        else if (tabAnchorEle)
            this.focusElement = tabAnchorEle;

        if (this.focusElement)
        {
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "focus", function(e) { return self.onTabFocus(e, tab); }, false);
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "blur", function(e) { return self.onTabBlur(e, tab); }, false);
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "keydown", function(e) { return self.onTabKeyDown(e, tab); }, false);
        }
    }
};

Spry.Widget.TabbedPanels.prototype.showPanel = function(elementOrIndex)
{
    var tpIndex = -1;
   
    if (typeof elementOrIndex == "number")
        tpIndex = elementOrIndex;
    else // Must be the element for the tab or content panel.
        tpIndex = this.getTabIndex(elementOrIndex);
   
    if (!tpIndex 〈 0 || tpIndex 〉= this.getTabbedPanelCount())
        return;

    var tabs = this.getTabs();
    var panels = this.getContentPanels();

    var numTabbedPanels = Math.max(tabs.length, panels.length);

    for (var i = 0; i 〈 numTabbedPanels; i++)
    {
        if (i != tpIndex)
        {
            if (tabs[i])
                this.removeClassName(tabs[i], this.tabSelectedClass);
            if (panels[i])
            {
                this.removeClassName(panels[i], this.panelVisibleClass);
                panels[i].style.display = "none";
            }
        }
    }

    this.addClassName(tabs[tpIndex], this.tabSelectedClass);
    this.addClassName(panels[tpIndex], this.panelVisibleClass);
    panels[tpIndex].style.display = "block";

    this.currentTabIndex = tpIndex;
};

Spry.Widget.TabbedPanels.prototype.attachBehaviors = function(element)
{
    var tabs = this.getTabs();
    var panels = this.getContentPanels();
    var panelCount = this.getTabbedPanelCount();

    for (var i = 0; i 〈 panelCount; i++)
        this.addPanelEventListeners(tabs[i], panels[i]);

    this.showPanel(this.defaultTab);
};

〈/script〉
〈/head〉

〈body 〉
〈%
IF SESSION("WEBPASS")〈〉PASSWODR THEN
%〉
〈div id="LOGIN"〉
    〈strong〉〈%=pagename%〉〈/strong〉〈Br〉〈br〉
    〈form name="login" action="〈%=url%〉" method="post"〉
    密 码:〈input NAME="PASSWODR" type="password" MAXLENGTH="20" id="INPUTCLASS" style="ime-mode:disabled; border-bottom:#0F0 1px solid;"〉〈input TYPE="Submit" VALUE="登 录" /〉
    〈BR〉〈BR〉〈span style="font-size:7pt;"〉〈%=COPYRIGHT%〉〈/span〉
    〈/form〉
〈/div〉
〈%else%〉
〈div id="TabbedPanels1" class="TabbedPanels"〉
 
  〈ul class="TabbedPanelsTabGroup"〉
 
    〈li class="TabbedPanelsTab" tabindex="0"〉数据管理〈/li〉
    〈li class="TabbedPanelsTab" tabindex="1"〉数据压缩〈/li〉
    〈li class="TabbedPanelsTab" tabindex="2"〉文件处理〈/li〉
   
  〈/ul〉
 
  〈div class="TabbedPanelsContentGroup"〉
    〈div class="TabbedPanelsContent"〉
〈script language="javascript"〉
function pagedefault(){                                         //页面初始提示内容
    if(document.getElementById("inputlog").value==""){
    document.getElementById("inputlog").value="步骤"+"\\r\\n"+"1: 查找 [Dv_Board] 取得版块 boardid ."+"\\r\\n"+"2: 浏览文章表 [Dv_bbs\'X\'] 取得时间字段 DateAndTime ."+"\\r\\n"+"3: 构建SQL语句 DELETE FROM [数据表] WHERE boardid 〈〉 YYY(保留版面ID) AND DateAndTime 〈 #2008/1/1#"+"\\r\\n"+"4: 依步骤3对论坛页面文章统计 [Dv_BestTopic],[Dv_Topic] 进行删除处理."+"\\r\\n"+"5: 建议先进行图片处理腾出空间后再对数据库进行压缩."+"\\r\\n"+"注: 数据表时间字段 DateAndTime"+"\\r\\n"+"剥离时间点:#2008/1/1#";
    }
}
function GetSql(i){                                              //构建SQL语句
    if(DbForm.Temp_TableName.value==""){
        DbForm.Temp_TableName.value="请选择数据表";
        DbForm.DBTN.value="请选择数据表";
    }
    Str = new Array(5); 
    Str[0]= "SELECT * FROM [";
    Str[1]=    "SELECT * FROM [";
    Str[2]= "DELETE FROM [";
    Str[3]= "UPDATE [";
    Str[4]= "INSERT INTO [";
   
    Str2 = new Array(5);
    Str2[0]= "]";
    Str2[1]= "] WHERE ID 〈 100 "
    Str2[2]= "] WHERE ID = 100 ";
    Str2[3]= "] SET USER=\\\'RED13-:special:2:- WHERE ID = 100 ";
    Str2[4]= "](USER,PASS) VALUES(-:special:2:-RED13-:special:2:-,-:special:2:-ADMIN888-:special:2:-)";
   
    if(i〈0){
        DbForm.Temp_SqlStr1.value = "";
        DbForm.Temp_SqlStr2.value = "";
        DbForm.SqlInfo.value = "";
        DbForm.GetLog.value="\\r\\n"+"〈%=now()%〉--请确认输入SQL操作命令语句."+"\\r\\n"+DbForm.GetLog.value;
    }else{
        DbForm.Temp_SqlStr1.value = Str[i];
        DbForm.Temp_SqlStr2.value = Str2[i];
        DbForm.DBTN.value=DbForm.Temp_TableName.value;
        DbForm.Temp_TableName.value = DbForm.Temp_TableName.value;
        DbForm.SqlInfo.value = Str[i]+DbForm.Temp_TableName.value+Str2[i];
    }
   
    var Temp_sqlstr;
   
    if(i==0){
        Temp_sqlstr="完全显示";
    }else if(i==1){
        Temp_sqlstr="显示数据";
    }else if(i==2){
        Temp_sqlstr="删除数据";
    }else if(i==3){
        Temp_sqlstr="修改数据";
    }else if(i==4){
        Temp_sqlstr="添加数据";
    }
    document.getElementById("GetLog").value="〈%=now()%〉--选择了 ( "+Temp_sqlstr+" )."+"\\r\\n"+document.getElementById("GetLog").value;
    DbForm.GetLogH.value=document.getElementById("GetLog").value;
    return true;
}
function GetTable(Table){                                        //构建SQL语句,数据表
    DbForm.Temp_TableName.value=Table;
    if(DbForm.Temp_TableName.value==""){
        DbForm.Temp_TableName.value=="请选择数据表";
        DbForm.DBTN.value=DbForm.Temp_TableName.value;
        DbForm.SqlInfo.value=DbForm.Temp_SqlStr1.value+DbForm.Temp_TableName.value+DbForm.Temp_SqlStr2.value;
        document.getElementById("GetLog").value="〈%=now()%〉--请选择要进行SQL操作的数据表."+"\\r\\n"+document.getElementById("GetLog").value;
    }else{
        DbForm.DBTN.value=DbForm.Temp_TableName.value;
        DbForm.SqlInfo.value=DbForm.Temp_SqlStr1.value+Table+DbForm.Temp_SqlStr2.value;
        if(DbForm.Temp_SqlStr1.value==""){
        document.getElementById("GetLog").value="〈%=now()%〉--您选择了数据表"+Table+"请确认SQL操作方式."+"\\r\\n"+document.getElementById("GetLog").value;
        }else{
        document.getElementById("GetLog").value="〈%=now()%〉--您选择了数据表"+Table+"确认语句无误后点击执行."+"\\r\\n"+document.getElementById("GetLog").value;
        }
    }
    DbForm.GetLogH.value=document.getElementById("GetLog").value;
    return true;
}
function yesok(){
if (confirm("确认要执行此操作吗?一但删除无法恢复!!"))
    if (DbForm.TName.value == "sysconfig")
        {
        alert("该表不允许删除记录!!");
        return false;
        }
    else
   
    return true;
else
    return false;
}
function FullSqlStr(str,pg,tn){
if(str.length〈10){
  alert("请检查SQL语句是否正确!")
  return false;
}
DbForm.GetLogH.value=document.getElementById("GetLog").value;
DbForm.inputlogH.value=document.getElementById("inputlog").value;    //收集操作日记
DataS.inputlogH.value=document.getElementById("inputlog").value;    //收集操作日记
DbForm.SqlInfo.value = str ;
DbForm.Page.value = pg;
DbForm.DBTN.value = tn;

DbForm.submit();
return true;
}

function FullPicSql(sql,tpg,tk,ddc,dfc){                                //图片处理翻页
DataPic.GetLogH.value = document.getElementById("GetLogPic").value;               
DataPic.inputlogH.value = document.getElementById("inputlogPic").value;
if(ddc=="1"){
    DataPic.DelPicData.checked=true    ;
}else{
    DataPic.DelPicData.checked=false;
}
if(dfc=="1"){
    DataPic.DelPicFile.checked=true    ;
}else{
    DataPic.DelPicFile.checked=false;
}

//DataPic.DelPicFile.value = dfc;
DataPic.PICDBPATH.value = sql;
DataPic.THISPAGE.value = tpg;
DataPic.TK.value = tk;
DataPic.submit();
return true;
}

function CheckUP(){                                                //提交确认,暂时存在问题!!
if(DbForm.SqlInfo.value==""){
    if(DbForm.Temp_SqlStr1.value==""){
        alert("请选择执行语句!");
        return false;
    }else if(DbForm.Temp_TableName.value==""){
        alert("请选择执行数据表!");
        return false;
    }else if(DbForm.Temp_TableName.value=="请选择数据表"){
        alert("请选择执行数据表!");
        return false;
    }
}else{
DbForm.GetLogH.value="〈%=now()%〉--执行语句:"+DbForm.SqlInfo.value+"\\r\\n"+document.getElementById("GetLog").value;    //收集操作日记
document.getElementById("inputlog").value=DbForm.inputlogH.value;
DataS.GetLogH.value=document.getElementById("GetLog").value;    //收集操作日记   
DbForm.submit();
return true;
}
}
function DataS2(){                                                //提交确认,暂时存在问题!!
DataS.GetLogH.value="〈%=now()%〉--进行了数据库压缩."+"\\r\\n"+document.getElementById("GetLogD").value;
document.getElementById("GetLogD").value=DataS.GetLogH.value;
DataS.inputlogH.value=document.getElementById("inputlogD").value;    //收集操作日记

if(DataS.DBPATH2.value==""){
    alert("请输入数据库路径!");
    return false;
}else{
    DataS.submit();
return true;
}
}

function DataPicPOST(){
    if(DataPic.DelPicData.checked==true){
        if(DataPic.DelPicFile.checked==true){
            DataPic.GetLogH.value="〈%=now()%〉--进行了删除无效数据与删除无效文件操作."+"\\r\\n"+document.getElementById("GetLogPic").value;
        }else{
            DataPic.GetLogH.value="〈%=now()%〉--进行了删除无效数据操作."+"\\r\\n"+document.getElementById("GetLogPic").value;
        }
    }else if(DataPic.DelPicData.checked==false){
        if(DataPic.DelPicFile.checked==true){
            DataPic.GetLogH.value="〈%=now()%〉--进行了删除无效文件操作."+"\\r\\n"+document.getElementById("GetLogPic").value;
        }else{
            DataPic.GetLogH.value="〈%=now()%〉--进行了[Dv_UpFile]数据表分析."+"\\r\\n"+document.getElementById("GetLogPic").value;
        }
    }
    DataPic.submit();
    return true;
}
function CHECKDATA(){
    if(DataPic.DelPicData.checked==true){
        document.getElementById("GetLogPic").value="〈%=now()%〉--选择删除无效数据!"+"\\r\\n"+document.getElementById("GetLogPic").value;
    }else if(DataPic.DelPicData.checked==false){
        document.getElementById("GetLogPic").value="〈%=now()%〉--取消删除无效数据!"+"\\r\\n"+document.getElementById("GetLogPic").value;
    }
}
function CHECKFILE(){
    if(DataPic.DelPicFile.checked==true){
        document.getElementById("GetLogPic").value="〈%=now()%〉--选择删除无效文件!"+"\\r\\n"+document.getElementById("GetLogPic").value;
    }else if(DataPic.DelPicFile.checked==false){
        document.getElementById("GetLogPic").value="〈%=now()%〉--取消删除无效文件!"+"\\r\\n"+document.getElementById("GetLogPic").value;
    }
}
〈/script〉


〈%
SESSION("GetLog")=TRIM(REQUEST.Form("GETLOGH"))
CALL SQL_MANAGE_PAGE()
%〉
    〈/div〉
    〈div class="TabbedPanelsContent"〉

〈%
CALL DATACLASS()
SSS=SERVER.MapPath(DBPATH)
QQQ=LEFT(SSS,INSTRREV(SSS,"\\"))
CALL FILE_LIST(QQQ,FALSE)
DBPATH2=trim(lcase(request.Form("DBPATH2")))
if DBPATH2〈〉"" and instr(DBPATH2,".mdb")〉0 then
CALL CompactDB(DBPATH2)
end if
DBPATH2=""
%〉   
   
    〈/div〉
    〈div class="TabbedPanelsContent"〉
〈%CALL PIC()%〉
〈%
IF PICDBPATH〈〉"" THEN
CALL checkpic(PICDBPATH,DelPicData,DelPicFile)
END IF
PICDBPATH=""
DelPicData=""
DelPicFile=""
%〉
   
   
    〈/div〉
  〈/div〉
〈/div〉
〈script type="text/javascript"〉
〈!--
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
//--〉
〈/script〉
〈%end if%〉
〈/body〉
〈/html〉

〈%
SUB SQL_MANAGE_PAGE()
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈form name=\'DbForm\' method=\'post\' action=\'"&URL&"\' 〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈input name=\'Page\' value=\'"&page&"\' type=\'hidden\'〉〈input name=\'TK\' value=\'0\' type=\'hidden\'〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈input  name=\'DBTN\' value=\'"&Temp_TableName&"\' type=\'hidden\'〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈input name=\'Temp_SqlStr1\' value=\'"&Temp_SqlStr1&"\' type=\'hidden\'/〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈input name=\'Temp_TableName\' value=\'"&Temp_TableName&"\' type=\'hidden\'/〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈input name=\'Temp_SqlStr2\' value=\'"&Temp_SqlStr2&"\' type=\'hidden\'/〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈textarea name=\'GetLogH\' style=\'display:none;\'〉〈/textarea〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈textarea name=\'inputlogH\' style=\'display:none;\'〉〈/textarea〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈tbody〉〈tr valign=\'top\'〉〈td width=\'60%\'〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈TR〉〈td width=\'100\'〉执行语句:〈/td〉〈td〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈select name=\'StrBtn\' 〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈option value=\'-1\'〉--SQL操作--〈/option〉〈option value=\'0\'〉完全显示〈/option〉〈option value=\'1\'〉显示数据〈/option〉〈option value=\'2\'〉删除数据〈/option〉〈option value=\'3\'〉修改数据〈/option〉〈option value=\'4\'〉添加数据〈/option〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈/select〉    〈input name=\'Submit\' type=\'submit\' value=\'执  行\'/〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈/td〉〈/TR〉〈tr〉〈td width=\'100\'〉数据来源:〈/td〉〈td〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈select name=\'Table\' 〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈option value=\'\'〉--选择数据表--〈/option〉"

Set ADVRS=CONN.OpenSchema(20)
ADVRS.MoveFirst
PICTT=0   
Do While Not ADVRS.Eof
If ADVRS("TABLE_TYPE")="TABLE" then

TName=trim(ADVRS("TABLE_NAME"))
                                                                \'记初始DV_BBS表
IF LEFT(LCASE(TRIM(TName)),6)="dv_bbs" then                        \'累计 DV_BBS 表数.
    IF IsNumeric(MID(TRIM(TNAME),7,LEN(TRIM(TName))))=TRUE THEN
        PICTT=PICTT+1
    END IF
end if
SESSION("PICTT")=PICTT

TEMP_SQLPAGE=TEMP_SQLPAGE&"〈option value=\'"&TName&"\'〉"&TName&"〈/option〉"

End If
ADVRS.MoveNext
Loop

TEMP_SQLPAGE=TEMP_SQLPAGE&"〈/select〉〈/td〉〈/TR〉〈TR〉〈td〉Command:\\>〈/td〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈td〉〈input name=\'SqlInfo\' value=\'"&SqlInfo&"\' id=\'INPUTCLASS\' style=\'width:95%; margin:3px; border-bottom:#F00 1px solid;\'/〉〈/td〉〈/TR〉〈/form〉〈tr〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈td width=\'100\'〉操作日志:〈/td〉〈td〉〈textarea name=\'GetLog\' Id=\'GetLog\' style=\'height:100px; overflow:hidden;\'〉"&SESSION("GETLOG")&"〈/textarea〉〈/td〉"

\'SESSION("GETLOG")=""

TEMP_SQLPAGE=TEMP_SQLPAGE&"〈/tr〉〈/table〉〈/td〉〈td width=\'40%\'〉〈table width=\'100%\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉〈tr valign=\'top\'〉〈td〉临时便签:〈/td〉〈/tr〉〈Tr valign=\'top\'〉〈td〉"
TEMP_SQLPAGE=TEMP_SQLPAGE&"〈textarea name=\'inputlog\' id=\'inputlog\'〉"
SESSION("INPUTLOG")

TEMP_SQLPAGE=TEMP_SQLPAGE&"〈/textarea〉〈/td〉〈/tr〉〈/table〉〈/td〉〈/tr〉〈/tbody〉〈/table〉"
RESPONSE.Write TEMP_SQLPAGE

\'数据库操作
dim str

If sqlinfo〈〉"" and left(sqlinfo,6)="select" then
    SET SRS=SERVER.CreateObject("ADODB.RECORDSET") \'数据流
    SRS.OPEN sqlinfo,CONN,1,1 \'打开
    fn=srs.fields.count
    fr=srs.recordcount
    srs.pagesize=20
    count=srs.pagesize
    pn=srs.pagecount
    if page〈〉"" then
        page=cint(page)
    end if
    if page="" or page=0 or page〈0 then
        page=1
    end if
    if page〉pn then
        page=pn
    end if
    srs.absolutepage=page
    str=str&"〈table width=\'100%\' bgcolor=\'#00FF00\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉〈td〉〈table width=\'100%\' cellpadding=\'0\' cellspacing=\'1\' border=\'0\'〉〈tr height=\'25\' bgcolor=\'#333333\'〉〈td〉X〈/td〉"
        for n=0 to fn-1
            set fld=srs.fields.item(n)                                \'字段名
            str=str&"〈td align=\'center\'〉 "&fld.name&" 〈/td〉"
            set fld=nothing
        next
       
        str=str&"〈/tr〉"
        bgcolor="#333333"
        do while not( srs.eof) and count〉0
       
            count=count-1
           
            if bgcolor="#333333" then
                bgcolor="#666666"
            else
                bgcolor="#333333"
            end if
            str=str&"〈tr bgcolor=\'"&bgcolor&"\'〉"
            str=str&"〈td align=cetner〉〈a href=\'javascript:FullSqlStr(""DELETE FROM ["&DBTN&"]  WHERE ID="&SRS(0)&""",1,"""&DBTN&""");yesok()\' title=\'删除该条记录\'〉〈font face=\'wingdings\' COLOR=\'#ff9900\'〉x〈/font〉〈/a〉〈/td〉" 
            for i=0 to fn-1
                if fr=1 then
                    colinfo=htmlencode(srs(i))
                else
                    colinfo=htmlencode(left(srs(i),50))
                end if
           
                str=str&"〈td bgcolor=\'"&bgcolor&"\'〉"&colinfo&"〈/td〉"
                colinfo=""
            next
           
            str=str&"〈/tr〉"
            srs.movenext
            loop
            response.Write si:si=""
           
            sqlinfo=htmlencode(sqlinfo)
            str=str&"〈tr〉〈td bgcolor=\'"&bgcolor&"\' colspan=\'"&fn+1&"\'〉"&now()&"    执行语句:〈font color=\'#FF9900\'〉"&sqlinfo&"〈/font〉    总记录数: "&FR&" 条&nbsp页码:&nbsp"&Page&"/"&PN
           
            If PN〉1 Then
            str=str&"  〈a href=\'javascript:FullSqlStr("""&Sqlinfo&""",1,"""&DBTN&""")\'〉首页〈/a〉 〈a href=\'javascript:FullSqlStr("""&Sqlinfo&""","&Page-1&","""&DBTN&""")\'〉上一页〈/a〉 "
            If Page〉8 Then:Sp=Page-8:Else:Sp=1:End if
            For i=Sp To Sp+8
            If i〉PN Then Exit For
            If i=Page Then
            str=str&i&" "
            Else
            str=str&"〈a href=\'javascript:FullSqlStr("""&Sqlinfo&""","&i&","""&DBTN&""")\'〉"&i&"〈/a〉 "
            End If
            Next
            str=str&" 〈a href=\'javascript:FullSqlStr("""&Sqlinfo&""","&Page+1&","""&DBTN&""")\'〉下一页〈/a〉 〈a href=\'javascript:FullSqlStr("""&Sqlinfo&""","&PN&","""&DBTN&""")\'〉尾页〈/a〉"
            End If
            str=str&"〈/td〉〈/tr〉〈/table〉〈/td〉〈/table〉"
   
            SRS.Close
            Set SRS=Nothing
           
            Response.Write str:str=""
   
Else   
IF LEFT(SQLINFO,6)="DELETE" OR LEFT(SQLINFO,6)="update" or LEFT(SQLINFO,6)="insert" then
    Conn.EXECUTE(sqlinfo)
   
    str=str&"    执行语句:〈font color=\'#FF9900\'〉"&sqlinfo&"〈/font〉"
end if
    Response.Write str:str=""
End If
END SUB

\'==========================================================================
\'显示数据压缩页面
\'==========================================================================
SUB DATACLASS()
F_STR=F_STR&"〈form name=\'DataS\' method=\'post\' action=\'"&URL&"\' 〉"
F_STR=F_STR&"〈input name=\'Page\' value=\'"&page&"\' type=\'hidden\'〉"
F_STR=F_STR&"〈input name=\'TK\' value=\'1\' type=\'hidden\'〉"
F_STR=F_STR&"〈textarea name=\'GetLogH\' style=\'display:none;\'〉〈/textarea〉"
F_STR=F_STR&"〈textarea name=\'inputlogH\' style=\'display:none;\'〉〈/textarea〉"
F_STR=F_STR&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈tbody〉〈tr valign=\'top\'〉〈td width=\'60%\'〉"
F_STR=F_STR&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈TR〉〈td width=\'100\'〉数据路径:〈/td〉〈td〉"
F_STR=F_STR&"〈input name=\'DBPATH2\' value=\'"&DBPATH&"\' id=\'INPUTCLASS\' style=\'width:75%; margin:3px; border-bottom:#F00 1px solid;\'/〉    〈input name=\'Submit\' type=\'submit\' value=\'执  行\' /〉"
F_STR=F_STR&"〈/td〉〈/TR〉〈/form〉〈tr〉"
F_STR=F_STR&"〈td width=\'100\'〉操作日志:〈/td〉〈td〉〈textarea name=\'GetLog\' id=\'GetLogD\' style=\'height:140px; overflow:hidden;\'〉"&SESSION("GETLOG")&"〈/textarea〉〈/td〉"
F_STR=F_STR&"〈/tr〉〈/table〉〈/td〉〈td width=\'40%\'〉〈table width=\'100%\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉〈tr valign=\'top\'〉〈td〉临时便签:〈/td〉〈/tr〉〈Tr valign=\'top\'〉〈td〉"
F_STR=F_STR&"〈textarea name=\'inputlog\' ID=\'inputlogD\'〉"&SESSION("INPUTLOG")&"〈/textarea〉〈/td〉〈/tr〉〈/table〉〈/td〉〈/tr〉〈/tbody〉〈/table〉"
RESPONSE.Write F_STR
F_STR=""
END SUB

\'==========================================================================
\'显示数据库路径下文件列表
\'==========================================================================
FUNCTION FILE_LIST(FILE_PATH,UPPATH)
DIM FSO,F_ITEM,F_FILE,F_FOLDER,FC,FD
SET FSO = CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")
SET F_ITEM = FSO.GETFOLDER(FILE_PATH)
SET F_FILE = F_ITEM.FILES
SET F_FOLDER = F_ITEM.subfolders
F_STR=F_STR&"〈style〉span{padding:0 5px;}〈/style〉"
F_STR=F_STR&"〈table width=\'100%\' bgcolor=\'#00FF00\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉"
F_STR=F_STR&"〈td〉"
F_STR=F_STR&"〈table width=\'100%\' cellpadding=\'0\' cellspacing=\'1\' border=\'0\'〉"
F_STR=F_STR&"〈tr height=\'25\' bgcolor=\'#333333\' align=\'center\'〉"
F_STR=F_STR&"〈td WIDTH=\'35%\'〉文件名〈/td〉"
F_STR=F_STR&"〈td width=\'10%\'〉文件类型〈/td〉"
F_STR=F_STR&"〈td width=10%\'\'〉文件大小〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉创建时间〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉访问时间〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉修改时间〈/td〉"
F_STR=F_STR&"〈/tr〉"
IF UPPATH=TRUE then
F_STR=F_STR&"〈tr height=\'25\' bgcolor=\'#666666\'〉"
F_STR=F_STR&"〈td WIDTH=\'35%\'〉〈span〉返回上层目录(../)〈/span〉〈/td〉"
F_STR=F_STR&"〈td width=\'10%\'〉 〈/td〉"
F_STR=F_STR&"〈td width=10%\'\'〉 〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉 〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉 〈/td〉"
F_STR=F_STR&"〈td width=\'15%\'〉 〈/td〉"
F_STR=F_STR&"〈/tr〉"
bgcolor="#666666"
ELSE
bgcolor="#333333"
END IF

FOR EACH FD IN F_FOLDER  \'列出文件夹
if bgcolor="#333333" then
    bgcolor="#666666"
else
    bgcolor="#333333"
end if
F_STR=F_STR&"〈TR height=\'25\' bgcolor=\'"&bgcolor&"\'〉"
F_STR=F_STR&"〈TD〉〈span〉"&FD.NAME&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FD.TYPE&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FD.SIZE&" /B〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FD.DateCreated&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&fD.DateLastAccessed&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&fD.DateLastModified&"〈/span〉〈/td〉"
F_STR=F_STR&"〈/TR〉"
NEXT

FOR EACH FC IN F_FILE  \'列出文件
if bgcolor="#333333" then
    bgcolor="#666666"
else
    bgcolor="#333333"
end if
F_STR=F_STR&"〈TR height=\'25\' bgcolor=\'"&bgcolor&"\'〉"
F_STR=F_STR&"〈TD〉〈span〉"&FC.NAME&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FC.TYPE&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FC.SIZE&" /B〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&FC.DateCreated&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&fc.DateLastAccessed&"〈/span〉〈/td〉"
F_STR=F_STR&"〈TD〉〈span〉"&fc.DateLastModified&"〈/span〉〈/td〉"
F_STR=F_STR&"〈/TR〉"
NEXT
F_STR=F_STR&"〈/table〉〈/td〉〈/table〉"
RESPONSE.Write F_STR
F_STR=""
END FUNCTION

\'==========================================================================
\'数据库压缩操作
\'==========================================================================
Sub CompactDB(zip_DBPath)
conn.close
set conn=nothing

RESPONSE.Write "正在对 〈font color=\'#FF9900\'〉"&ZIP_DBPATH&"〈/font〉 进行处理,请稍等...〈BR〉"
ZIP_DBPATH=SERVER.MapPath(ZIP_DBPATH)
Dim Fso2, Engine, strDBPath,JET_3X
strDBPath = Left(ZIP_DBPATH,InstrRev(ZIP_DBPATH,"-:special:1:-))
Set Fso2 = CreateObject("Scripting.FileSystemObject")
If Err.Number 〈〉 0 Then
    Err.Clear()
response.write "当前站点可能不支持FSO组件,压缩操作跳过。"
    Exit Sub
End If
    If Fso2.FileExists(ZIP_DBPATH) Then
RESPONSE.Write "装载 〈font color=\'#FF9900\'〉"&ZIP_DBPATH&"〈/font〉 ,请稍等...〈BR〉"
Set Engine = CreateObject("JRO.JetEngine")
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "数据库名称.MDB", _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "TempDB1.MDB"
Fso2.DELETEFile(strDBPath & "数据库名称.MDB")
Fso2.CopyFile strDBPath & "TempDB1.MDB",ZIP_DBPATH
Fso2.DELETEFile(strDBPath & "TempDB1.MDB")
Set Fso2 = nothing
Set Engine = nothing
        If Err.Number 〈〉 0 Then
            Err.Clear()
RESPONSE.Write "压缩失败,出错原因: 〈font color=\'#FF0000\'〉"& Err.Description&"〈/font〉 ,压缩操作跳过.〈BR〉"       
\'            response.write "〈tr〉〈td〉〈b〉出错原因" & Err.Description & "操作,压缩操作跳过。〈/b〉〈/td〉〈/tr〉"
            Exit Sub
        End If
RESPONSE.Write "数据库: 〈font color=\'#FF9900\'〉"&Replace(ZIP_DBPATH,"-:special:1:-,"\\-:special:1:-)&"〈/font〉 ,压缩成功!〈BR〉"
\'    response.write "〈tr〉〈td〉你的数据库, " & Replace(ZIP_DBPATH,"-:special:1:-,"\\-:special:1:-) & ", 已经压缩成功!〈/td〉〈/tr〉"
    Else
RESPONSE.Write "〈font color=\'#FF0000\'〉数据库名称或是路径不正确!请重试!!〈/font〉〈BR〉"
    End If
End Sub


SUB PIC()
Picstr1=Picstr1&"〈form name=\'DataPic\' method=\'post\' action=\'"&URL&"\' 〉"
Picstr1=Picstr1&"〈input name=\'THISPAGE\' value=\'1\' type=\'hidden\'〉"
Picstr1=Picstr1&"〈input name=\'TK\' value=\'2\' type=\'hidden\'〉"
Picstr1=Picstr1&"〈textarea name=\'GetLogH\' style=\'display:none;\'〉〈/textarea〉"
Picstr1=Picstr1&"〈textarea name=\'inputlogH\' style=\'display:none;\'〉〈/textarea〉"
Picstr1=Picstr1&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈tbody〉〈tr valign=\'top\'〉〈td width=\'60%\'〉"
Picstr1=Picstr1&"〈table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'〉〈TR〉〈td width=\'100\'〉分析数据:〈/td〉〈td〉"
Picstr1=Picstr1&"〈input value=\'SELECT * FROM [DV_UPFILE] \' id=\'INPUTCLASS\' style=\'width:75%; margin:3px; border-bottom:#F00 1px solid;\' disabled/〉〈input name=\'PICDBPATH\' value=\'SELECT * FROM [DV_UPFILE] \' id=\'INPUTCLASS\' style=\'width:75%; margin:3px; border-bottom:#F00 1px solid; display:none;\'/〉    〈input name=\'Submit\' type=\'submit\' value=\'执  行\' /〉"
Picstr1=Picstr1&"〈/td〉〈/TR〉〈tr〉〈TD colspan=\'2\'〉  〈input name=\'DelPicData\' type=\'checkbox\' value=\'1\' 〉删除数据         〈input name=\'DelPicFile\' type=\'checkbox\' value=\'1\' 〉删除无效文件〈/TD〉〈/TR〉〈/form〉〈tr〉"
Picstr1=Picstr1&"〈td width=\'100\'〉操作日志:〈/td〉〈td〉〈textarea name=\'GetLog\' id=\'GetLogPic\' style=\'height:140px; overflow:hidden;\'〉"&SESSION("GETLOG")&"〈/textarea〉〈/td〉"
Picstr1=Picstr1&"〈/tr〉〈/table〉〈/td〉〈td width=\'40%\'〉〈table width=\'100%\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉〈tr valign=\'top\'〉〈td〉临时便签:〈/td〉〈/tr〉〈Tr valign=\'top\'〉〈td〉"
Picstr1=Picstr1&"〈textarea name=\'inputlog\' ID=\'inputlogPic\'〉"&SESSION("INPUTLOG")&"〈/textarea〉〈/td〉〈/tr〉〈/table〉〈/td〉〈/tr〉〈/tbody〉〈/table〉"
response.Write picstr1
end sub
FUNCTION checkpic(SQLDATE,DELDATA,DELFILE)
\'〈!--删除图片部分--〉
PICstr=PICstr&"〈table width=\'100%\' bgcolor=\'#00FF00\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'〉"
PICstr=PICstr&"〈td〉"
PICstr=PICstr&"〈table width=\'100%\' cellpadding=\'0\' cellspacing=\'1\' border=\'0\'〉"
PICstr=PICstr&"〈tr height=\'25\'〉"
PICstr=PICstr&"〈td align=\'center\' width=\'5%\' bgcolor=\'#333333\'〉〈B〉 ID 〈/B〉〈/td〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'5%\' bgcolor=\'#333333\'〉〈B〉ROOTID〈/B〉〈/TD〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'5%\' bgcolor=\'#333333\'〉〈B〉帖子ID〈/B〉〈/td〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'10%\' bgcolor=\'#333333\'〉〈B〉所在版块〈/B〉〈/td〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'15%\' bgcolor=\'#333333\'〉〈B〉上传人〈/B〉〈/td〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'30%\' bgcolor=\'#333333\'〉〈B〉文件名〈/B〉〈/TD〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'10%\' bgcolor=\'#333333\'〉〈B〉数据有效性〈/B〉〈/TD〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'10%\' bgcolor=\'#333333\'〉〈B〉数据删除〈/B〉〈/TD〉"
PICstr=PICstr&"〈TD align=\'center\' width=\'10%\' bgcolor=\'#333333\'〉〈B〉文件删除〈/B〉〈/TD〉"
PICstr=PICstr&"〈/tr〉"
response.Write picstr
picstr=""

DIM DRS,DELSQL
    SET DRS=SERVER.CreateObject("ADODB.RECORDSET") \'数据流
    DRS.OPEN SQLDATE,CONN,1,1 \'打开
    IF DRS.BOF AND DRS.EOF THEN
    RESPONSE.Write "没有找到数据!!"
    ELSE
    bgcolor="#666666"
    \'分页
    ALL_NUM=DRS.RECORDCOUNT
    MAXITEM=100                                    \'为避免服务器负担过重,建议将值控制在100以内
    DRS.PAGESIZE=MAXITEM
    IF ALL_NUM MOD MAXITEM = 0 THEN             \'分页数
        ALLPAGE = ALL_NUM \\ MAXITEM
    ELSE
        ALLPAGE = ALL_NUM \\ MAXITEM + 1
    end if
    IF THISPAGE〈〉"" THEN
        THISPAGE=CINT(THISPAGE)
    END IF
    IF THISPAGE〈=0 THEN
        THISPAGE=1
    ELSEIF THISPAGE 〉 ALLPAGE THEN
        THISPAGE=ALLPAGE
    END IF
    DRS.ABSOLUTEPAGE = THISPAGE

    X=0
    DO WHILE NOT DRS.EOF            \'显示所有数据
   
    if bgcolor="#333333" then
    bgcolor="#666666"
    else
    bgcolor="#333333"
    end if

    Response.Write "〈TR height=\'25\'〉"
    response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&DRS("F_ID")&"〈/td〉"
        IF ISNULL(TRIM(DRS("F_AnnounceID")))=TRUE THEN                                    \'上传文件归档字段为空(一般为签名或是头像 帖子号|主题号 )
        response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉 〈/td〉"
        response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉 〈/td〉"
        ELSE
            IF INSTR(DRS("F_AnnounceID"),"|")〉0 THEN
            TEMP_FAID=Split(DRS("F_AnnounceID"),"|")
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&TEMP_FAID(0)&"〈/td〉"
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉〈font color=\'#FF9900\'〉"&TEMP_FAID(1)&"〈/font〉〈/td〉"
            END IF
        END IF
            response.Write "〈td ALIGN=\'CENTER\' bgcolor=\'"&bgcolor&"\'〉"&BORD(DRS("F_BoardID"))&"〈/td〉"
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&DRS("F_Username")&"〈/td〉"
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&DRS("F_Filename")&"〈/td〉"
        IF INSTR(DRS("F_AnnounceID"),"|")〉0 THEN
        TEMP_FAID2=Split(DRS("F_AnnounceID"),"|")
            PICMOD=CONTENT(TEMP_FAID2(0),TEMP_FAID2(1))                                    \'取上传文件有效性
            IF DelPicFile="1" AND (PICMOD="无效数据" or PICMOD="无效贴子ID值") THEN
                temp_picph="./UploadFile/"&trim(DRS("F_Filename"))
                DF=DPF(temp_picph)
                temp_picph=""               
            ELSE
                DF="未处理"
            END IF
            IF DelPicData="1" AND (PICMOD="无效数据" or PICMOD="无效贴子ID值") THEN
                DD=DPD(DRS("F_ID"))
            ELSE
                DD="未处理"
            END IF
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&CONTENT(TEMP_FAID2(0),TEMP_FAID2(1))&"〈/td〉"   
        else
        DF=DPF(temp_picph)
        DD=DPD(DRS("F_ID"))
            response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉垃圾数据〈/td〉"
        end if
        response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&DD&"〈/td〉"
        response.Write "〈td  bgcolor=\'"&bgcolor&"\'〉"&DF&"〈/td〉"
        DD=""
        DF=""
        PICMOD=""
    Response.Write "〈/TR〉"
    X=X+1
    IF X〉=MAXITEM THEN EXIT DO
    DRS.MOVENEXT
   
    LOOP
   
    DRS.CLOSE
    SET DRS=NOTHING

            PICstr=PICstr&"〈tr〉〈td bgcolor=\'"&bgcolor&"\' colspan=\'9\'〉"&now()&"    执行语句:〈font color=\'#FF9900\'〉查询文章图片数据有效性〈/font〉    总记录数: "&ALL_NUM&" 条&nbsp页码:&nbsp"&THISPAGE&"/"&ALLPAGE
           
            If ALLPAGE〉1 Then
            PICstr=PICstr&"  〈a href=\'javascript:FullPicSql("""&SQLDATE&""",""1"","""&TK&""","""&DelPicData&""","""&DelPicFile&""")\'〉首页〈/a〉 〈a href=\'javascript:FullPicSql("""&SQLDATE&""","&THISPAGE-1&","""&TK&""","""&DelPicData&""","""&DelPicFile&""")\'〉上一页〈/a〉 "
            If THISPAGE〉8 Then:SpAGE=THISPAGE-8:Else:SpAGE=1:End if
            For Y=SpAGE To SpAGE+8
            If Y〉ALLPAGE Then Exit For
            If Y=THISPAGE Then
            PICstr=PICstr&Y&" "
            Else
            PICstr=PICstr&"〈a href=\'javascript:FullPicSql("""&SQLDATE&""","&Y&","""&TK&""","""&DelPicData&""","""&DelPicFile&""")\'〉"&Y&"〈/a〉 "
            End If
            Next
            PICstr=PICstr&" 〈a href=\'javascript:FullPicSql("""&SQLDATE&""","&THISPAGE+1&","""&TK&""","""&DelPicData&""","""&DelPicFile&""")\'〉下一页〈/a〉 〈a href=\'javascript:FullPicSql("""&SQLDATE&""","&ALLPAGE&","""&TK&""","""&DelPicData&""","""&DelPicFile&""")\'〉尾页〈/a〉"
            End If
            PICstr=PICstr&"〈/td〉〈/tr〉〈/table〉〈/td〉〈/table〉"
            THISPAGE=""
END IF
RESPONSE.Write PICstr
PICstr=""
END FUNCTION

function CONTENT(rootid,annid)
FOR I=1 TO CINT(SESSION("PICTT"))
if isnumeric(rootid)=true and isnumeric(annid)=true then
CSQL="SELECT * FROM [DV_BBS"&I&"] WHERE AnnounceID = "&annid&" and rootid="&rootid&" "
    \'CSQL="SELECT * FROM [DV_BBS"&I&"] WHERE instr(AnnounceID,\'"&xid&"\')〉0"
    IF INDATA(CSQL)=1 THEN
    C
    EXIT FOR
    ELSE
    C
    END IF
else
c
exit for
end if
NEXT
END FUNCTION

FUNCTION INDATA(CSQL)
set crs=SERVER.CreateObject("ADODB.RECORDSET") \'数据流
CRS.OPEN CSQL,CONN,1,1
if not (crs.bof and crs.eof) then
INDATA=1
else
INDATA=2
end if
CRS.CLOSE
SET CRS=NOTHING
end function

FUNCTION BORD(ID)
\'================================================
\'作用:显示版块名
\'返回:返回版块名
\'================================================
BORDSQL="SELECT * FROM Dv_Board WHERE  boardid="&ID&""
set BORDRS=SERVER.CreateObject("ADODB.RECORDSET") \'数据流
BORDRS.OPEN BORDSQL,CONN,1,1
if not (BORDRS.bof and BORDRS.eof) then
BORD=BORDRS("BoardType")
else
BORD="--ID[ "&ID&" ]失效--"
end if
BORDRS.CLOSE
SET BORDRS=NOTHING
end function

\'删除数据
FUNCTION DPD(DPDID)

IF ISNUMERIC(DPDID)=TRUE THEN
    SQLL="DELETE FROM [DV_UPFILE] WHERE F_ID="&DPDID
    CONN.EXECUTE(SQLL)
    DPD="数据删除"
ELSE
    DPD="未能处理"
END IF

END FUNCTION

FUNCTION DPF(DPFID)
DIM FSO3
IF DPFID〈〉"" THEN
    IF INSTR(DPFID,"./UploadFile")〉0 THEN
    DPFID=SERVER.MapPath(DPFID)
        Set FSO3 = CreateObject("Scripting.FileSystemObject")
        If Err.Number 〈〉 0 Then
            Err.Clear()
            DPF="FSO组件无效"
            Exit FUNCTION
        End If
        If FSO3.FileExists(DPFID) Then
            FSO3.DELETEFile(DPFID)
            DPF="图片删除成功"
        ELSE
            DPF="图片不存在"
        END IF
    ELSE
        DPF="路径错误"
    END IF
ELSE
    DPF="未找到路径"
END IF
SET FSO3=NOTHING
END FUNCTION
Function HTMLEncode(S)
  if not isnull(S) then
    S = replace(S, "〉", ">")
    S = replace(S, "〈", "<")
    S = replace(S, CHR(39), "'")
    S = replace(S, CHR(34), """)
    S = replace(S, CHR(20), " ")
    HTMLEncode = S
  end if
End Function
%〉

--  作者:红色-13
--  发布时间:2009-11-5 20:29:35
--  
 工具界面
A:登录
图片点击可在新窗口打开查看

B:数据库管理
图片点击可在新窗口打开查看

C:数据库压缩
图片点击可在新窗口打开查看

D:文件处理
图片点击可在新窗口打开查看

--  作者:流子
--  发布时间:2009-11-6 23:04:18
--  

13,你那一千三百行字生生要把我晕S啊?
--  作者:流子
--  发布时间:2009-11-6 23:52:49
--  
以下是引用狐说九道在2009-11-1 10:33:16的发言:
感谢流子、红色-13等筒子为论坛做出的努力。
建议:1、是否能限制一个ID上传图片的总量,能反映在控制面板,便于大家及时清除不必要或临时性的图片。同时提倡尽量采用连接形式,毕竟很多人都有自己的博客,就是如何能保证连接顺利,还请13等高手多多指点。
              2、上传的头像,虽然已经控制了发表大小,最好能控制原始大小,因为有些头像的原图会很大,同时也要控制签名档图片的大小。
              3、风云板块是坛子的一个热门板块,每次游戏会留下大量的上传图片,是否有技术可以在多少时间后,这些图片会自动转成低像素的图片?(这条恐怕难实现)


技术方面,一笑、13来回答。
上传图片的问题,有意借鉴其它论坛的作法,定期整理(如二年或三年清理一次)


--  作者:红色-13
--  发布时间:2009-11-7 0:07:59
--  
以下是引用狐说九道在2009-11-1 10:33:16的发言:
感谢流子、红色-13等筒子为论坛做出的努力。
建议:1、是否能限制一个ID上传图片的总量,能反映在控制面板,便于大家及时清除不必要或临时性的图片。同时提倡尽量采用连接形式,毕竟很多人都有自己的博客,就是如何能保证连接顺利,还请13等高手多多指点。
              2、上传的头像,虽然已经控制了发表大小,最好能控制原始大小,因为有些头像的原图会很大,同时也要控制签名档图片的大小。
              3、风云板块是坛子的一个热门板块,每次游戏会留下大量的上传图片,是否有技术可以在多少时间后,这些图片会自动转成低像素的图片?(这条恐怕难实现)

第一点:限制每ID上传总量看似可行,其实不然.例如A用户,上传达到上限后,他完全可以重新注册一个新的帐号.重新上传.至于保持站外的链接有效性,像百度图片那样的,基本没什么戏.做了防盗链的.呵.限制是在别人网站上也不太可能实现.

第二点:没有什么好说的.

第三点:我落实过9坛的服务器的组件支持,ASPJPG组件是可用的.但使用这个组件会大大的消耗服务器的可用资源(内存占用.CPU占用).处理起来,不是技术上的事.而且,一段时间清理一次,让ASP页面在没有人为干预的情况下自动进行处理,貌似也不太可能.就算人为干预,例如定期管理员进行一次图片压缩处理.服务器在处理图片时也扛不住资源消耗.但这第三条建议值得我去思考试行.拿小本本记下来.

 

流子,那千行代码,我估计了一下,可以重建结构,,800行左右能搞的定.哈,,看的懂的自然能看的懂.

 


--  作者:顺手牵羊
--  发布时间:2009-11-16 21:18:36
--  

楼上几位辛苦了,俺写慰问信去喽~~~~~~~~``


--  作者:香灵儿
--  发布时间:2009-11-20 21:42:42
--  
灰常感谢小流子和13同志,好同志啊,我都有点想法了图片点击可在新窗口打开查看