明辉站/网站教程/内容

再谈SQL注入入侵动网SQL版-ASP TO HTML WITH TEMPLATE(3)

网站教程2024-05-19 阅读
[摘要]5,处理数据功能显示页面addit.asp首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过FSO生成HTML页面。其中需要注意的还有,生成文件的路径地址保存至数据库表。<%'容错处理On Error Resume Next%&...

5,处理数据功能显示页面addit.asp首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过FSO生成HTML页面。其中需要注意的还有,生成文件的路径地址保存至数据库表。<%'容错处理On Error Resume Next%><!--#include file="conn.asp" --><!--#include file="lib.asp" --><%'接受传递值c_title=request.form("c_title")c_content=request.form("c_content")%><%'生成HTML文件名,建立文件夹,指定文件路径fname = makefilename(now()) 'makefilename为自定义函数 folder = "newsfile/"&date()&"/"filepath = folder&fname%><%'将接受值及路径保持至数据库表sql = "Select * from c_news"Set rs = Server.CreateObject ("ADODB.Recordset")rs.Open sql,conn,3,2rs.addnewrs("c_title")=c_titlers("c_content")=c_contentrs("c_filepath")=filepathrs.updaters.close Set rs = Nothing%><%'打开模板代码,并将其中特殊代码转变为接受值sql1="select m_id,m_html from c_moban where m_id=1"set rs1=Server.CreateObject("adodb.recordset")rs1.open sql1,conn,1,1mb_code=rs1("m_html")rs1.closeset rs1=nothingconn.closeset conn=nothingc_title=htmlencode(c_title)c_content=htmlencode(c_content)mb_code=replace(mb_code,"$cntop$",now())mb_code=replace(mb_code,"$cnleft$",c_title)mb_code=replace(mb_code,"$cnright$",c_content)%><%'生成HTML页面Set fso = Server.CreateObject("Scripting.FileSystemObject")fso.CreateFolder(Server.MapPath(folder))Set fout = fso.CreateTextFile(Server.MapPath(filepath))fout.WriteLine mb_codefout.close%>文章添加成功,<a href="showit.asp">浏览</a>
[Ctrl+A 全部选择 然后拷贝]6,显示数据库表记录,并做指向HTML页的链接:showit.asp<!--#includefile="conn.asp" --><!--#include file="lib.asp" --><%Set rs = Server.CreateObject ("ADODB.Recordset")sql = "Select * from c_news order by c_id desc"rs.Open sql,conn,1,1%><%if rs.EOF and rs.BOF then response.write ("暂时还没有文章,<ahref=add.html>添加</a>")else Do Until rs.EOF%> <table width="758" border="0" align="center" cellpadding="3"cellspacing="1" bgcolor="#000000"> <tr> <td width="159"align="right" bordercolor="#CCCCCC"bgcolor="#CCCCCC"><%=rs("c_time")%></td> <tdwidth="591" bordercolor="#f3f3f3" bgcolor="#f3f3f3"><ahref=<%=rs("c_filepath")%>target="a_blank"><%=rs("c_title")%></a></td></tr> <tr> <td valign="top" align="right"bordercolor="#ececec" bgcolor="#ececec">[<ahref=del.asp?c_id=<%=rs("c_id")%>>Dell</a>][<ahref=change.asp?c_id=<%=rs("c_id")%>>Edit</a>][<ahref="add.html">Add</a>]</td> <td valign="top"bordercolor="#FFFFFF"bgcolor="#FFFFFF"><%=htmlencode(rs("c_content"))%></td></tr> </table><br><% rs.MoveNext Loopend if%><%rs.close Set rs = Nothingconn.close set conn=Nothing%> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]7,修改数据内容页chang.asp 修改数据内容,同时也需要修改更新对应的HTML页面。修改其实就是重新生成文件,且文件名和之前一样,类似文件的覆盖。
<!--#include file="conn.asp" --><!--#include file="lib.asp" --><%id=request.querystring("c_id")%><%if request.form("submit")="change" thenc_title=request.form("c_title")c_content=request.form("c_content")c_id=request.form("c_id")c_filepath=request.form("c_filepath")Set rs = Server.CreateObject ("ADODB.Recordset")sql = "Select * from c_news where c_id="&c_idrs.Open sql,conn,3,2rs("c_title")=c_titlers("c_content")=c_contentrs("c_time")=now()rs.updaters.close Set rs = Nothing%><%'打开模板代码,并将其中特殊代码转变为接受值sql1="select m_id,m_html from c_moban where m_id=1"set rs1=Server.CreateObject("adodb.recordset")rs1.open sql1,conn,1,1mb_code=rs1("m_html")rs1.closeset rs1=nothingconn.closeset conn=nothingc_title=htmlencode(c_title)c_content=htmlencode(c_content)mb_code=replace(mb_code,"$cntop$",now())mb_code=replace(mb_code,"$cnleft$",c_title)mb_code=replace(mb_code,"$cnright$",c_content)%><%'生成HTML页面Set fso = Server.CreateObject("Scripting.FileSystemObject")Set fout = fso.CreateTextFile(Server.MapPath(c_filepath))fout.WriteLine mb_codefout.close%><%response.redirect("showit.asp")%><%end if%><%if id<>"" then Set rs = Server.CreateObject ("ADODB.Recordset") sql="select * from c_news where c_id="&id rs.Open sql,conn,1,1 c_id=rs("c_id") c_filepath=rs("c_filepath") c_title=rs("c_title") c_content=rs("c_content")end if%><form action="change.asp" method="post">Title:<input type="text" name="c_title" value=<%=c_title%>><br>Content:<br><textarea name="c_content" rows="8" cols="30"><%=c_content%></textarea><br><input type="submit" value="change" name="submit"><input type="reset" value="Reset"><input name="c_id" type="hidden" value="<%=id%>"><input name="c_filepath" type="hidden" value="<%=c_filepath%>"></form> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]8,删除记录页del.asp同样!删除,除了删除数据库表中的记录,与其对应的HTML页面也需删除。代码如下: <!--#include file="conn.asp" --><%
c_id = request.querystring("c_id")
sql = "Select * from c_news where c_id="&c_id
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open sql,conn,2,3filepath=rs("c_filepath")
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(Server.mappath(filepath))
Set fso = nothingrs.delete
rs.close
Set rs = Nothing
conn.close
set conn=nothing
%><%response.redirect("showit.asp")%>四,其它功能模板管理页面:不会每次都是打开数据库表进行增加或者修改模板代码吧,所以,管理代码的页面程序不能少了,自己捣鼓下应该很简单的。当然,之前管理员的登录认证程序就不在书中交代了:)还有,如果设计了多个模板,那么在发表信息的时候应添加模板选择单选框,同样在执行转换HTML时,SQL选择的不同m_id了。不管怎么说,先把这些技术自己调试感受下。多多操作,相信“读书千遍,其意自见”。调试地址: www.cnbruce.com/test/asp2html/showit.asp文件下载: www.cnbruce.com/test/asp2html/asp2html.rar

……

相关阅读