第一章 绪论
1.1 设计思想
通过留言板,发布学校的重大活动安排与招生政策,增强家长与学校之间的联系,促进同学、家长、老师之间的感情,在Internet上实现完成部分校务,提高办事效率。
1.2 开发工具的选用及介绍
ASP的优势:
Active Server Pages:“动态服务器网页”,一般简称为“ASP”,ASP之所以能受到大家的重视与使用的原因,主要在于所产生的执行结果都是标准的HTML格式,而且这些程序是在网络服务端中执行,使用一般的浏览器(如IE 或Netscape)都可以正确地获得ASP的“执行”结果,并且将这ASP执行的结果直接在浏览器中“浏览”,不像VBScript或 JavaScript是在客户端(Client)的浏览器上执行,若使用VBScript来设计程序,客户端(Client)在IE浏览器中可以显示程序执行的结果,可是,客户端(Client)若使用Netscape浏览器就无法显示VBScript的执行结果。
ASP的特点:
任何开发工具皆可使用ASP。
只要使用一般的文书编辑程序,如Windows记事本,就可以编辑。当然,其他网页开发工具,例如,Dreamweaver、 FrontPage等也都可以;不过还是建议你用记事本来写,既省钱又方便,若是使用那些所见即所得的网页编辑来写ASP,可能会发生一些意想不到的离奇状态。
通吃各家浏览由于ASP程序是在网络服务器端中执行,执行结果所产生的HTML文件适用于不同的浏览器。
语言相容性高:
ASP与所有的ActiveX Script语言都相容,除了可结合HTML,VBScript、Java Script、Active X服务器组件来设计外,并可经由“plug-In(外挂组件模组)的方式,使用其他厂商(Third Party)所提供的语言。
隐密安全性高:
如果我们在浏览器中直接查看网页的原始代码,就只能看到HTML文件,原始的ASP程序代码是看不到的!这是因杰ASP程序先于网站服务(Web Server)端执行后,将结果转换成标准HTML文件,再传送到客户端(Client)的浏览器上,因此,我们所辛苦撰写的ASP程序并不会轻易地被看见进而被盗用。
易于操控数据库:
ASP可以轻易地通过ODBC(Open Database Connectivity)驱动程序连接各种不同的数据库,例如:Acess、Foxpro、dBase、Oracle等等,另外,ASP亦可将“文本文件”或是”Excel” 文件当成数据库用。
面向对象学习容易
ASP具备有面向对象(Object-Oriented)功能,学习容易,ASP提供了五种方便能力强大的内建对象:Request、Response、Sever、Application以及Session,同时,若使用ASP内建的“Application”对象或”Session”对象所撰写出来的ASP程序可以在多个网页之间暂时保存必要的信息。
FrontPage优点:
FrontPage优点就是“所见即所得”设计环境。FrontPage的设计视窗也可以用来预览网页,它显示的网页效果跟浏览器上显示的完全一样。FrontPage提供了HTML语言编写窗口,使程序编写更加简便。
因此,我选用了ASP结合FrontPage构建了留言板。
1.3 系统开发环境的选择
系统开发环境分硬件环境和软件环境两部分,ASP程序对系统的要求不是很高,因此建议以下的开发环境即可。
硬件环境:
CPU:Pentium 586 以上
内存:32M 以上
显存: 4M
硬盘:200M空闲
软件环境:
操作系统:Microsoft Windows 98/xp/2000
Microsoft FrontPage 2000
第二章 配置服务器
2.1 IIS的配置及主页发布
IIS 提供的基本服务:
WWW服务:支持最新的超文本传输协议(HTTP)1.1标准,运行速度更快,安全性更高,还可以提供虚拟主机服务。WWW服务是指在网上发布可以通过浏览器观看的用HTML标识语言编写的图形化页面的服务。IIS 4.0允许用户设定数目不限的虚拟Web站点。
FTP服务:支持文件传输协议(FTP)。主要用于网上的文件传输。IIS 4.0允许用户设定数目不限的虚拟FTP站点,但是每一个虚拟FTP站点都必须拥有一个唯一的IP地址。IIS 4.0不支持通过主机名区分不同的虚拟FTP站点。
MTP服务:支持简单邮件传输协议(SMTP)。IIS 4.0允许基于Web的应用程序传送和接收信息。启动SMTP服务需要使用NT操作系统的NTFS文件系统。
除上述服务之外,IIS 4.0还可以提供NNTP Service等服务。本篇将主要讨论其中最重要的WWW服务,读者在真正熟悉WWW服务之后,其它类型的服务也可做到触类旁通。
IIS 的设置(注:文章中“客户”指Web站点的访问者,“用户”指IIS 4.0的使用者)
打开Microsoft管理控制台之后,单击Internet Information Server文件夹,出现用户的电脑标识。打开后选中“默认的Web站点”,右击点属性,出现IIS的配置界面(注:IIS中的服务配置都是通过类似的属性界面实现,用户可以尝试一下。此外,IIS中的属性具有继承性,子级目录自然继承上级目录的相同属性)。
Web站点:
(图2.1)
Web站点标识:
描述--用户指定该站点的名称。 IP地址--用户分配给该站点的IP地址(动态域名的用户,您可以使用默认的IP地址,选中"全部未分配",即可)。
在高级对话框中还可以进一步的设定该站点的IP地址,TCP端口号以及主机名称等(注:同一台Web服务器中,具有不同IP地址或不同主机名的不同站点称为虚拟主机)。 TCP端口--缺省值为80,用户可以根据自己的需要进行改动。
SSL端口--指定使用安全套接字层(SSL)的端口。
连接: 无限--不限制同时连接站点的用户数量。 限制到--读者可以根据需要限定在同一时刻连接站点的用户数量。 连接超时--如果访问用户在指定的时间范围内没有发出新的访问请求,Web服务器自动中断与该用户的连接。
启用日志: 在提供给用户的日志格式选择中,NCSA为较通用格式,W3C为扩展格式,ODBC为数据库日志格式。在属性对话框中,可以进一步的设定日志记录的时间间隔单位,以及日志文件的存放位置。
操作员
(图2.2)
通过该项可以在NT用户帐号中指定对站点拥有操作权的用户帐号(注:操作员帐号不一定必须是 Windows NT 管理员组的成员,
操作员只具有有限的站点管理权限)。
性能:
(图2.3)
性能调整--可以根据站点的具体情况设定每天访问站点的人数。该项可以相应的调整Web站点所占用的系统内存的大小。
带宽限制--启用带宽限制将会限制Web站点所能够使用的带宽。
连接配置--“保留 HTTP 连接”允许客户维持与服务器已经打开的连接,而不要求对客户的每个新请求都启用新的连接。
设置用于处理 HTTP 请求过程中的对事件作出响应的程序。
主目录:
(图2.4)
许可访问--设置客户对站点内容的访问权限。只有支持源内容--设置存储站点内容的目录或计算机。
HTTP 1.1协议标准的具有“放置”功能的浏览器才能执行写操作。
内容控制--日志访问将在日志文件中记录对站点目录的访问;允许浏览目录可以在当客户没有指定具体的访问页面同时站点也没有设定默认页面时自动生成一个目录内容页面;索引此目录将指定目录加入Web站点的全文索引(注:需安装Microsoft Index Server );Front Page Web 将在Web 站点中创建一个 FrontPage Web目录。
应用程序设置--在分开的窗口内运行: 选定该选项将使应用程序独立于 Web 服务器进程单独运行。运行独立的应用程序可以在当应用程序出现错误时,使其他应用程序(包括 Web 服务器)免受影响。
许可: 无--不允许在服务器端运行任何程序或脚本。 脚本--允许运行映射到脚本引
擎的应用程序而不必拥有“执行”权限。 执行(包括脚本)--允许运行脚本程序,dll以及exe程序。
文档标签
(图2.5)
启用默认文档: 设置当访问客户没有具体指定浏览页面时显示的默认页面。
启动文档脚注: 可以自动为网站的页面加上脚注,可以用于添加站点的LOGO等标
目录安全性标签
(图2.6)
匿名访问和安全控制(单击编辑进入配置): 允许匿名访问--指定一个NT用户帐号,使所有网站的访问者使用该帐号以匿名方式登录。 基本验证--验证来访客户的用户名和密码(注:此项在不使用匿名登录方式或已经在NTFS文件系统中设置访问控制时有效)。 Windows NT挑战响应--只有在禁用匿名方式或在NTFS文件系统中设置访问控制时有效,不支持挑战响应方式的浏览器将被禁止访问。
安全通讯: 使用密钥管理器建立认证请求
IP地址和域名控制: 允许访问将会向除用户指定的地址之外的所有客户授予访问权;禁止访问将禁止除用户指定地址之外的所有客户的访问。
HTTP标题
(图2.7)
允许内容过期: 设置客户浏览器根据指定的过期时间决定是否从客户本机缓存读取数据或连接网站请求新数据。
自定义HTTP标题: 用户自己编写的发送给客户浏览器的HTTP标题。
内容分级: 在HTTP标题中加入内容级别,使客户可以在浏览器端选择过滤不接受的内容
MIME(多用途Internet邮件扩展)映射: 设定由Web服务器传送给浏览器的文件类型。
用户自己设定在出错时返还到浏览器的错误信息。
2.2 虚拟目录的介绍
每个 Internet 服务可以从多个目录中发布。通过以通用命名约定 (UNC) 名、用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上。虚拟服务器可拥有一个宿主目录和任意数量的其它发布目录。其它发布目录称为虚拟目录。
指定客户 URL 地址,服务将整个发布目录集提交给客户作为一个目录树。宿主目录是“虚拟”目录树的根。虚拟目录的实际子目录对于客户也是可用的。只有 http://www.服务支持虚拟服务器;而 FTP 和 gopher 服务则只能有一个宿主目录。
主目录位置一旦改变,所有Internet用户的请求都将被路由到这个新的目录位置,IIS也将把这个目录作为一个单独的站点来对待,并完成与各组件的关联。不过,有时IIS也可以把用户的请求指向主目录以外的目录,这种目录就称为虚拟目录。下面我们讲解虚拟目录是怎么回事。
我们知道,建站人员必须为建立的每个Internet站点都指定一个主目录。主目录是一个缺省位置,当Internet用户的请求没有指定特定文件时,IIS将把用户的请求指向这个缺省位置。代表站点的主目录一旦建立,IIS就会缺省地使这一目录结构全部都能由网络远程用户所访问,也就是说,该站点的根目录(即主目录)及其所有子目录都包含在站点结构(即主目录结构)中,并全部能由网络上的用户所访问。一般说来,Internet站点的内容都应当维持在一个单独的目录结构内,以免引起访问请求混乱的问题。特殊情况下,网络管理人员可能因为某种需要而使用除实际站点目录(即主目录)以外的其他目录,或者使用其他计算机上的目录,来让Internet用户作为站点访问。这时,就可以使用虚拟目录,即将想使用的目录设为虚拟目录,而让用户访问。
处理虚拟目录时,IIS把它作为主目录的一个子目录来对待;而对于Internet上的用户来说,访问时并感觉不到虚拟目录与站点中其他任何目录之间有什么区别,可以像访问其他目录一样来访问这一虚拟目录。设置虚拟目录时必须指定它的位置,虚拟目录可以存在于本地服务器上,也可以存在于远程服务器上。多数情况下虚拟目录都存在于远程服务器上,此时,用户访问这一虚拟目录时,IIS服务器将充当一个代理的角色,它将通过与远程计算机联系并检索用户所请求的文件来实现信息服务支持。
创建虚拟目录的操作步骤如下:
1. 在“开始”—〉“控制面版”中找到“管理工具”
2. 点击“管理工具”,进入如下所示界面:
(图2.8)
3. 点击“Internet 信息服务”,进入如下所示界面:
(图2.9)
4.用鼠标选中“默认网站”,然后点击右键找到“新建”—>“虚拟目录”。
5. 点击“虚拟目录”,进入如下所示界面:
(图2.10)
6. 在“别名”对话框中输入你想输入的一个名称,但你要记住这个名称,我输入的是swl。
(图2.11)
7. 点击“下一步”进入如下所示界面:
(图2.12)
8.点击“浏览(R)”找到你存放ASP文件的目录,确认即可!点击“下一步”
9.保持当前页面的默认选项,点击“下一步”,进入如下图所示界面:
(图2.13)
10.点击“完成”,虚拟目录到此就完成了。
11.最后在IE浏览器中输入http://jsj/swl/index.asp 按回车键,如下图所示界面:
(图2.14)
第三章 使用Access2000 创建数据库
3.1 数据库的概念
什么是数据库呢?当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。例如,称数据库是一个"记录保存系统"(该定义强调了数据库是若干记录的集合)。又如称数据库是"人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合"(该定义侧重于数据的组织)。更有甚者称数据库是"一个数据仓库"。当然,这种说法虽然形象,但并不严谨。严格地说,数据库是"按照数据结构来组织、存储和管理数据的仓库"。在经济管理的日常工作中,常常需要把某些相关的数据放进这样"仓库",并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个"数据库集合"。
使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间;实现数据资源的充分共享等等。此外,数据库技术还为用户提供了非常简便的使用手段使用户易于编写有关数据库应用程序
数据库软件的种类有很多种,如:SQL、Foxpro、Microsoft Access等等。但是为操作方便,我们选择Microsoft Access数据库。
3.2 新建一个数据库
根据需要我们建立两张表:一个是lyb表,用来存放留言板的内容,一个是password表用来存放管理员的用户名和密码,具体的设计步骤如下。
首先打开Microsoft Access 2000,会弹出下面的窗口。
(图3.1)
然后选择空Acceess数据库。
(图3.2)
这时会出现一个保存的窗口,我们在文件名处填上stu然后点击创建。会出现下图的画面。
(图3.3)
然后单击设计,填加字段名。然后点保存既可。
3.3 配置ODBC数据源
ODBC管理器(Administrator)它负责安装驱动程序,管理数据源,并帮助程序员跟踪ODBC的函数调用。在ODBC中,应用程序不能直接存取数据库,它必须通过管理器和数据库交换信息。ODBC管理器负责将应用程序的SQL语句及其他信息传递给驱动程序,而驱动程序则负责将运行结果送回应用程序。运行32bit ODBC管理器后,出现一个主对话框,它的主要内容是要求用户输入一个数据源,所谓数据源就是数据库位置、数据库类型以及ODBC驱动程序等信息的集成。数据源负责将运行结果送回应用程序。应用程序、ODBC管理在使用之前必须通过ODBC管理器进行登记和连接,启动ODBC管理器后,选取Add按钮,根据自己的数据库类型,选择相应的ODBC驱动程序,然后输入数据源名(Data Source Name)和数据库文件名(Database Name),完成这些步骤后,以后的应用程序就能够通过ODBC管理器的数据源直接操纵数据库。
1、 用户DSN:ODBC用户数据源存贮了如何与指定数据库提供者连接的信息。只对当前用户可见,而且只能用于当前机器上。这里的当前机器是只这个配置只对当前的机器有效,而不是说只能配置本机上的数据库。它可以配置局域网中另一台机器上的数据库的。
2、 系统DSN: ODBC系统数据源存贮了如何指定数据库提供者连接的信息。系统数据源对当前机器上的所有用户都是可见的,包括NT服务。也就是说在这里配置的数据源,只要是这台机器的用户都可以访问。
3、 文件DSN:ODBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。这是界于用户DSN和系统DSN之间的一种共享情况。
4、 驱动程序:这页列出了本机上所有安装的数据库驱动程序。里面列举了每个驱动程序的名称,版本,提供商公司,驱动程序文件名,以及安装日期。
5、 跟踪:ODBC跟踪允许创建调用ODBC的日志,提供给技术人员查看。里面可设定日志的路径和文件名。技术人员通过这里面的信息可以看到本机上所有的数据库访问的时间,用户,以及出错信息等情况。也可以通过这个辅助调试应用程序,可以启动Visual Studio的分析器,来进行ODBC的跟踪。
? 6、 连接池:连接池允许应用程序重用原来打开的的连接句柄,这样可以节省到服务器的往返过程。
7、 关于:最后这一页列出了所有的ODBC的核心文件。
下面详细的介绍如何建立ODBC数据源:
打开ODBC数据源管理器,选择“系统 DSN”后单击‘添加’ 在‘创建数据源’窗口选中Microsoft Access driver驱动程序后单击‘完成’。
(图3.4)
然后弹出下面的窗口。
(图3.5)
单击选择,在弹出的窗口中,选择刚才建立的数据库的文件夹中数据库的文件名,然后在数据源名中写上数据源名,我们这里数据源名为stu,单击确定,数据源创建完成。
第四章 留言板的结构设计与实现
4.1 用户、管理员浏览模块
(图4.1)
此模块的功能是用户和管理员都能利用该模块浏览所有的留言内容,此模块不用注册即可使用,每页由7条记录组成,具有翻页功能,具体的设计步骤如下(此模块的图片如图3.1)。
下面的ASP代码实现显示表stu中的内容:
<%response.buffer=true%>
<html>
<head>
<title>留言板</title>
</head>
<%'========================显示数据库表stu中的信息=======================
sql="select * from lyb "
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn,1
numzhuce=rs.RecordCount
page=request.querystring("page") '接收上一页、下一页的页号
if len(page)>0 and isnumeric(page) then
page=int(page)
else
page=1
end if
if not rs.eof then
size=7
rs.PageSize=size '每页记录数
TotlePage=rs.PageCount '总页数
TotlePage=int(numzhuce/size)
if (numzhuce mod size)>0 then TotlePage=TotlePage+1 '总页数
if page<1 or page>TotlePage then
page=1
rs.AbsolutePage=page '当前页
else
rs.AbsolutePage=page '当前页
end if
num=1 '循环变量初值
%>
以上的内容分别把接收到的数据放在变量中,下面的代码的功能是显示出这些信息。
<td width="545" height="91" valign="top">
<font size="2">
<%while not rs.eof and num<=size%>
<font color="#FF00FF">
[留言主题]</font><%=rs("主题")%><br>
<font color="#FF00FF">
[留言内容]</font><%=rs("内容")%><br>
                                     
<%=rs("昵称")%> 
[<%=rs("时间")%>] <br>
<font color="#0000FF">
+---------------------------------------------------------------------+</font> <br>
<%rs.movenext
num=num+1
wend
rs.close
set rs=nothing%>
</font>
</td>
</tr>
<tr>
<td width="545" height="91" valign="top">
<font size="2">
<a href="lyb.asp?page=1">[第一页]</a>
<% select case page
case 1: '只有下一页
if totlepage>1 then
%>
<a href="lyb.asp?page=2">[下一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% else %>
第<%=page%>页/共<%=TotlePage%>页</font>
<% end if %>
<% case TotlePage: '只有上一页%>
<a href="lyb.asp?page=<%=page-1%>">[上一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% case else: %>
<a href="lyb.asp?page=<%=page-1%>">[上一页]</a>
<a href="lyb.asp?page=<%=page+1%>">[下一页]</a>
[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% end select %>
</font>
<%end if%>
</td>
此模块用到了RecordCount、request.querystring等方法以及一些翻页的技巧。由于篇幅限制,这里只给出了一部分比较重要的代码,其它的简略。
4.2 用户留言及修改模块
该模块的功能是,用户可以在这里把自己的留言写在这里,如果其它用户浏览里,就可以看到此用户的留言(模块的缩略图如下3.2)。
(图4.2)
该模块由留言昵称、留言QQ、电子信箱、个人网站、留言主题和留言内容组成,其中后面有带星号的为必填项,其它的为选填项,写完之后单击写好了,即可提交,按返回上页,直接返回到首页。此页中用到了表单提交的一些技术,相关代码如下:
<script language="javascript">
function presub1(f) {
if(f.t1.value=="")
{
alert("昵称不能为空");
return false;}
else if(f.t5.value=="")
{
alert("主题不能为空");
return false;}
else if(f.s1.value=="")
{
alert("请输入正文内容");
return false;}
else
return true;
}
</script>
以上这段程序的功能是利用JAVA脚本进行本地验证,当用户的表单里填入空值或者不正确值的时候给出相应的提示。无需通过服务器。
<form method="post" οnsubmit="return presub1(this)" action="xly1.asp">
这句代码的功能是将整个表单以post方式发送到xly1.asp文件里。
4.3 用户注册模块
此模块的功能是用户可以在这里注册成为会员,有一些比普通用户更有一些权限。下图是注册的缩略图。
(图4.3)
该模块的具体设计和代码如下:
<script language="javascript">
function presub1(f) {
if(f.yhm.value=="")
{
alert("用户名不能为空");
return false;}
else if(f.kl.value=="")
{
alert("密码不能为空");
return false;}
else if(f.kl.value!=f.qrkl.value)
{
alert("两次输入密码不一致");
return false;}
else if(f.zjhm.value=="")
{
alert("请输入证件号码");
return false;}
else
return true;
}
</script>
以上程序是本地验证,要求输入的内容不能为空或者内容不合法。
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from news","dsn=ql;"
yhm=request("yhm")
kl=request("kl")
qrkl=request("qrkl")
zjhm=request("zjhm")
lxfs=request("lxfs")
dh=request("dh")
dw=request("dw")
%>
<html>
<head>
<title>注册信息</title>
</head>
<body>
<table border="1" width="100%" height="334">
<tr>
<td width="14%" height="61"></td>
<td width="86%" height="61">您注册的信息:</td>
</tr>
<tr>
<td width="14%" height="261"></td>
<td width="86%" height="261" valign="top"><%=request("yhm")%><p>
<%=request("kl")%><p>
<%=request("qrkl")%><p>
<%=request("zjhm")%><p>
<%=request("lxfs")%><p>
<%=request("dh")%><p>
<%=request("dw")%><p>
</td>
</tr>
</table>
</body>
</html>
以上程序把注册信息发送到服务器的数据库,并在屏幕上显示出来。
4.4 管理员登陆模块
(图4.4)
该模块的功能是管理员可以在这里登陆,可以在线的管理这些留言,管理员有特殊的权限,做普通用户不可以做的事情,比如,可以将留言删。(该模块的缩略图如3.3)具体的实现和代码如下:
<%response.buffer=true%>
<%response.expires=0%>
这两名话的作用是打开内存中的缓冲区。
<script language="javascript">
function presub(f) {
if(f.usname.value=="")
{
alert("请输入用户名");
return false;}
else if(f.uspas.value=="")
{
alert("请输入密码");
return false;}
else
return true;
}
</script>
以上这段程序的功能是利用JAVA脚本进行本地验证,当管理员输入的用户名和密码为空值或者不正确值的时候给出相应的提示
4.5 管理员回复与删除留言模块
此模块的功能是管理员可以进入,并且可以进行增加和删除等功能,(此模块的缩略图如3.4)具体的实现方和代码如下:
(图4.5)
当用户点删除时,弹出提示,询问是否删除,如果确定点是,否则点取消。
<%response.buffer=true%>
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from lyb","dsn=stu;"
%>
<%set cn=server.createobject("adodb.connection")
cn.open"dsn=stu;"
%>
定义缓冲区和连接数据源。
<!--#include file="conn.asp"-->
<%
username=request.querystring("username")
if trim(username)<>"" then
sql="delete from lyb where 昵称='"& username & "'"
cn.execute sql
end if
%>
<%'***************************************显示数据库表stu中的信息***************************************
sql="select * from lyb "
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn,1
numzhuce=rs.RecordCount
page=request.querystring("page") '接收上一页、下一页的页号
if len(page)>0 and isnumeric(page) then
page=int(page)
else
page=1
end if
if not rs.eof then
size=7
rs.PageSize=size '每页记录数
TotlePage=rs.PageCount '总页数
TotlePage=int(numzhuce/size)
if (numzhuce mod size)>0 then TotlePage=TotlePage+1 '总页数
if page<1 or page>TotlePage then
page=1
rs.AbsolutePage=page '当前页
else
rs.AbsolutePage=page '当前页
end if
num=1 '循环变量初值
%>
把总页数和每页的内容分别赋给变量。
<% ' ****************************删除确认******************************************%>
<script language=javascript>
function chkdel() {
var talk = window.confirm("请确定是否删除该条记录!");
if (talk==false) {return false;}
}
</script>
确认是否删除该记录。
<td width="1293" height="182" valign="top">
<font size="2">
<%while not rs.eof and num<=size%>
<font color="#FF00FF">
[留言主题]</font><%=rs("主题")%>
<br>
<font color="#FF00FF">
[留言内容]</font><%=rs("内容")%><br>
                                     
<%=rs("昵称")%>  [<%=rs("时间")%>]<font color="#0000FF"> <br>
<font color="#0000FF">
+---------------------------------------------------------------------+
<a href="lybxg.asp?username=<%=rs("昵称")%>" οnclick="return chkdel();" >删除?</a>
</font> <br>
<%rs.movenext
num=num+1
wend
rs.close
set rs=nothing%>
</font></font>
<font size="2">
<a href="lybxg.asp?page=1">[第一页]</a>
<% select case page
case 1: '只有下一页
if totlepage>1 then
%>
<a href="lybxg.asp?page=2">[下一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% else %>
第<%=page%>页/共<%=TotlePage%>页</font>
<% end if %>
<% case TotlePage: '只有上一页
%>
<a href="lybxg.asp?page=<%=page-1%>">[上一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% case else: %>
<a href="lybxg.asp?page=<%=page-1%>">[上一页]</a>
<a href="lybxg.asp?page=<%=page+1%>">[下一页]</a>
[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% end select %>
<%end if%>
</td>
4.6 其他程序模块
以上几节简单的介绍了几个模块的一些比较重点的程序段,但是在本节中介绍一下几个在表面上看不到的,但是却起着相当重要的一些代码。
<%sj=date()
aaa="'"&request("T1")&"','"&request("T2")&"','"&request("T3")&"','"&request("T4")&"','"&request("T5")&"','"&request("s1")&"','"&sj&"'"%>
<%set cn=server.createobject("adodb.connection")
cn.open"dsn=stu;"
%>
<%strsql="insert into lyb(昵称,qq,邮箱,网站,主题,内容,时间) values("&aaa&")"
cn.execute(strsql)
%>
<%cn.close
set cn=nothing%>
<%response.redirect"lyb.asp"%>
以上这段代码是在后台运行的,该网页是个空的,什么也不显示,当用户写完留言的时候,把表单里所有的东西都要提交到这里,利用ASP提供的insert int 等语句把他传送到服务器的数据库的表格里。
<%response.buffer=true%>
<%usname=request("usname")
uspas=request("uspas")
set rs=server.createobject("adodb.recordset")
rs.open "select * from password","dsn=stu;"
%>
<html>
<head>
<body>
<%while not rs.eof
if usname=rs("用户名") and uspas=rs("密码") then
%>
<%response.redirect "lybxg.asp"%>
<%response.end%>
<%end if
rs.movenext
wend
rs.close
set rs=nothing%>
<%response.redirect"lybgly.asp"%>
</body>
</html>
该程序段的功能是,接收用户名和密码,并把用户名和密码发送到服务器的数据库里验证,如果和数据库里的一样,则可以登陆,否则提示用户名或密码错误。
<%
constr="DBQ="+server.mappath("stu.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=Server.CreateObject("ADODB.connection")
conn.open constr
%>
连接数据源文件。