|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。 经由了文章的添加、保留、显示,那末如今应当来谈谈关于办理法式的显示主页面,也就是显示一切文章的题目毗连,以便利阅读者查找文章,其应当具有的功效有:显示一切文章的题目毗连,到场日期,阅读次数等信息,别的还必需供应分页功效,要否则这么多的文章题目在一个页面都显示出来,那将十分的费时且方便阅读,别的因为本法式在这里联合了文章分栏目搜刮的功效,所以在这里也将一同引见了。
上面就为人人具体的引见主页面index.asp的这些功效的完成进程和其详细功用:
"创立数据库毗连
<!--#include file="conn.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ASP专题栏目</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<link rel="stylesheet" type="text/CSS" href="style.css">
<script language="javascript">
function popwin2(path)
{ window.open(path,"","height=450,width=600,resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no");
}
</script>
</head>
<%
"界说每页最大文章题目显示量MaxPerPage,你可以本人修正这里的数字来到达你的最好显示后果
const MaxPerPage=18
dim totalPut
dim CurrentPage
dim TotalPages
dim i,j
"假设前往的页面信息是空的,也就是假如你直接输出index.asp,那末就用这里界说的页数第一页
if not isempty(request("page")) then
currentPage=cint(request("page"))
else
currentPage=1
end if
dim sql
dim rs
dim rstype
dim typesql
dim typeid,typename
"假如前往的栏目信息为空,那末就用这里界说的栏目,这里指定的是第三个栏目
if not isEmpty(request("typeid")) then
typeid=request("typeid")
else
typeid=3
end if
"经由过程前往的栏目typeid号,翻开数据库显示指定的栏目,并把其值交给typename
set rstype=server.createobject("adodb.recordset")
typesql="select * from type where typeID="&cstr(typeid)
rstype.open typesql,conn,1,1
typename=rstype("type")
rstype.close
%>
<body>
<div align="center"><center>
<table border="0" width="95%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%" style="border-left: thin dotted rgb(0,128,0); border-right: thin dotted rgb(0,128,0)"><p align="center"><br>
"显示栏目信息,当你点击了任何一个栏目,在typename的地位城市显示相干信息,这里没有采取栏目标主动显示体例是思索了页面的显示后果,而采取手工添加的形式,要想采取主动形式,就本人写吧:)信任你进修到如今,不会连这个都编不出来吧!
动网ASP技能专题>><font color="#FF0000"><%response.write ""&typename&""%></font><br>
<a href="index.asp?typeid=1">ASP FAQ</a>|<a href="index.asp?typeid=2">ASP组件</a> |<a href="index.asp?typeid=3">ASP文摘</a>|<a href="index.asp?typeid=4">ASP实例</a>|<a href="index.asp?typeid=5">ASP平安</a> </p>
<div align="center">
"翻开指定的纪录集article并依照文章的到场日期排序,在这里翻开有两个前提,一个是使用like来查询数据库并显示相干文章题目,还有就是经由过程前往的typeid显示指定栏目标文章
<%
sql="select * from article where title like '%"&request("txtitle")&"%' and typeid="+cstr(typeid)+" order by date desc"
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
"假如查询数据库的了局指向纪录集的入手下手或开头,暗示数据库中没有任何相干文章
if rs.eof and rs.bof then
response.write "<p align='center'>没有或没有找就任何文章</p>"
else
"假如数据库内有内容,则获得数据库内文章数量
totalPut=rs.recordcount
"假设页面参数currentpage小于1,则指定为1
if currentpage<1 then
currentpage=1
end if
"使用文章总数和每页最大文章数算得分页的页数
if (currentpage-1)*MaxPerPage>totalput then
if (totalPut mod MaxPerPage)=0 then
currentpage= totalPut \ MaxPerPage
else
currentpage= totalPut \ MaxPerPage + 1
end if
end if
"假如分页的页数为1或页面数减1乘与页面最大文章数小于文章总数,则用已做好的function showpage在showContent子法式也就是显示文章题目局部的下面和上面显示分页法式
if currentPage=1 then
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
else
if (currentPage-1)*MaxPerPage<totalPut then
rs.move (currentPage-1)*MaxPerPage
"界说书签
dim bookmark
bookmark=rs.bookmark
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
else
currentPage=1
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
end if
end if
rs.close
end if
set rs=nothing
"显示文章题目及相干数据库内容子法式
sub showContent
dim i
i=0
%>
<div align="center"><center><table border="1" cellspacing="0" width="589" bordercolorlight="#000000" bordercolordark="#FFFFFF" cellpadding="0">
<tr>
<td width="46" align="center" bgcolor="#D0D0D0" height="20"><strong>ID号</strong></td>
<td width="381" align="center" bgcolor="#D0D0D0"><strong>文章题目</strong></td>
<td width="98" align="center" bgcolor="#D0D0D0"><strong>到场日期</strong></td>
<td width="58" align="center" bgcolor="#D0D0D0"><strong>点击</strong></td>
</tr>
<%do while not rs.eof%>
<tr>
"顺次显示文章ID号,文章题目,文章到场日期及阅读数,这里的openarticle.asp是用来从头定向文章的,今后将为人人引见
<td height="23" width="46"><p align="center"><%=rs("articleid")%></td>
<td width="381"><p align="center"><a href="javascript:popwin2('openarticle.asp?id=<%=rs("articleid")%>&typeid=<%=cstr(typeid)%>')"><%=rs("title")%></a></td>
<td width="98"><p align="center"><font color="red"><i><%=rs("date")%></i></font></td>
<td width="58"><p align="center"><%=rs("hits")%></td>
</tr>
<%
"这里是一个轮回,每显示一篇文章,则界说的变量i的值加一,当i的值大于或等于页面最大文章数时加入轮回
i=i+1
if i>=MaxPerPage then exit do
"显示完一篇文章今后,主动移到纪录集的下一个纪录
rs.movenext
loop
%>
</table>
</center></div><%
end sub
"显示分页的function
function showpage(totalnumber,maxperpage,filename)
dim n
"使用文章数算出文章的分页数N
if totalnumber mod maxperpage=0 then
n= totalnumber \ maxperpage
else
n= totalnumber \ maxperpage+1
end if
response.write "<form method=Post action="&filename&"?typeid="&typeid&">"
response.write "<p align='center'><font color='#000080'>>>分页</font> "
"假如以后页数小于2,则显示的文章首页和上一页不显示毗连,不然用以后页数减去1来显示上一页,直接用page=1来显示首页
if CurrentPage<2 then
response.write "<font color='#000080'>首页 上一页</font> "
else
response.write "<a href="&filename&"?page=1&typeid="&typeid&">首页</a> "
response.write "<a href="&filename&"?page="&CurrentPage-1&"&typeid="&typeid&">上一页</a> "
end if
"假设分页页数小于1,则直接显示下一页和尾页,不然用以后页数加上1来显示下一页,用已算出的文章分页数N显示文章的尾页
if n-currentpage<1 then
response.write "<font color='#000080'>下一页 尾页</font>"
else
response.write "<a href="&filename&"?page="&(CurrentPage+1)&"&typeid="&typeid&">"
response.write "下一页</a> <a href="&filename&"?page="&n&">尾页</a>"
end if
"用N和maxperpage显示文章的分页数和每页的文章数
response.write "<font color='#000080'> 页次:</font><strong><font color=red>"&CurrentPage&"</font><font color='#000080'>/"&n&"</strong>页</font> "
response.write "<font color='#000080'> 共<b>"&totalnumber&"</b>篇文章 <b>"&maxperpage&"</b>篇文章/页</font> "
"直接输出文章地点页面转到相干页面
response.write " <font color='#000080'>转到:</font><input type='text' name='page' size=4 maxlength=10 class=smallInput value="¤tpage&">"
response.write "<input class=buttonface type='submit' value=' Goto ' name='cndok'></span></p></form>"
end function
%>
"文章搜刮相干法式
<form name="searchtitle" method="POST" action="index.asp">
"把输出的查询字符赋值给txtitle,如许在后面的显示文章语句就起了感化title like '%"&request("txtitle")&"%'
<p>题目:<input class="smallInput" type="text" name="txtitle" size="13"> <select class="smallSel" name="typeid" size="1">
<%
"显示与文章相干的栏目信息,可以选择一个停止查询,这里的typeid也赋值给了typeid,以使后面的显示文章的法式对需求显示内容做出判别
typesql="select * from type"
rstype.open typesql,conn,1,1
do while not rstype.eof
sel="selected"
response.write "<option " & sel & " value='"+CStr(rstype("typeID"))+"' name=typeid>"+rstype("type")+"</option>"+chr(13)+chr(10)
rstype.movenext
loop
rstype.close
set conn=nothing
%> </select><input class="buttonface" type="submit" value="查 询" name="title"></p>
</form>
</div></td>
</tr>
</table>
</center></div>
</body>
</html>
在这里特地引见一下关于翻开文章的法式openarticle.asp,这个也是一个更新数据库内容(update阅读数)和重定向文件。很复杂,所以这里只是复杂引见一下它的法式内容:
<%@ LANGUAGE="VBSCRIPT" %>
"翻开数据库毗连
<!--#include file="conn.asp"-->
<%response.buffer=false
dim sql
dim rs
dim articleid
"使用update从文章毗连处前往的文章号ID更新指定文章的阅读数,和使用response.redirect重定向文章的毗连
articleid=request("id")
set rs=server.createobject("adodb.recordset")
sql="update article set hits=hits+1 where articleID="&articleid
rs.open sql,conn,1,1
rs.close
conn.close
response.redirect "list.asp?id="&articleid
%>
好了,关于文章的显示首页面就完成了,它可以显示文章的题目,到场日期等文章相干信息,别的还联合了文章的分栏目搜刮查询功效。在这里你会发明,使用ASP对数据库停止查询并非一件很难的工作,只需使用一个like就能够等闲完成,文章办理的前台法式咱们已根基完成,上面该来引见办理体系的后台法式了。ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; |
|