欢迎来到福编程网,本站提供各种互联网专业知识!

asp简单的ajax留言板(采用三层模式)

发布时间:2006-10-10 作者: 来源:转载
好久没有写过asp了,这回写个留言板还真觉得有点难度,竞然写了整整一天,哈哈.就只有留言其它的都什么也没写,采用三层结构(不知道算不算,本来对三层的概念很糊涂)演示www.zj55.com的留言板,希望各位大哥大姐如果发现有漏洞的话请在这里告诉我,千万不要黑我的网

好久没有写过asp了,这回写个留言板还真觉得有点难度,竞然写了整整一天,哈哈.
就只有留言其它的都什么也没写,采用三层结构(不知道算不算,本来对三层的概念很糊涂)

演示www.zj55.com的留言板,希望各位大哥大姐如果发现有漏洞的话请在这里告诉我,千万不要黑我的网站,在这里小弟先谢过了.

index.asp
<%@ codepage=65001%>
<%
option explicit
%>
<% Response.Charset="utf-8"%>
<% Session.CodePage=65001 %>





<%
Dim mybll
Dim myList
Set mybll = new BLL_Guest
Select Case Request("tCMD")
Case "SAVE"
mybll.Insert()
Case "DEL"
mybll.Delete()
End Select
myList = mybll.FindByPage()
%>

客户留言








<%=myList%>

BLL_Guest.asp
<%
'///


'/// 摘要说明。
'///

Class BLL_Guest

Private mycom,mymod,mydal

Private LI,UL

Private DEL

'获取信息
Public Sub GetGuest()

mydal.GetGuest(Id)

End Sub

'新增信息
Public Sub Insert()

mymod.Content = Request("content")
mymod.re = Request("Re")
mymod.Addtime = Now()
mymod.Ip = request.servervariables("HTTP_X_FORWARDED_FOR")
If len(mymod.Ip)<=0 Then mymod.Ip = request.servervariables("REMOTE_ADDR")

Call mydal.Insert(mymod)

End Sub

'更新信息
Public Sub Update()

Call mydal.Update(mymod)

End Sub

'删除信息
Public Sub Delete()

mydal.Delete(Request("Id"))

End Sub

'查找信息
Public Function FindByPage()

Dim PageSize,CurrentPage,WhereValue,OrderValue,RecordCount
Dim objRS
Dim tmp1,tmp2,tmp3,parms,i
Dim tCMD
tCMD = Request("tCMD")
PageSize = "8"
CurrentPage = Request("PageNo")
If Len(CurrentPage)<=0 Then
CurrentPage=1
End If
WhereValue = ""
OrderValue = "Id"
Set objRS = mydal.FindByPage(PageSize,CurrentPage-1,WhereValue,OrderValue)
i = 1
RecordCount = mydal.Count(WhereValue)
Do While Not objRS.EOF
If tCMD="DEL" Then
DEL = "删除"
Else
DEL = ""
End If
parms=Array(i,objRS("content"),objRS("ip"),objRS("addtime"),DEL)
tmp1 = tmp1 & mycom.Format(LI,parms)
objRs.Movenext
i = i + 1
Loop
tmp3 = mycom.Page(PageSize,CurrentPage,RecordCount,"guest/index.asp?tCMD=LIST")
parms=Array(tmp1,tmp3)
tmp2 = tmp2 & mycom.Format(UL,parms)

FindByPage = tmp2

End Function

Private Sub Class_Initialize()

LI = "

  • {0} {1}

    作者:{2} {3} {4}

  • " & vbCrLf
    UL = "
      {0}
    • {1}
    "
    DEL = ""

    Set mycom = new Common
    set mymod = new MOD_Guest
    set mydal = new DAL_Guest

    End Sub

    Private Sub Class_Terminate()

    Set mycom = Nothing
    Set mymod = Nothing
    set mydal = Nothing

    End Sub

    End Class
    %>

    DAL_Guest.asp
    <%
    '///


    '/// 摘要说明。
    '///

    Class DAL_Guest

    Private SQL_01
    Private SQL_02
    Private SQL_03
    Private SQL_04
    Private SQL_05
    Private SQL_06
    Private SQL_07

    Private mycom,myacc,mymod

    '///


    '/// 获得信息
    '///

    '/// 判断字段
    '/// 信息体
    Public Function GetGuest(Id)

    Dim parms,SQL,objRS
    parms = Array(Id)
    SQL = mycom.Format(SQL_01,parms)
    Set objRS = myacc.ExecuteReader(myacc.CONN_STRING,SQL)
    If Not objRS.EOF then
    Call mymod.SetVar(objRs("Id"),objRs("Content"),objRs("Re"),objRs("Addtime"),objRs("Ip"))
    Set GetGuest = mymod
    Else
    GetGuest = Null
    End If

    End Function

    '///


    '/// 插入信息
    '///

    '/// 信息体
    Public Sub Insert(vmod)

    Dim parms,SQL
    parms = Array(vmod.Content,vmod.Re,vmod.Addtime,vmod.Ip)
    SQL = mycom.Format(SQL_02,parms)
    Call myacc.ExecuteReader(myacc.CONN_STRING,SQL)

    End Sub

    '///


    '/// 更新信息
    '///

    '/// 信息体
    Public Sub Update(vmod)

    Dim parms,SQL
    parms = Array(vmod.Id,vmod.Content,vmod.Re,vmod.Addtime,vmod.Ip)
    SQL = mycom.Format(SQL_03,parms)
    Call myacc.ExecuteReader(myacc.CONN_STRING,SQL)

    End Sub

    '///


    '/// 删除信息
    '///

    '/// 信息体
    Public Sub Delete(Id)

    Dim parms,SQL
    parms = Array(Id)
    SQL = mycom.Format(SQL_04,parms)
    Call myacc.ExecuteNonQuery(myacc.CONN_STRING,SQL)

    End Sub

    '///


    '/// 统计信息
    '///

    '/// 信息体
    Public Function Count(WhereValue)

    Dim parms,SQL,objRS
    parms = Array(WhereValue)
    SQL = mycom.Format(SQL_07,parms)
    Set objRS = myacc.Recordset(myacc.CONN_STRING,SQL)
    Count = objRS.RecordCount

    End Function

    '///


    '/// 根据条件列出所有信息(带有分页)
    '///

    '/// 每页记录数
    '/// 页码
    '/// 判断值
    '/// 排序
    '/// 返回objRS
    Public Function FindByPage(PageSize,CurrentPage,WhereValue,OrderValue)

    Dim parms,SQL,objRS
    Dim s1
    If CurrentPage="0" Then
    s1 = PageSize & "|" + OrderValue & "|" & WhereValue
    parms = Split(s1,"|")
    SQL = mycom.Format(SQL_05,parms)
    Else
    s1 = PageSize & "|" & OrderValue & "|" + WhereValue & "|" & CurrentPage*PageSize
    parms = Split(s1,"|")
    SQL = mycom.Format(SQL_06,parms)
    End If

    Set objRS = myacc.ExecuteReader(myacc.CONN_STRING,SQL)
    Set FindByPage = objRS

    End Function


    Private Sub Class_Initialize()

    SQL_01 = "Select * From [Guest] Where Id = {0}"
    SQL_02 = "Insert into [Guest] ([Content],[Re],[Addtime],[Ip]) values('{0}','{1}','{2}','{3}')"
    SQL_03 = "Update [Guest] Set [Content]='{1}',[Re]='{2}',[Addtime]='{3}',[Ip]='{4}' Where Id = {0}"
    SQL_04 = "Delete From [Guest] Where Id In ({0})"
    SQL_05 = "Select Top {0} * From [Guest] Where Content Like '%{2}%' Order By {1} Desc,Id Desc"
    SQL_06 = "Select Top {0} * From [Guest] Where Content Like '%{2}%' And Id Not IN(Select Top {3} Id From [Guest] Where Content Like '%{2}%' Order By {1} Desc,Id Desc) Order By {1} Desc,Id Desc"
    SQL_07 = "Select * From [Guest] Where Content Like '%{0}%' "

    Set mycom = new Common
    Set myacc = new AccHelper
    Set mymod = new MOD_Guest

    End Sub

    Private Sub Class_Terminate()

    Set mycom = Nothing
    Set myacc = Nothing
    Set mymod = Nothing

    End Sub

    End Class
    %>

    MOD_Guest.asp
    <%
    '///


    '/// 摘要说明。
    '///

    Class MOD_Guest

    Public Id
    Public Content
    Public Re
    Public Addtime
    Public Ip

    Public Sub SetVar(vId,vContent,vRe,vAddtime,vIp)
    Id=vId
    Content=vContent
    Re=vContent
    Addtime=vAddtime
    Ip=vIp
    End Sub

    End Class
    %>

    Common.asp
    <%
    '///


    '/// 摘要说明
    '///

    Class Common

    '///


    '/// 获得信息
    '///

    '/// 需要内容
    '/// 替换关键字
    '/// 格式化后内容
    Public Function Format(str,arr)

    Dim r,i
    r = str
    For i = 0 To UBound(arr)
    r = Replace(r,"{"&i&"}",arr(i))
    Next
    Format = r

    End Function

    Public Function Page(PageSize,CurrentPage,RecordCount,PageUrl)

    const C_RECORDCOUNT = "合计{0}篇|"
    const C_FIRSTPAGE1 = "首页"
    const C_FIRSTPAGE2 = "首页"
    const C_PREVPAGE1 = "上一页"
    const C_PREVPAGE2 = "上一页"
    const C_NEXTPAGE1 = "下一页"
    const C_NEXTPAGE2 = "下一页"
    const C_LASTPAGE1 = "尾页"
    const C_LASTPAGE2 = "尾页"
    const C_CURRENTPAGE = "页次:{0}/{1}页"
    const C_PAGESIZE = "{0}篇/页"
    const C_GOTOPAGE = "跳转:
    '/// AccHelper 的摘要说明。
    '///
    Class AccHelper

    Public CONN_STRING

    '///


    '/// 执行ExecuteNonQuery
    '///

    '/// 连接字符
    '/// sql命令
    Public Function ExecuteNonQuery(connString,cmdText)

    Dim objConn
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open connString
    objConn.Execute(cmdText)

    End Function

    '///


    '/// 执行ExecuteReader
    '///

    '/// 连接字符
    '/// sql命令
    '/// RS
    Public Function ExecuteReader(connString,cmdText)

    Dim objConn,objRS
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open connString
    Set objRS = objConn.Execute(cmdText)
    Set ExecuteReader = objRS

    End Function

    '///


    '/// 执行Recordset
    '///

    '/// 连接字符
    '/// sql命令
    '/// RS
    Public Function Recordset(connString,cmdText)

    Dim objConn,objRS
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open connString
    Set objRS = Server.CreateObject("ADODB.RecordSet")
    objRS.Open cmdText,objConn,1,3
    Set Recordset = objRS

    End Function

    Private Sub Class_Initialize()
    CONN_STRING = "provider = microsoft.jet.oledb.4.0;data source=" & Server.Mappath("db.mdb")
    End Sub

    End Class
    %>
    ajax.js
    复制代码 代码如下:
    varhttp_request=false;

    functionmakeRequest(obj,url){

    http_request=false;

    if(window.XMLHttpRequest){//Mozilla,Safari,...
    http_request=newXMLHttpRequest();
    if(http_request.overrideMimeType){
    http_request.overrideMimeType('text/xml');
    }
    }elseif(window.ActiveXObject){//IE
    try{
    http_request=newActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    http_request=newActiveXObject("Microsoft.XMLHTTP");
    }catch(e){}
    }
    }

    if(!http_request){
    alert('Givingup:(CannotcreateanXMLHTTPinstance');
    returnfalse;
    }

    http_request.onreadystatechange=function()
    {
    if(http_request.readyState==4){
    if(http_request.status==200){
    updateObj(obj,http_request.responseText);
    }
    else
    {
    updateObj(obj,"");
    }
    }
    }
    http_request.open('GET',url,true);
    http_request.send(null);
    }

    functionupdateObj(obj,data){
    obj.innerHTML=data;
    }
    function$(url){
    varobj=document.getElementById("content");
    obj.style.display='block';
    document.getElementById("container").style.margin="10pxauto0px";
    obj.innerHTML="Loading…";
    makeRequest(obj,url);
    }

    html调用方法:
    复制代码 代码如下:
    新闻产品案例联系博客

    相关推荐