中华考试网·阅读新闻
编程开发 > ASP > 文章内容

ASP编程技术:如何制作留言本

2015-3-2编辑:ljnbset

如何制作留言本

问题

网上留言是网络浏览者经常光顾的地方,因此留言本是一个常用的的交流信息手段,那么如何在ASP中制作留言本?

解决思路

与聊天室相比,留言本不具有动态性和实时性,不过它信息量大,可以保存信息更加长久。而且对于公司来说,留言本也是一个信息反馈的途径。在ASP中制作留言本是一件容易的事情,主要是对数据的读写操作。

下面将讲解一个完整的留言本制作实例。

具体步骤

1.建立Data.mdb数据库,它包括guest表,该表的数据结构如表

表12.6  Guest表结构

字段名称

数据类型

说明

ID

自动编号

 

Name

文本

用户名

Email

文本

邮件地址

Title

文本

标题

Content

备注

留言内容

Time

文本

留言时间

 

2.编写连接数据库的ASP文件“conn.asp”,代码如下:

<%

 dim conn

 dim connstr

 on error resume next

 connstr="DBQ="+server.mappath("data.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

 set conn=server.createobject("ADODB.CONNECTION")

 if err then

 err.clear

 response.write "数据库连接出错!"

 else

 conn.open connstr

 if err then

 err.clear

 response.write "读取数据库出错!"

 end if

 end if

%>

3.编写显示留言的ASP文件“index.asp”,代码请见光盘。

4.编写输入留言的ASP文件“guestbook.asp”,代码请见光盘。

5.编写保存留言的ASP文件“update.asp”,代码如下所示:

<%@ LANGUAGE="VBSCRIPT" %>

<%option explicit

Response.Cookies("UserInfo")("UserName")=trim(Request.Form("txtName"))

Response.Cookies("UserInfo")("UserEmail")=trim(request.form("txtEmail"))

Response.Cookies("UserInfo").Expires = now() + 365

%>

<%

function htmlencode2(str)

 dim result

 dim l

 if isNULL(str) then

 htmlencode2=""

 exit function

 end if

 l=len(str)

 result=""

       dim i

       for i = 1 to l

        select case mid(str,i,1)

        case "<"

        result=result+"<"

        case ">"

        result=result+">"

 case chr(13)

        result=result+"
"

        case chr(34)

        result=result+"""

        case "&"

        result=result+"&"

 case chr(32)   

        'result=result+" "

        if i+1<=l and i-1>0 then

        if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9) then

        result=result+" "

 else

        result=result+" "

        end if

        else

        result=result+" "       

        end if

        case chr(9)

        result=result+" "

        case else

        result=result+mid(str,i,1)

 end select

 next

 htmlencode2=result

 end function

 

dim WINNT_CHINESE

WINNT_CHINESE=(len("留言")=2)

function strLength(str)

 if WINNT_CHINESE then

 dim l,t,c

 dim i

 l=len(str)

 t=l

 for i=1 to l

 c=asc(mid(str,i,1))

 if c<0 then c=c+65536

 if c>255 then

 t=t+1

 end if

 next

 strLength=t

 else

 strLength=len(str)

 end if

 end function

 

sub chkInput()

       if Trim(sName)="" then

        sName="过客"

                elseif strLength(sName)>=50 then

        foundError=true

ErrorMsg=ErrorMsg+"

  • 输 入 的 “大 名” 的 长 度 不 能 大 于 50 。
  • "

            end if

            if strLength(sEmail)>255 then

           foundError=true

    ErrorMsg=ErrorMsg+"

  • 输 入 的 “Email” 的 长 度 不 能 大 于 255 !
  • "

            end if

            if Trim(sTitle)="" then

     sTitle="<无主题>"

     elseif strLength(sTitle)>255 then

           foundError=true

    ErrorMsg=ErrorMsg+"

  • 输 入 的 “主 题” 的 长 度 不 能 大 于 255 !
  • "

            end if

            if Trim(sInput)="" then

           foundError=true

    ErrorMsg=ErrorMsg+"

  • 没 有 留 言 , 请 留 下 您 的 宝 贵 意 见 !
  • "

            elseif strLength(sInput)>16384 then

           foundError=true

    ErrorMsg=ErrorMsg+"

  • 您 输 入 的 “留 言” 的 长 度 不 能 大 于 16384 (16K)!
  • "

            end if

     end sub

     

    sub getInput()

     sName=request.form("txtName")

            sEmail=request.form("txtEmail")

            sTitle=request.form("txtTitle")

            sInput=request.form("txtContent")

            end sub%><%

     dim sql

     dim rs

     dim sName

     dim sEmail

     dim sTitle

     dim sInput

     dim foundError

     dim errorMsg

     getInput()

     chkInput()

     if foundError then

     call showErrors()

     else

     saveData()

            if foundError then

            call showErrors()

           else

     call success()

            end if

     set rs=nothing

     conn.close

     set conn=nothing

    end if

     

     sub saveData()

     on error resume next

     dim cmdTemp

     dim rs

     Set cmdTemp = Server.CreateObject("ADODB.Command")

     Set rs = Server.CreateObject("ADODB.Recordset")

     cmdTemp.CommandText = "SELECT * FROM guest where name is null"

     cmdTemp.CommandType = 1

     Set cmdTemp.ActiveConnection = conn

     rs.Open cmdTemp, , 1, 3

     rs.addnew

     rs("name") =htmlencode2(sName)

     rs("email") =htmlencode2(sEmail)

     rs("title") =htmlencode2(sTitle)

     rs("content") =htmlencode2(sInput)

     rs("time") =cstr(now())

     rs.Update

     rs.close

     conn.close

     set rs=nothing

     set conn=nothing

            if err>0 then

            err.clear

     foundError=true

                     ErrorMsg="

  • 数 据 库 操 作 失 败 !
  • "

            end if

     end sub

     

     sub showErrors()%>

    输 入 有 错

    不 能 保 存 留 言 !

      <%=ErrorMsg%>

    <%end sub%>

    <%sub success()

    response.write "

    Content='2;url=index.asp'>"

    response.write "留 言 成 功"

    response.write ""

    response.write "

    留言成功 !
    "

    response.write "
    谢 谢 您 的 留 言 !
    "

    response.write "

    2秒后将自动 返 回

    "

    response.write ""

    end sub%>

     

    提示:在本节实例中使用了Cookies保留用户信息,以便用户下次登录时可以不用再输入用户信息。

    3DSMAX快捷键软件应用(16)
    咨询热线:4000-525-585(免长途费)