ASP应用开发与实践 第16章 综合案例——博客网站新

上传人:仙*** 文档编号:52193092 上传时间:2022-02-07 格式:PPT 页数:117 大小:8.37MB
返回 下载 相关 举报
ASP应用开发与实践 第16章 综合案例——博客网站新_第1页
第1页 / 共117页
ASP应用开发与实践 第16章 综合案例——博客网站新_第2页
第2页 / 共117页
ASP应用开发与实践 第16章 综合案例——博客网站新_第3页
第3页 / 共117页
点击查看更多>>
资源描述
本章要求本章要求:第第1616章章 综合案例综合案例博客网站博客网站u了解博客网站的总体设计u掌握数据库设计方法u了解网站文件架构u掌握公共文件的编写u掌握前台页面、文章展示、相册展示、博主登录等主要功能模块的设计主要内容主要内容1. 概述2. 网站总体设计3. 数据库设计4. 文件架构设计5. 公共文件的编写6. 前台主页面设计7. 文章展示模块设计8. 相册展示模块设计9. 博主登录模块设计10.文章管理模块设计11.相册管理模块设计12.网站发布第第1616章章 综合案例综合案例博客网站博客网站16.1 16.1 概述概述 博客,译自英文Blog。它是互联网平台上的个人信息交流中心。通常博客发表文章,从而提出个人的意见、表达自己的想法。它可以让每个人零成本、零维护地创建自己的网络媒体,每个人都可以随时把自己的思想火花和灵感更新到博客网站上。本章将介绍如何开发博客网站。16.2.1 项目规划16.2.2 系统功能结构图16.2 16.2 网站总体设计网站总体设计 博客网站是一个ASP与数据库技术结合的典型应用程序,由前台用户操作和后台博主管理模块组成,规划系统功能模块如下:p前台用户操作该模块主要包括我的文章、我的相册、博主登录、Blog搜索、博主推荐、最新评论、网站统计等功能。p后台博主管理该模块主要包括文章信息管理、相册信息管理、管理员资料管理等功能。16.2.1 16.2.1 项目规划项目规划博客网站前台功能结构如图16-1所示。 图16-1 博客网站前台功能结构16.2.2 16.2.2 系统功能结构图系统功能结构图博客网站前台系统我的文章我的相册博客管理入口Blog搜素博主推荐最新评论网站统计博客网站后台功能结构如图16-2所示。 图16-2 后台功能结构博客网站前台系统文章分类文章添加文章浏览相册分类相册上传相册查看管理员资料修改文章管理相册管理修改资料16.3 16.3 数据库设计数据库设计16.3.1 数据库ER图分析16.3.2 数据表概要说明16.3.3 主要数据表的结构 这一设计阶段是在系统功能结构图的基础上进行的,设计出能够满足用户需求的各种实体以及它们之间的关系,为后面的逻辑结构设计打下基础。根据以上的分析设计结果,得到文章信息实体、文章分类信息实体、文章评论信息实体、相册信息实体、相册分类信息实体和管理员信息实体。下面来介绍几个主要信息实体的E-R图。p文章信息实体 文章信息实体包括:文章ID、文章所属分类ID、文章标题、文章内容、作者名称和发表时间。文章信息实体的E-R图,如图16-3所示。图16-3 文章信息实体E-R图16.3.1 16.3.1 数据库数据库ERER图分析图分析作者名称文章信息实体发表时间文章ID文章所属分类ID文章内容文章标题p文章分类信息实体 文章分类信息实体包括:文章分类ID、文章分类名称和添加时间。文章分类信息实体的E-R图,如图16-4所示。图16-4 文章分类信息实体E-R图添加时间文章分类信息实体文章分类ID文章分类名称p文章评论信息实体 文章评论信息实体包括:评论ID、文章ID、评论人昵称、评论内容和发表时间。文章评论信息实体的E-R图,如图16-5所示。图16-5 文章评论信息实体E-R图文章ID文章评论信息实体评论内容评论人昵称评论ID发表时间p相册信息实体 相册信息实体包括:相册ID、相册分类ID、图片名称、图片标识、图片信息和添加时间。相册信息实体的E-R图,如图16-6所示。图16-6 相册信息实体E-R图图片标识相册信息实体添加时间相册ID相册分类ID图片信息图片名称p相册分类信息实体 相册分类信息实体包括:相册分类ID、相册分类名称和添加时间。相册分类信息实体的E-R图,如图16-7所示。图16-7 相册分类信息实体E-R图添加时间相册分类信息实体相册分类ID相册分类名称 根据上一节的介绍,可以创建与实体对应的数据表。为了使读者对本系统数据库的结构有一个更清晰的认识,下面给出数据库中包含的数据表的结构图,如图16-8所示。图16-8 数据表结构图16.3.2 16.3.2 数据表概要说明数据表概要说明 数据库在整个管理系统中占据非常重要的地位,数据库结构设计的好坏直接影响着系统的效率和实现效果。本系统采用的是Access 2000数据库,数据库名称为db_Blog。下面介绍db_Blog数据库中的主要数据表结构。ptab_article(文章信息表)文章信息表主要用于保存添加的文章信息,tab_article表的结构如表16-1所示。表16-1tab_article表结构7 716.3.3 16.3.3 主要数据表的结构主要数据表的结构字段名称数据类型是否主键长度默认值允许空字段描述id自动编号是唯一标识Aclass数字40所属类别IDAtitle文本50否文章标题Acontent备注否文章内容Aauthor文本50否作者名称Adate日 期 /时间8Now()添加时间p tab_article_class(文章分类信息表)文章分类信息表主要用于保存文章的分类信息,tab_article_class表的结构如表16-2所示。表16-2tab_article_class表结构字段名称数据类型是否主键长度默认值允许空字段描述id自动编号是唯一标识Acname文本50否文 章 分 类名称Acdate日 期 / 时间8Now()添加时间ptab_article_commend(文章评论信息表) 文章评论信息表主要用于保存对文章进行评论的信息,tab_article_commend表的结构如表16-3所示。表16-3tab_article_commend表结构字段名称数据类型是否主键长度默认值允许空字段描述id自动编号是唯 一标识Cid数字40文 章ID编号Cname文本50否昵称Ccontent文本200否评 论内容Cdate日 期 /时间8Now()添 加时间ptab_photo(相册信息表)相册信息表主要用于保存上传的相册信息内容,tab_photo表的结构如表16-4所示。表16-4tab_photo表结构字段名称数据类型是否主键长度默认值允许空字段描述id自动编号是唯 一标识Pclass数字40相 册分类IDPname文本50否图 片名称Ppic文本50否图 片信息Pdate日 期 /时间8Now()添 加时间ptab_photo_class(相册分类信息表)相册分类信息表主要用于保存相册的分类信息,tab_photo_class表的结构如表16-5所示。表16-5tab_photo_class表结构字段名称数据类型是否主键长度默认值允许空字段描述id自动编号是唯 一 标识Pcname文本50否相 册 分类名称Pcdate日 期 /时间8Now()添 加 时间 在网站构建的前期,可以把网站中可能用到的文件夹先创建出来(例如:创建一个名为images的文件夹,用于保存网站中使用的图片),这样可以规范网站的整体架构,使网站易于开发、易于管理、易于维护。笔者在开发博客网站时,设计了如图16-9所示的文件夹架构。图16-9 文件夹架构图16.4 16.4 文件架构设计文件架构设计16.5 16.5 公共文件的编写公共文件的编写16.5.1 防止SQL注入和创建数据库连接16.5.2 统计访问量 为了防止SQL注入漏洞,可以将其相关代码与创建数据库连接的代码放置在同一个文件中(如conn.asp文件)。这样,可以保证网站中绝大部分文件都可以引用该公用文件,从而保证网站的安全。1防止SQL注入 当应用程序使用输入内容来构造动态SQL语句访问数据库时,会产生SQL注入攻击,SQL注入成功后,就会出现攻击者可以随意在数据库中执行命令的漏洞。所以,在程序代码中把一些SQL命令或者SQL关键字进行屏蔽,可以防止SQL注入漏洞的产生。 将防止SQL注入漏洞的程序代码写入到数据库连接文件中,保证网站中的每个页面都调用此程序。程序逻辑是首先将需要屏蔽的命令、关键字、符号等用符号“|”分隔并存储在变量中,再使用Split和Ubound脚本函数将页面接收到的字符串数据与其作比较,如果接收到的字符串数据包含屏蔽的数据信息,则将页面转入到指定页面,不允许访问者进行其他操作。代码如下:%dim SQL_Injdata SQL_Injdata = |;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare 定义需要屏蔽的命令、关键字、符号等SQL_inj = split(SQL_Injdata,|) 获得由“|”分隔的一维数组If Request.QueryString Then For Each SQL_Get In Request.QueryString 遍历QueryString数据集合中的数据 For SQL_Data=0 To Ubound(SQL_inj) 如果搜索到屏蔽的数据,则跳转到网站首页 if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_Data)0 Then Response.Redirect(index.asp) end if next Next End If%16.5.1 16.5.1 防止防止SQLSQL注入和创建数据库连接注入和创建数据库连接2创建数据库连接 为了提高程序的运行效率,保证网站浏览者能够以较快地速度打开并顺畅地浏览网页,可以通过OLE DB方法连接Access数据库。OLE是一种面向对象的技术,利用这种技术可以开发可重用软件组件。使用OLE DB不仅可以访问数据库中的数据,还可以访问电子表格Excel、文本文件、邮件服务器中的数据等。使用OLE DB访问Access数据库的代码如下: 在网站中通过设计一个计数器可以统计网站的访问量,从而能够准确地掌握网站的访问情况。实现网站计数器的方法有很多,例如,可以使用FileSystemObject对象对文本文件进行操作。设计思路如下:(1)在判断指定的Cookies变量visitor为空的前提下,创建FileSystemObject对象并以只读方式打开文本文件count.txt,读取其中的数据赋予指定的变量。(2)再以写文件方式打开文本文件count.txt,将访问量累加1后写入到文件中。(3)给Cookies变量visitor赋值,并设置此变量的有效期为1天。代码如下:可以将以上代码编写在conn.asp文件中,以保证有效地统计网站访问量。16.5.2 16.5.2 统计访问量统计访问量16.6 16.6 前台主页面设计前台主页面设计16.6.1 前台主页面概述16.6.2 前台主页面的布局16.6.3 前台主页面的实现 网站前台主页面是网站提供给浏览者的第一视觉界面。前台首页不仅要有合理的整体布局,使浏览者有一个流畅的视觉体验;还应该通过各功能模块体现出网站的主题内容,使浏览者在最短的时间内了解网站的用途。本系统前台主页面的运行效果如图16-10所示。 图16-10 前台主页面16.6.1 16.6.1 前台主页面概述前台主页面概述 前台主页面框架采用两分栏结构,分为4个区域:页头、侧栏、页尾和内容显示区。实现前台主页面的ASP文件为index.asp,该页面的布局如图16-11所示。图16-11 前台主页面布局 在index.asp文件中主要采用#include指令来包含各区域所对应的ASP文件。例如,页头对应文件为top.asp,侧栏对应文件为left.asp。在内容显示区,则定义浮动框架标记用于显示其他文件内容。16.6.2 16.6.2 前台主页面的布局前台主页面的布局 根据图16-11所示的页面布局,可以在index.asp页面中创建一个三行两列的表格,然后在相应的单元格中使用#include指令包含相应的ASP页面,并在左侧单元格中定义标记。代码如下: Copyright 2008 © Future PYJ 16.6.3 16.6.3 前台主页面的实现前台主页面的实现16.7 16.7 文章展示模块设计文章展示模块设计16.7.1 文章展示模块概述16.7.2 主页面文章展示的实现过程16.7.3 文章列表展示的实现过程16.7.4 文章详细显示的实现过程16.7.1 16.7.1 文章展示模块概述文章展示模块概述 文章展示模块的主要功能是浏览网站发表的文章列表,可以查看文章的详细内容,包括文章作者、发表时间等,并可以针对文章发表评论。 文章展示模块主要包括:前台主页面文章展示;文章分类列表展示,如图16-12所示;图16-12 文章分类列表展示文章详细内容显示,如图16-13所示。图16-13 文章详细内容显示16.7.2 16.7.2 主页面文章展示的实现过程主页面文章展示的实现过程 在网站前台主页面中展示最新的两篇文章信息,包括文章标题、文章部分内容、发表时间以及评论数量,单击“阅读全文”超链接可以查看到文章的详细内容,如图16-10所示。在web_index.asp页面中,首先查询文章信息表中最新的两条记录,然后在依次展示文章内容的同时查询文章评论信息表以获取文章对应的评论数量。代码如下:%Set rs=Server.CreateObject(ADODB.Recordset)查询最新的两条记录信息sqlstr=select top 2 id,Atitle,Adate,Aclass,Acontent from tab_article order by id descrs.open sqlstr,conn,1,1If rs.eof ThenResponse.Write(暂无收藏!)Response.End()Elsewhile not rs.eof应用whilewend语句循环显示记录集中的记录Set rs_commend=conn.Execute(select count(id) as num from tab_article_commend where Cid=&rs(id)&)获取评论数量% a href=web_blog_view.asp?id=&num=阅读全文 发表时间: | 评论: 16.7.3 16.7.3 文章列表展示的实现过程文章列表展示的实现过程 文章列表展示主要包括显示根据选择的文章分类或者通过Blog搜索查找到的文章列表内容。当用户在网站导航栏处单击“我的文章”超链接,将显示按照发表时间倒序排序的文章列表;在该页面中单击文章分类,可以显示对应分类的文章列表;当用户在前台主页面的Blog搜索栏目输入查询内容,则显示与之查询内容匹配的文章列表。 文章列表页面web_blog_list.asp首先获取传递的参数值,根据参数值确定显示文章列表的条件从而执行相应的SQL查询语句。关键程序代码如下:%获取传递的参数,根据参数值确定SQL查询语句classid=Request.QueryString(classid)获取文章分类IDclassname=Request.QueryString(classname)获取文章分类名称If classname Then megstr=&classname& 之btype=Request.Form(btype)获取查询条件keyword=Request.Form(keyword)获取查询关键字Set rs=Server.CreateObject(ADODB.Recordset)创建Recordset对象查询最新文章记录sqlstr=select top 14 id,Atitle,Adate,Aclass from tab_article where 1=1按分类查询If IsNumeric(classid) and classid Then sqlstr=sqlstr& and Aclass=&classid&按查询条件搜索,如文章标题、文章内容或者作者If keyword ThenSelect case btypecase 1 sqlstr=sqlstr& and Atitle like %&keyword&%case 2 sqlstr=sqlstr& and Acontent like %&keyword&%case 3 sqlstr=sqlstr& and Aauthor like %&keyword&%End SelectEnd Ifsqlstr=sqlstr& order by id descrs.open sqlstr,conn,1,1打开记录集rsIf rs.eof Then% 您查询的记录暂无收藏! a href=web_blog_view.asp?id=&num= 16.7.4 16.7.4 文章详细显示的实现过程文章详细显示的实现过程 文章详细显示包括显示文章的详细内容、文章作者以及文章发表时间,并展示文章对应的评论内容。在文章详细显示页面中,单击“评论”超链接,浏览者可以填写信息发表评论。下面介绍文章详细显示的实现过程。(1)页面web_blog_view.asp根据接收到的参数,查询文章信息表展示文章内容,同时查询文章评论信息表展示文章对应的评论信息。关键程序代码如下: 发表时间: 评论: 作者: 昵  称: 评论时间: (2)当单击“评论”超链接时,显示用于提交评论信息的表单。代码如下: 昵称: 评论内容: 提示(最多允许 个字节 已用字节: 剩余字节: ) 验证密码: input name=verify2 type=hidden id=verify2 value= / input name=id type=hidden id=id value= / input name=num type=hidden id=num value= / function Mycheck(form)/用于验证表单数据 for(i=0;iform.length;i+) if(form.elementsi.value=) alert(form.elementsi.name + 不能为空!);return false;if(form.elements5.value!=form.elements6.value) alert(验证码错误!);return false; function show_tr()/用于显示或者隐藏“评论表单” if(xuxian.style.display=none) xuxian.style.display=block;commend_show.style.display=block; else xuxian.style.display=none;commend_show.style.display=none; (3)当用户填写昵称、评论内容以及验证密码后,程序将此信息添加到文章评论信息表中,代码如下:%Session(verify)=-添加新的评论-Sub add() id=Request.Form(id)文章ID num=Request.Form(num) str1=Str_filter(Request.Form(评论人昵称) str2=Str_filter(Request.Form(评论内容) If str1 and str2 Then Set rs=Server.CreateObject(ADODB.Recordset) sqlstr=select * from tab_article_commend rs.open sqlstr,conn,1,3 rs.addnew rs(Cid)=id rs(Cname)=str1 rs(Ccontent)=str2 rs.update rs.close Set rs=Nothing Response.Redirect(web_blog_view.asp?id=&id&num=&num+1&)Else Response.Write(alert(您填写的信息不完整!);history.back();)End IFEnd SubIf Not Isempty(Request(add) Then call add()%16.8 16.8 相册展示模块设计相册展示模块设计16.8.1 相册展示模块概述16.8.2 相册展示的实现过程16.8.1 16.8.1 相册展示模块概述相册展示模块概述 相册展示模块主要用于分类展示上传的相册图片信息,即列出相册的分类以及分类中包含的图片。相册分类展示,如图16-14所示;图16-14 相册分类展示相册分类对应的图片展示,如图16-15所示。图16-15 相册图片展示16.8.2 16.8.2 相册展示的实现过程相册展示的实现过程1相册分类展示 相册分类展示是指显示数据库中的相册分类信息。相册分类页面读取相册分类信息数据表以及相册信息数据表中与分类对应的第一个图片信息,并以表格形式显示分类对应的第一张图片信息以及分类名称,如果分类没有图片信息则以默认图片代替。web_photo.asp页面的关键程序代码如下: a href=web_photo_list.asp?classid=&classname= img src=upfile/ height=100 width=120 border=0 / tdhref=web_photo_list.asp?classid=&classname= 2相册图片显示 相册图片显示是按照选择的分类显示该分类的全部图片信息,包括图片以及图片名称。由于相册图片是上传到服务器的,所以读取时使用HTML语言的标记,指定图片路径即可显示图片信息。web_photo_list.asp页面的关键程序代码如下: img src=upfile/ height=100 width=120 border=0 / 16.9 16.9 博主登录模块设计博主登录模块设计16.9.1 博主登录功能概述16.9.2 博主登录的实现过程16.9.1 16.9.1 博主登录功能概述博主登录功能概述 当用户通过单击前台主页面导航栏处的“博客管理”超链接后,将进入博主登录页面,如图16-16所示。图16-16 博主登录 当用户没有输入用户名和密码,或者输入了错误的用户名和密码进行登录时,页面会给出相应的提示信息。当用户输入正确的用户名和密码,则允许进入到博客后台系统进行操作。博主登录模块的操作流程如图16-17所示。 图16-17 博主登录模块流程图 在博主登录页面中,除了输入用户名和密码,还要求用户输入随机生成的验证码,这样可以提高网站的安全性。为了防止非博主用户非法登录博客后台系统,还应定义浏览器缓存该登录页面的有效期限。管理员登录页面进入填写用户名与密码身份验证进入后台登录成功失败16.9.2 16.9.2 博主登录的实现过程博主登录的实现过程1设置页面缓存有效期限 通过Response对象的Expires属性和CacheControl属性不允许浏览器缓存页面,以提高网站安全性,代码如下:以上代码应放置在页面login.asp的开头。2设计表单建立表单,用于输入用户名、密码和验证码,代码如下:用户名: 密 码: 验证码:input type=hidden name=verifycode2 value=3实现登录验证 当用户提交登录表单,程序将首先验证用户输入的验证码是否正确,然后依次验证输入的用户名、密码。如果信息通过验证则将用户名保存到Session变量中,并允许用户登录到后台首页面。代码如下:%session(verifycode)=randStr(4)根据conn.asp文件中自定义的函数获得生成的随机字符If Not Isempty(Request(login) Then获取表单数据 txt_name=Str_filter(Request.Form(txt_name) txt_passwd=Str_filter(Request.Form(txt_passwd) verifycode=Str_filter(Request.Form(verifycode) verifycode2=Str_filter(Request.Form(verifycode2)检查验证码 If verifycode verifycode2 then Response.writealert(您输入的验证码不正确!);location.href=login.aspResponse.End() Else Session(verifycode)= End IF If txt_name Then Set rs=Server.CreateObject(ADODB.Recordset)sqlstr=select Mname,Mpasswd from tab_manager where Mname=&txt_name&rs.open sqlstr,conn,1,1If rs.eof Then Response.Write(alert(用户名不正确,请核实后重新输入!);location.href=login.asp;)Else If rs(Mpasswd)txt_passwd Then Response.Write(alert(密码不正确,请确认后重新输入!);location.href=login.asp;) Else Session(Mname)=rs(Mname)将用户名保存到Session变量中Response.Redirect(index.asp) End IfEnd If Else errstr=请输入用户名! End IfEnd If%16.10 16.10 文章管理模块设计文章管理模块设计16.10.1 文章管理模块概述16.10.2 文章分类管理的实现过程16.10.3 文章添加的实现过程16.10.4 文章查询和删除的实现过程16.10.1 16.10.1 文章管理模块概述文章管理模块概述 文章管理模块的主要功能包括文章分类的管理,文章信息的添加、查询、修改和删除操作以及对文章相关评论的管理。 进入后台主页面后,单击左侧导航栏处的“文章分类”超链接,可以对文章分类进行添加、修改和删除操作,如图16-18所示。 图16-18 文章分类添加文章分类后,单击左侧导航栏处的“文章添加”超链接,可以添加新的文章,如图16-19所示。 图16-19 文章添加 单击左侧导航栏处的“文章浏览”超链接,可以在打开的页面中执行查询或者删除文章的操作,在该页面中还提供“修改”文章以及“查看评论”的入口,如图16-20所示;图16-20 文章列表浏览在图16-20中单击文章对应的“评论”超链接可以查看评论信息,如图16-21所示。图16-21 文章评论浏览16.10.2 16.10.2 文章分类管理的实现过程文章分类管理的实现过程 文章分类管理是指实现对文章分类名称的添加、修改以及删除操作。下面介绍文章分类管理的实现过程。(1)在文章分类管理页面ad_article_class.asp中,建立两个表单:一个用于展示现有的文章分类信息;另一个用于添加文章分类。代码如下: 类别名称 操 作 form name=form2 method=post action= input name=类别名称 type=text id=类别名称 value= class=textboxinput name=id type=hidden id=id value= 类别名称: (2)定义了3个子过程,分别使用Insert into、Update和Delete语句实现添加、修改和删除文章类别名称的功能。关键程序代码如下:16.10.3 16.10.3 文章添加的实现过程文章添加的实现过程文章添加是指将文章的相关信息,包括文章分类、文章作者、文章主题和文章内容添加到数据库中,添加的文章信息将展示在网站前台页面中。下面介绍文章添加的实现过程。(1)在页面ad_article.asp中建立表单,用于输入文章信息,代码如下: 文章类别: 选择类别 option value= 文章作者: 文章主题: 文章内容:   (2)定义用于添加数据的子程序,将获取到的表单信息使用Recordset对象的AddNew方法添加到数据库中。关键程序代码如下:%添加新记录Sub add() str1=Str_filter(Request.Form(文章类别) str2=Str_filter(Request.Form(文章作者) str3=Str_filter(Request.Form(文章主题) str4=Str_filter(Request.Form(文章内容)If str1 and str2 and str3 and str4 Then Set rs=Server.CreateObject(ADODB.Recordset) sqlstr=select * from tab_article rs.open sqlstr,conn,1,3 rs.addnew rs(Aclass)=str1 rs(Aauthor)=str2 rs(Atitle)=str3 rs(Acontent)=str4 rs.update rs.close Set rs=Nothing Response.Redirect(ad_article_list.asp)16.10.4 16.10.4 文章查询和删除的实现过程文章查询和删除的实现过程 文章浏览的主要功能是以分页形式显示所有文章信息,可以按照条件查询文章,可以删除指定文章,而且提供了修改文章以及查看文章评论的入口。1查询文章(1)在页面ad_article_list.asp中建立用于查询的表单,在该表单中插入列表/菜单、文本框,以选择或输入查询条件,如文章类别、标题、作者名称,代码如下: 类别: 选择类别 option value= 文章标题:   作者名称:     (2)页面根据获得的查询参数(如文章类别、文章标题、文章作者),来确定SQL查询语句,并以分页形式显示查询到的文章信息。关键程序代码如下: 类别 作者 文章标题 操 作 %txt_class=Request(txt_class)txt_title=Request(txt_title)txt_author=Request(txt_author)Set rs=Server.CreateObject(ADODB.Recordset)sqlstr=select * from tab_article where 1=1If txt_class and txt_class选择类别 Then sqlstr=sqlstr& and Aclass=&txt_class&“If txt_title Then sqlstr=sqlstr& and Atitle like %&txt_title&%If txt_author Then sqlstr=sqlstr& and Aauthor like %&txt_author&%sqlstr=sqlstr& order by id descrs.open sqlstr,conn,1,1If Not (rs.eof and rs.bof) Thenrs.pagesize=8 定义每页显示的记录数pages=clng(Request(pages) 获得当前页数If pagesrs.recordcount Then pages=rs.recordcountshowpage rs,pages 执行分页子程序showpageSub showpage(rs,pages) 分页子程序showpage(rs,pages)rs.absolutepage=pages 指定指针所在的当前位置For i=1 to rs.pagesize 循环显示记录集中的记录% input name=id type=hidden id=id value= a href=ad_article.asp?id=&action=view修改 a href=ad_article_commend.asp?id=&Atitle=评论 %if pages1 thenresponse.Write(  首页)response.Write(  上一页)end if response.Write(  当前 &pages&/&rs.pagecount& 页)if pagesrs.pagecount thenresponse.Write(  下一页)response.Write(  末页)end if rs.close Set rs=Nothing % 2删除文章 在页面ad_article_list.asp中单击“删除”按钮可以删除选定的文章,并同时删除与文章对应的所有评论信息,代码如下:16.11 16.11 相册管理模块设计相册管理模块设计16.11.1 相册管理模块概述16.11.2 上传图片的实现过程16.11.3 浏览图片的实现过程16.11.4 删除图片的实现过程16.11.1 16.11.1 相册管理模块概述相册管理模块概述 相册管理模块的主要功能包括对相册分类的管理以及上传、浏览和删除照片。 进入后台主页面后,单击左侧导航栏处的“相册分类”超链接,可以对相册分类进行添加、修改和删除操作,如图16-22所示。图16-22 相册分类 添加相册分类后,单击左侧导航栏处的“相册上传”超链接,在打开的页面中选择相册类别、输入图片名称、单击“浏览”选择上传图片路径并单击“上传”按钮实现上传图片到服务器的功能,如图16-23所示。图16-23 相册上传 单击左侧导航栏处的“相册查看”超链接,可以执行查询或者删除图片信息的操作,在该页面中还提供“修改”图片信息的入口,如图16-24所示。图16-24 相册查看16.11.2 16.11.2 上传图片的实现过程上传图片的实现过程 上传图片的实现原理是首先获取到图片的二进制数据,然后将其添加到数据库中,再利用Stream对象加载数据库中的图片信息将其保存到指定的服务器路径下。下面介绍上传图片的实现过程。(1)在页面ad_photo.asp中建立表单,在表单中插入列表/菜单、文本框以选择相册类别和输入图片名称,并定义标记用于包含上传图片的表单,代码如下: 相册类别: 选择类别 option value= 图片名称: 图片信息:   (2)在页面UpFile.asp建立表单,在表单中插入文件域、按钮,用于上传图片,代码如下: (3)当用户选择了上传图片,并单击“上传”按钮后,在程序处理页面UpLoad.asp将根据文件格式提取图片数据,并将其保存在Session变量中。同时,获取上传的图片路径,也将其保存在Session变量中。代码如下:3000 Then Response.write alert(您上传的文件大小超出规定的范围,请重新上传!);window.location.href=Upfile.asp; response.End()End IfimgData=request.BinaryRead(imgsize)Hcrlf=chrB(13)&chrB(10)Divider=leftB(imgdata,clng(instrB(imgData,Hcrlf)-1)dstart=instrB(imgData,chrB(13)&chrB(10)&chrB(13)&chrB(10)+4Dend=instrB(dstart+1,imgdata,divider)-dstartMydata=MidB(imgdata,dstart,dend)Session(pic)=Mydata保存图片信息获取客户端文件路径datastart=InstrB(imgData,Hcrlf)+59dataend=InstrB(datastart,imgData,Hcrlf)-2datalen=dataend-datastart+1filepath=MidB(imgData,datastart,datalen)filepath=toStr(filepath)Session(filepath)=filepath保存上传图片路径将二进制数据转换为字符串Function toStr(Byt)Dim blow toStr = For i = 1 To LenB(Byt) blow = MidB(Byt, i, 1) If AscB(blow) 127 Then toStr = toStr & Chr(AscW(MidB(Byt, i + 1, 1) & blow) i = i + 1 Else toStr = toStr & Chr(AscB(blow) End If NextEnd Function%(4)当用户输入图片信息并完成上传图片的操作后,在ad_photo.asp页面中单击“添加”按钮即可将图片相关信息保存到数据库中,并将图片上传到服务器上。代码如下:%根据日期和时间获取文件名称Function GetFileName(dDate)根据传递的时间字符串,以及Year、Month、Day、Hour、Minute和Second函数定义返回的字符串格式 GetFileName = RIGHT(0000+Trim(Year(dDate),4)+RIGHT(00+Trim(Month(dDate),2)+RIGHT(00+Trim(Day(dDate),2)+RIGHT(00 + Trim(Hour(dDate),2)+RIGHT(00+Trim(Minute(dDate),2)+RIGHT(00+Trim(Second(dDate),2)End Function定义用于获取文件扩展名的函数Function GetExt(filepath)Dim arr定义变量arr=split(filepath,.)使用split函数以小数点为分隔符,返回一维数组nums=Ubound(arr)获取数组元素个数If nums=0 Then如果nums值为0,则说明没有文件扩展名GetExt=无Else如果nums值不为0,则将数组指定元素赋予GetExtGetExt=.&arr(nums)End IfEnd FunctionSub add() str1=Str_filter(Request.Form(相册类别) str2=Str_filter(Request.Form(图片名称) str3=Session(pic) filepath=Session(filepath) filename=GetFileName(now()&GetExt(filepath)If str1 and str2 and str3 Then Set rs=Server.CreateObject(ADODB.Recordset) sqlstr=select * from tab_photo rs.open sqlstr,conn,1,3 rs.addnew rs(Pclass)=str1 rs(Pname)=str2 rs(Ppic)=filename rs(Pinfo).appendchunk str3将二进制图片数据添加到数据库中 Session(pic)= Session(filepath)= rs.update 获取上传后记录的ID编号 temp=rs.bookmark rs.bookmark=temp fileID=rs(id) rs.close 将数据库中的文件保存到服务器 sqlstr=select * from tab_photo where id=&fileID& rs.open sqlstr,conn,1,3 Dim objStream Set objStream=Server.CreateObject(ADODB.Stream) objStream.Type=1 objStream.Open objStream.Write rs(Pinfo).GetChunk(8000000) objStream.SaveToFile Server.MapPath(./upfile)&/&filename,2 objStream.Close Set objStream=Nothing rs.close Set rs=Nothing Response.Redirect(ad_photo_list.asp)Else Response.Write(alert(您填写的信息不完整!);history.back();)End IfEnd SubIf Not Isempty(Request(add) Then call add()%16.11.3 16.11.3 浏览图片的实现过程浏览图片的实现过程浏览图片包括查看所有的图片信息以及浏览查询到的图片信息。下面介绍浏览图片的实现过程。(1)在页面ad_photo_list.asp中建立用于查询的表单,在该表单中插入列表/菜单、文本框,以选择或输入查询条件,如选择相册类别或者输入图片名称,代码如下: 类别: 选择类别 option value= (2)页面根据获得的查询参数(如相册类别、图片名称),来确定SQL查询语句,并以分页形式显示查询到的文章信息。关键程序代码如下: 类别 图片名称 操 作 %txt_class=Request(txt_class)txt_title=Request(txt_title)Set rs=Server.CreateObject(ADODB.Recordset)sqlstr=select * from tab_photo where 1=1If txt_class and txt_class选择类别 Then sqlstr=sqlstr& and Pclass=&txt_class&If txt_title Then sqlstr=sqlstr& and Pname like %&txt_title&%sqlstr=sqlstr& order by id descrs.open sqlstr,conn,1,1If Not (rs.eof and rs.bof) Thenrs.pagesize=8 定义每页显示的记录数pages=clng(Request(pages) 获得当前页数If pagesrs.recordcount Then pages=rs.recordcountshowpage rs,pages 执行分页子程序showpageSub showpage(rs,pages) 分页子程序showpage(rs,pages)rs.absolutepage=pages 指定指针所在的当前位置For i=1 to rs.pagesize 循环显示记录集中的记录% form name=form1 method=post action= input name=id type=hidden id=id value= a href=ad_photo.asp?id=&action=view修改 %if pages1 thenresponse.Write(首页)response.Write(上一页)end if response.Write(当前 &pages&/&rs.pagecount& 页)if pagesrs.pagecount thenresponse.Write(下一页) response.Write(末页)end if rs.close Set rs=Nothing % 16.11.4 16.11.4 删除图片的实现过程删除图片的实现过程 删除图片包括删除存储在服务器上的图片文件以及数据库中对应的图片记录。 在页面ad_photo_list.asp中单击“删除”按钮,即可删除对应的图片信息。在页面中首先创建FileSystemObject对象并调用Delete方法删除指定路径和名称的图片文件,然后再执行Delete语句删除数据库中的记录。代码如下:16.12 16.12 网站发布网站发布16.12.1 注册域名16.12.2 申请空间16.12.3 将域名解析到服务器16.12.4 上传网站16.12.1 16.12.1 注册域名注册域名域名就是用来代替IP地址,以方便记忆及访问网站的名称,如 就是网易的域名;就是中文雅虎的域名。域名需要到指定的网站中注册购买,名气较大的有www. (万网)、(新网)。购买注册域名步骤如下:(1)登录域名服务商网站。(2)注册会员。如果不是会员则无法购买域名。(3)进入域名查询页面,查询要注册的域名是否已经被注册。(4)如果用户欲注册的域名未被注册,则进入域名注册页面并填写相关的个人资料。(5)填写成功后,单击“购买”按钮。注册成功。(6)付款后,等待域名开启。 16.12.2 16.12.2 申请空间申请空间 域名注册完毕后就需要申请空间了,空间可以使用虚拟主机或租借服务器。目前,许多企业建立网站都采用虚拟主机,这样既节省了购买机器和租用专线的费用,同时也不必聘用专门的管理人员来维护服务器。申请空间的步骤如下:(1)登录虚拟空间服务商网站。(2)注册会员(如果已有会员账号,则直接登录即可)。(3)选择虚拟空间类型(空间支持的语言、数据库、空间大小和流量限制等)。(4)确定机型后,直接购买。(5)进入到缴费页面,选择缴费方式。(6)付费后,空间在24小时内开通,随后即可使用此空间。注意: 申请的空间一定要支持相应的开发语言及数据库。如本网站要求空间支持的语言为ASP,数据库是Access。16.12.3 16.12.3 将域名解析到服务器将域名解析到服务器 域名和空间购买成功后就需要将域名地址指向虚拟服务器的IP了。进入域名管理页面,添加主机记录,一般要先输入主机名,注意不包括域名,如解析,只需输入www即可,后面的不需要填写,接下来填写IP地址,最后单击“确定”按钮即可。如果想添加多个主机名,重复上面的操作即可。16.12.4 16.12.4 上传网站上传网站 最后是上传网站。上传网站需要使用FTP软件,例如,CuteFTP软件。下面就以CuteFTP软件为例,详细介绍上传网站的操作步骤。(1)打开FTP软件。(2)选择File/Site-Manager命令,将弹出站点面板。(3)单击New按钮,新建一个站点。(4)在Label for site 中输入站点名。(5)在FTP Host Address中输入域名。(6)在FTP site User Name中输入用户名。(7)在FTP site Password中输入密码。(8)单击“Edit.”按钮,弹出编辑窗口。(9)取消选中Use PASV mode和Use firewall setting复选框。(10)单击“确定”按钮。(11)单击Connet按钮连接到服务器。(12)连接服务器后,在左侧的本地页面中,选中需要上传的文件,单击“上传文件”按钮即可。(13)如果上传过程中出现错误,右击“继续上传”即可。(14)上传成功后,关闭FTP软件。1/22/20221/22/20229696在线教务辅导网:在线教务辅导网:http:/ 更多课程配套课件资源请访问在线教务辅导网更多课程配套课件资源请访问在线教务辅导网1/22/20221/22/202297971/22/20221/22/202298981/22/20221/22/202299991/22/20221/22/20221001001/22/20221/22/20221011011/22/20221/22/2022102102馋死1/22/20221/22/20221031031/22/20221/22/20221041041/22/20221/22/20221051051/22/20221/22/20221061061/22/20221/22/20221071071/22/20221/22/20221081081/22/20221/22/202
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!