再談SQL注入入侵動(dòng)網(wǎng)SQL版-ASP TO HTML WITH TEMPLATE(3)
發(fā)表時(shí)間:2024-01-16 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]5,處理數(shù)據(jù)功能顯示頁面addit.asp首先是處理接受過來的數(shù)據(jù),并將值寫入數(shù)據(jù)庫;接著將模板代碼進(jìn)行引用,并將其中特殊代碼轉(zhuǎn)換為接受值,最終通過FSO生成HTML頁面。其中需要注意的還有,生成文件的路徑地址保存至數(shù)據(jù)庫表。<%'容錯(cuò)處理On Error Resume Next%&...
5,處理數(shù)據(jù)功能顯示頁面addit.asp首先是處理接受過來的數(shù)據(jù),并將值寫入數(shù)據(jù)庫;接著將模板代碼進(jìn)行引用,并將其中特殊代碼轉(zhuǎn)換為接受值,最終通過FSO生成HTML頁面。其中需要注意的還有,生成文件的路徑地址保存至數(shù)據(jù)庫表。<%'容錯(cuò)處理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為自定義函數(shù) folder = "newsfile/"&date()&"/"filepath = folder&fname%><%'將接受值及路徑保持至數(shù)據(jù)庫表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%><%'打開模板代碼,并將其中特殊代碼轉(zhuǎn)變?yōu)榻邮苤祍ql1="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,顯示數(shù)據(jù)庫表記錄,并做指向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 ("暫時(shí)還沒有文章,<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 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]7,修改數(shù)據(jù)內(nèi)容頁chang.asp 修改數(shù)據(jù)內(nèi)容,同時(shí)也需要修改更新對應(yīng)的HTML頁面。修改其實(shí)就是重新生成文件,且文件名和之前一樣,類似文件的覆蓋。
<!--#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%><%'打開模板代碼,并將其中特殊代碼轉(zhuǎn)變?yōu)榻邮苤祍ql1="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 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]8,刪除記錄頁del.asp同樣!刪除,除了刪除數(shù)據(jù)庫表中的記錄,與其對應(yīng)的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")%>四,其它功能模板管理頁面:不會(huì)每次都是打開數(shù)據(jù)庫表進(jìn)行增加或者修改模板代碼吧,所以,管理代碼的頁面程序不能少了,自己搗鼓下應(yīng)該很簡單的。當(dāng)然,之前管理員的登錄認(rèn)證程序就不在書中交代了:)還有,如果設(shè)計(jì)了多個(gè)模板,那么在發(fā)表信息的時(shí)候應(yīng)添加模板選擇單選框,同樣在執(zhí)行轉(zhuǎn)換HTML時(shí),SQL選擇的不同m_id了。不管怎么說,先把這些技術(shù)自己調(diào)試感受下。多多操作,相信“讀書千遍,其意自見”。調(diào)試地址: www.cnbruce.com/test/asp2html/showit.asp文件下載: www.cnbruce.com/test/asp2html/asp2html.rar