<%name=Replace(Request.Form(“name”),“'”,“''”)title=Replace(Request.Form(“title”),“'”,“''”)body=Replace(Request.Form(“body”),“'”,“''”)%>
name=Replace(Request.Form(”name“),”'“,”''“)title=Replace(Request.Form(”title“),”'“,”''“)body=Replace(Request.Form(”body“),”'“,”''“)
“Replace(Request.Form(”name“),”'“,”''“)”意思是接收表單中名為name的文本框發來的數據,而“name=Replace(Request.Form(”name“),”'“,”''“)”則是把發來的數據儲存在name變量中,如果你這樣:“abc123=Replace(Request.Form(”name“),”'“,”''“)”
就是插入向量name,title,body,向量用格式'“&name&”'表示 最后:end if就是結束if……then set savebbs=nothing可以說是關閉掉:
ASP.NET課程設計說明書
專
業: 計算機科學與技術
班
級: 0801 學
號: 0812030111 學生姓名: 歐陽鋒 指導教師: 言天舒
湖南工業大學科技學院教務部 制
動態數據庫網頁 本講要點
1、配置動態服務器IIS
2、建立動態站點
3、創建動態頁面
4、創建數據庫鏈接
5、制作表單文檔
一、動態站點概述 何為動態 一種具有“交互性”的頁面效果即網頁會根據用戶的要求和選擇而動態改變和響應。制作動態網頁需要做的工作有 第一要在個人電腦上調試動態網頁。第二使用數據庫技術。第三在Dreamweaver中建立動態站點。
二、配置IIS服務器 1安裝IIS服務器 2設置IIS 3測試ASP動態網頁 1安裝IIS服務器 1執行【開始】【控制面板】命令打開【控制面板】。2雙擊【添加或刪除程序】圖標打開【添加或刪除程序】窗口。3單擊【添加/刪除Windows組件】打開【Windows組件向導】對話框。4選擇【Internet信息服務IIS】復選項。5單擊【下一步】按鈕開始安裝IIS服務器。安裝完成后的窗口如下圖所示。2設置IIS 首先在D盤下面建立一個“liuyanban”的文件夾用來存放留言板動態頁面文件。其次通過以下的步驟來設置站點虛擬目錄 1從【控制面板】窗口打開【管理工具】在打開的【管理工具】窗口中選擇【Internet信息服務快捷方式】。2設置IIS 2雙擊【Internet信息服務快捷方式】選項在彈出的【Internet信息服務】窗口左邊窗格中右擊【默認網站】項在彈出的菜單中執行【新建】【虛擬目錄】命令彈出【虛擬目錄創建向導】窗口如右圖所示。2設置IIS 3單擊【下一步】按鈕繼續。如左圖所示在【別名】下面的文本框中輸入“liuyanban”。單擊【下一步】按鈕繼續。如右圖所示在【目錄】下邊的文本框中輸入“D:liuyanban”或者單擊【瀏覽】按鈕找到D盤的“liuyanban”文件夾。3測試ASP動態網頁 在【Internet信息服務】窗口右邊的窗格中找到建立的ASP動態頁面右鍵單擊后在彈出的快捷菜單中選擇【瀏覽】項即可如圖8-15所示。
三、創建留言板主頁面
1、建立動態站點
2、創建留言板頁面 建立動態站點 1定義站點。建立動態站點 2選擇服務器技術。建立動態站點 3選擇存放的本地文件夾。建立動態站點 4設置本機測試的URL。建立動態站點 5單擊【下一步】按鈕繼續進行設置。由于是在本機測試并不需要遠程服務器參與所以選擇【否】項。建立動態站點 6單擊【下一步】按鈕繼續。窗口顯示了所填寫的信息確認一下。如果發現有錯可以單擊【上一步】按鈕返回修改設置確認無誤后就可以單擊【完成】按鈕。這時動態站點就定義完成了現在可以在DW中進行動態網頁的設計了。創建留言板頁面 1創建留言板主頁面ASP文檔。2用表格布局留言板主頁面。3在表格中插入一些顯示元素。
四、用Access創建數據庫 1創建空數據庫文檔 2創建留言板用戶信息表 3創建管理員信息數據表 1創建空數據庫文檔 1新建一個名為data的文件夾然后將空數據庫文件保存在data文件夾下文件名為liuyanban_data.mdb。1創建空數據庫文檔 2單擊【創建】按鈕創建一個名為liuyanban_data的數據庫文件同時出現一個相應的數據庫設計窗口如圖所示。1創建空數據庫文檔 3雙擊【使用設計器創建表】命令彈出一個表設計器窗口如圖所示。表的結構設計將在其中完成。2創建留言板用戶信息表 1創建字段域。最后的結果如圖所示。2創建留言板用戶信息表 2設置用戶信息數據表的主鍵字段。3設置字段屬性。用戶信息數據表設計完成以后關閉表設計器窗口可以看到數據庫設計窗口中多了一個名字為yonghu的數據表如下圖所示。3創建管理員信息數據表 創建一個用來存儲和管理留言板管理員的信息的數據表名字為_guest創建結果如下圖所示。最終的數據庫設計窗口如下圖所示。
五、留言板的逐步實現
1、創建數據庫鏈接
2、留言板主頁面的動態效果
3、創建用戶留言頁面
4、在留言板主頁面實現留言記錄導航
一、創建數據庫鏈接 1定義系統DSN 數據源名稱 2通過DSN實現連接 1定義系統DSN 數據源名稱 1打開【控制面板】雙擊其中的【管理工具】圖標在轉換到的【管理工具】窗口中可以看到一個【數據源ODBC】圖標。2雙擊【數據源ODBC】圖標打開【ODBC數據源管理器】對話框切換到【系統DSN】選項卡如圖所示。1定義系統DSN 數據源名稱 3添加一個新的系統DSN名稱。單擊【添加】按鈕彈出【創建新數據源】對話框在其中選擇“Driver do Microsoft Access.mdb”項如圖所示。1定義系統DSN 數據源名稱 4單擊【完成】按鈕以后彈出【ODBC Microsoft Access安裝】對話框在其中定義數據源名并選取數據庫文件。設置后如右圖所示。1定義系統DSN 數據源名稱 5單擊【確定】按鈕完成數據庫的選擇這時的【ODBC Microsoft Access安裝】對話框如下圖所示。6經過上面步驟的操作以后在上圖所示的對話框中就會顯示一個新定義的數據源名稱。2通過DSN實現連接 打開留言板站點的主頁面文檔main.asp。在【應用程序】面板中的【數據庫】面板下單擊加號按鈕在彈出的下拉菜單中單擊【數據源名稱】項如圖所示。2通過DSN實現連接 在【數據源名稱】對話框的【連接名稱】文本框中輸入數據源連接名稱在【數據源名稱】下拉列表中選擇名字為“liuyanban”的DSN其他參數保持默認值如圖所示。2通過DSN實現連接 單擊【確定】以后【數據庫】面板就會出現新定義的連接名稱單擊它前面的加號按鈕展開可以看到留言板數據庫中的兩個表如圖所示。這時就完成數據庫和留言板站點的連接了連接名是liuyb。
二、留言板主頁面的動態效果 1在【綁定】面板中定義記錄集 2將記錄集中數據綁定到表格域 1在【綁定】面板中定義記錄集 在Dreamweaver中打開留言板站點主頁面main.asp。打開【綁定】面板單擊加號按鈕在彈出的下拉菜單中執行【記錄集查詢】命令如圖所示。1在【綁定】面板中定義記錄集 在彈出的【記錄集】對話框中定義記錄集【名稱】為i、選擇數據庫【連接】名為liuyb、選擇數據庫中的【表格】為yonghu、選擇表中的字段域、定義記錄排序的方法等如圖所示。1在【綁定】面板中定義記錄集 按照前面的步驟操作完成以后在【綁定】面板中就會出現新定義的記錄集單擊它前面的加號按鈕可以展開記錄集如圖所示。2將記錄集中數據綁定到表格域 1重新編輯留言板主頁面。對留言板主頁面main.asp中的表格重新編輯并刪除單元格中的一些文字和圖片如圖所示。2將記錄集中數據綁定到表格域 2將記錄集中的數據域字段綁定到表格相應的單元格中。打開【綁定】面板展開記錄集。用鼠標將記錄集中的y_name字段拖放到頁面表格的左上角中用同樣的方法將其他數據域字段拖動到相應的單元格中結果如圖所示。
三、創建用戶留言頁面 1添加表單并布局表格 2添加表單域 3定義提交按鈕的服務器行為 4在【行為】面板定義表單提交的錯誤檢查 1添加表單并布局表格 新建一個動態頁面并將其保存為“write.asp”它就是用戶留言頁面。在【表單】工具欄中單擊【表單】按鈕插入一個表單。然后在表單中插入一個表格表格布局如圖所示。2添加表單域 1添加“姓名”文本字段。通過【表單】工具欄中的【文本字段】按鈕完成在單元格中添加一個“文本字段”表單域。在【屬性】面板中【文本域】下面的文本框中定義這個文本字段的名字為name如圖所示。2添加表單域 2添加OICQ、E-mail、個人主頁文本字段。OICQ、E-mail、個人主頁表單域的添加方法同上均為文本字段在【屬性】面板中各個文本字段的命名情況是 OICQ文本字段oicq E-mail文本字段mail 個人主頁文本字段homepage。2添加表單域 3添加“性別”單選按鈕表單域性別“男”的單選按鈕屬性設置如圖所示。2添加表單域 同樣的方法再設置一個性別“女”的單選按鈕。完成后的頁面效果如下圖所示。2添加表單域 4添加“選擇頭像”表單域。因為“選擇頭像”右邊的單元格中要有若干備選的頭像圖片所以我們應該事先制作或者搜集一些卡通頭像圖片。復制以后的【文件】面板情況如圖所示。2添加表單域 將光標定位在“選擇頭像”右邊的單元格中分兩行插入8個頭像圖片。在每幅圖片的右邊添加一個單選按鈕。名字統一定義為tx第一個單選按鈕的【初始狀態】選擇為【已勾選】其他的單選按鈕為【未選中】每個單選按鈕【選定值】屬性的設置稍微麻煩一些。2添加表單域 以第1個單選按鈕為例先選中這個單選按鈕前面對應的頭像圖片在【屬性】面板中復制這個圖片【源文件】地址如圖所示。2添加表單域 再選中與頭像對應的單選按鈕在【屬性】面板的【選定值】處粘貼剛才復制的頭像圖片源文件地址如圖所示。2添加表單域 其他7個單選按鈕的【選定值】屬性都按照同樣的方法進行設置。最后編輯頁面效果如圖所示。2添加表單域 5添加“留言內容”文本區域。效果如圖8-60所示。2添加表單域 6添加提交和重置按鈕。完成以后的頁面效果如圖所示。2添加表單域 7添加隱藏區域。將光標定位在“提交”按鈕的左邊單擊【表單】工具欄中的【隱藏域】按鈕在【屬性】面板中定義它的名字為ip在【值】文本框中輸入代碼 3定義提交按鈕的服務器行為 打開【綁定】面板單擊加號按鈕執行【記錄集查詢】命令并按照圖示介紹的方法綁定【記錄集】。選中整個表格打開【服務器行為】面板單擊加號按鈕選擇【插入記錄】命令。在【插入記錄】對話框中設置表單域與數據庫字段名一一對應在【表單元素】中依次選中元素在下面的【列】中選擇與數據庫相對應的域。4在【行為】面板定義表單提交的錯誤檢查 選中【提交】按鈕打開【行為】面板單擊加號按鈕在彈出的菜單中選擇【檢查表單】命令。設置表單域和檢查事件name選擇【必需的】ociq選擇【數字】mail選擇選擇【必需的】【電子郵件地址】homepage不選liuyan選擇【必需的】如圖所示。最后單擊【確定】按鈕事件為onClick。四在留言板主頁面實現留言記錄導航 1實現留言記錄導航 2留言內容顯示問題的解決 1實現留言記錄導航 在main.asp頁面實現留言記錄導航主要包括控制一頁顯示留言數和翻頁按鈕上一頁、下一頁、最前一頁、最后一頁。這個功能主要使用【應用程序】工具欄來完成。將工具欄切換到【應用程序】工具欄后得應用程序按鈕如圖所示。1實現留言記錄導航 這里主要應用【記錄集分頁】按鈕和【記錄集導航狀態】按鈕。單擊【記錄集分頁】按鈕彈出如右上圖所示的下拉列表框 單擊【記錄集導航狀態】按鈕彈出如右下圖所示的對話框。1實現留言記錄導航 下面為留言板主頁面添加記錄導航功能 1將光標定位在編輯頁面的下邊單擊【記錄集導航狀態】按鈕彈出【記錄集導航狀態】對話框單擊【確定】按鈕后頁面如圖所示。1實現留言記錄導航 2再回車另起一行單擊【記錄集分頁】按鈕彈出【記錄集導航條】對話框如下圖所示。單擊【確定】按鈕記錄導航條將以文字方式顯示。1實現留言記錄導航 這樣就完成了顯示留言數量和翻頁的按鈕如圖所示。2留言內容顯示問題的解決 需要解決的問題 防止留言內容支持html代碼 防止留言很長時main.asp頁面上的表格被自動撐大文字不會自動換行 用如下的操作解決上述問題 2留言內容顯示問題的解決 1將原來綁定到留言內容單元格中的記錄集字段刪除然后在這個單元格中添加【文本區域】表單域添加好后的文本區域如圖所示。2留言內容顯示問題的解決 2選中剛才添加的文本區域在【屬性】面板中設置【字符寬度】為66【行數】為5然后單擊【綁定到動態源】按鈕如圖所示。2留言內容顯示問題的解決 3單擊【綁定到動態源】按鈕以后會彈出【動態數據】對話框在其中的【域】中選擇記錄集中的y_liuyan單擊【確定】按鈕。這樣就將y_liuyan字段綁定到留言內容文本區域了如圖所示。2留言內容顯示問題的解決 經過以上操作以后再次測試留言效果時會發現 留言內容能自動換行了 而且不支持html代碼。通過前面制作留言板站點已經初步實現了一些站點功能 用戶可以通過留言頁面填寫和提交用戶信息和留言內容 在留言板主頁面可以顯示用戶留言信息 可以顯示留言數以及實現了導航翻頁功能。
ASP留言本教程(1)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
二、設計數據庫
ASP程序本身并不能儲存數據,眾所周知,留言本有以下信息需要保存:留言者姓名、聯系方式、留言內容等等。因為ASP并不能儲存數據,所以數據庫在這種環境之下就產生了。數據庫的種類也很多,針對不同的程序也有適用于它的數據庫,比如Access和Ms SQL就比較適用ASP和ASP.net程序,至于其它的數據庫和程序,就不屬于本文所討論的問題了,有興趣的朋友可以查看其它一些資料。
那么既然Access和MS SQL都適用ASP,那么具體又如何來選擇呢?我們可以打一個比方:比如釘一枚小釘子,聰明的人一定不會用一個大的棒槌,而是選擇小的鐵錘,雖然用大的棒槌也一樣的可以把釘子釘進去,可是沒有人愿意這樣做。
數據庫也一樣:Access比較適用小型的應用,而MS SQL則適用于大中型的數據庫應用,所以要做一個留言本,理所當然是選擇Access更好一些,但是如果你決心使用MS,沒有人會極力阻止你。好了,廢話少說,切入正題,下面開始創建數據庫。
Access是微軟office辦公軟件中的其中一個,默認的安裝Office是有這個Access的,好了,打開程序,開始了,GO!
進入實戰了。打開程序后,出現一個對話框,這里我們選擇第一個選項"空Access數據庫"點擊確定,彈出一個新建數據庫的文件框,選擇你上次你建的站點目錄,起個data的文件名,點擊創建,OK!雙擊"使用設計器創建表"打開表創建窗口"如圖
創建表的結構如下表:
字段名稱
數據類型
備注(筆者注釋)
id 自動編號 設置“自動編號” name 文本 留言者姓名
qq 數字 留言者的QQ,因為QQ號是由數字組成 email 文本 留言者的電子郵件 content 備注 留言內容
data 日期/時間 留言時間,設定默認值為Now()
數據庫設計好了以后,可以直接在數據庫里添加兩條記錄,以后測試時候用!這一節就到此了
ASP留言本教程(2)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
三、連接數據庫
在上一節,我們已經為我們的程序創建了一個數據庫,在這一節中,我們來用ASP把程序和數據庫連接起來,以后就可以連接到數據庫、在ASP中顯示數據庫中的數據以及更復雜的插入、修改和刪除。
一起看以下代碼,這就是ASP程序中常用的連接數據庫的代碼: <% set conn=server.createobject(“adodb.connection”)connstr=“Provider=Microsoft.jet.oledb.4.0;data source=”&server.mappath(“data.mdb”)conn.open connstr %>
解釋一下以上代碼: <%
'這是ASP程序的起始
set conn=server.createobject(“adodb.connection”)
'在服務器上創建了一個連接數據庫的對象
connstr=“Provider=Microsoft.jet.oledb.4.0;data source=”&server.mappath(“data.mdb”)
'告訴ASP數據庫的接接方法以及路徑
conn.open connstr
'創建了對象后就用來打開數據庫進行連接 %>
'一切OK了!結束ASP程序
將上面的代碼另存為conn.asp文件,放在服務器目錄下面就可以了。怎么樣,簡單吧?
這一節是最重要的,一定要弄明白,否則以后操作數據庫將變得不現實,如果有不懂的問題,歡迎和我討論,我的電子郵件地址是。這一節就到此,下節我們就將數據庫中的數據顯示在頁面中(這就實現了留言本的查看功能)
ASP留言本教程(3)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
三、制作留言本首頁
前面我們已經連接好了數據庫,就要讓它在這里發揮一下作用了,這一節將講述如何將數據庫里的數據用ASP讀取出來,在頁面中顯示出來,這樣就等于是查看留言本了。
利用DW制作如下頁面(這里我就不講如何去做這個頁面了,最后我將會給出HTML代碼下載)
將制作好的文件存為index.asp,下面就創建數據記錄集,用來顯示數據庫的數據到這個頁面中:
用記事本打開index.asp,在頁頭加入以下代碼:
<%@LANGUAGE=“VBScript” codepage=“936”%> <% set rs=server.createobject(“adodb.recordset”)sql=“select user,qq,email,content,data from main order by id desc” rs.open sql,conn,1,1 %>
解釋一下:
第一行,表明ASP使用的是VB腳本
第二行,是用include包含文件,這里包含的是數據庫連接文件。第三行,ASP程序開始
第四行,利用Server內置對象創建一個記錄集
第五行, SQL語句,這里的意思是選擇數據庫中的user,qq,email,content,data字段,指定該數據表的名稱是“main”數據的排列順序是倒序。
第六行,用剛才創建的名為rs的記錄集打開數據庫,設置屬性為只讀(1,1為只讀數據,1,3為插入數據,2,3是修改數據。
這樣就打開了數據庫,接下來就可以顯示了。
將“留言人”代替為“<%=rs(“user”)%> “時間”代替為“<%=rs(“data”)%>
“留言內容在此”代替為“<%=rs(“content”)%> “QQ”鏈接到:
“郵件”鏈接到:mailto:<%=rs(“email”)%> 最后將“填寫留言”鏈接 add.asp “管理留言”鏈接 admin.asp
好了,再次保存,瀏覽看看!
怎么了?只顯示一條記錄?原來我們在數據庫里添加了兩條記錄的哦!還有一條呢?別急,因為我們沒有指定ASP循環顯示,所以就只有一條啦。。
在剛才的代碼后面添加一行
<%do while not rs.eof%>
并在頁面的第一個表格的末尾加上
<% rs.movenext loop %> 上面的代碼就是說用rs記錄集指針一條一條往下一條移動,直到末尾,loop是循環的意思。哈哈,再次瀏覽這個文件
看明白了嗎,這樣就可以讓數據庫中的數據全部顯示在頁面中了,好了,這節就到這,下節講一個也很重要的部份(添加留言功能。)
ASP留言本教程(4)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
三、制作添加留言頁面,實現留言功能
我們是做的一個留言本,實現留言的功能就十分重要了,要不然就算不上留言本了,接下來就一起來實現這個功能。
用DW制作以下這樣的頁面:
設置表單的屬性如下:
姓名:設置為單行文本域,名稱為“user” QQ號:設置為單行文本域,名稱為“qq” 郵件:設置為單行文本域,名稱為“email” 內容:設置為多行文本域,名稱為“content”
最后將表單的“Action”動作指向addsave.asp就可以了。
保存文檔名為add.asp,OK!下一步!
表單是做好了,但是還需要后臺程序的支持,一起來使用ASP編寫一個添加留言處理程序,添加留言代碼:
<%@LANGUAGE=“VBScript” codepage=“936”%>
'表明ASP使用的是VB腳本
'是用include包含文件,這里包含的是數據庫連接文件 <% set rs=server.createobject(“adodb.recordset”)
'利用Server內置對象創建一個記錄集
sql=“select user,qq,email,content,data from main”
'SQL語句,上節有詳解 rs.open sql,conn,1,3'用剛才創建的名為rs的記錄集打開數據庫,設置屬性為插入數據
rs.addnew
'用記錄集新添加一條數據
user=request.form(“user”)
'請求表單的變量,定義變量為user,這里request.form是請求表單的意思
qq=request.form(“qq”)
'請求表單的變量,定義變量為qq,這里request.form是請求表單的意思
email=request.form(“email”)
'請求表單的變量,定義變量為email,這里request.form是請求表單的意思
content=request.form(“content”)
'請求表單的變量,定義變量為content,這里request.form是請求表單的意思
rs(“user”)=user
'將請求到的表單值傳向記錄集中代表user字段的名稱 rs(“qq”)=qq
'將請求到的表單值傳向記錄集中代表qq字段的名稱
rs(“email”)=email
'將請求到的表單值傳向記錄集中代表email字段的名稱 rs(“content”)=content
'將請求到的表單值傳向記錄集中代表content字段的名稱
rs.update
'更新一下數據庫中的數據。rs.close
'關閉記錄集 set rs=nothing
'銷毀記錄集 conn.close
'關閉數據庫連接 set rs=nothing
'銷毀數據庫連接 %>
將以上文件存為addsave.asp,測試下!咦?怎么填好提交以后就出現空白了,為什么?這是因為在addsave.asp中沒有設置數據成功提交好后的轉向頁面,這里不用做那么復雜的,只要做一個刷新頁面就行了,在程序的后面加上:
然后在頁面中添加提示信息,比如:“您的留言已經成功提交,2秒鐘后將自動返回留言本首頁”
好了,這個留言的功能總算實現了,最后再測試下,看看效果!
OK!這個留言功能的實現教程就到這里了。
ASP留言本教程(5)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
六、制作管理登陸頁面
留言本的管理功能對于留言本來說就不言而喻了,像論壇的登陸功能就是一個很好的例子,不過我們做留言本基本上有刪除功能就行了,寫這個教程是為了更多的ASP入門者更好的了解ASP,所以旨在學習用,當然也可以在這基礎上添加更多的功能,比如回復留言者。
好了,開始了,還是按照以前的,用Dreamweaver做一個登陸頁面,如下圖:
把用戶名的表單名稱設置為admin,密碼的表單名稱設為password,把動作指向checkpass.asp,存admin.asp這樣登陸頁面就好了,下面就做檢測密碼的ASP程序了,看以下代碼解釋:
'把conn.asp包含進來連接數據庫 <% 'ASP起始
admin=request.form(“admin”)'定義admin的值是表單傳過來的用戶名域名稱admin password=request.form(“password”)'定義admin的值是表單傳過來的用戶名域名稱admin if admin=“" or password=”“ then '這句的意思是假如用戶名和密碼沒有輸入的話那么執行下一句
response.Write(”“)'用javascript腳本提示用戶 end if '結束if語句
sql=”select * from admin where admin='“&admin&”' and password='“&password&”'“ '這句很重要,我們放到后面講
set rs=conn.execute(sql)'設定記錄集rs,用conn執行SQL語句 if rs.eof or rs.bof then '當沒有符合篩選結果時,則執行下面的句子 response.write ”“ '用javascript腳本提示用戶 else '如果符合條件的時候
session(”admin“)=admin '新建session,值等于表單傳來的用戶名 response.redirect ”mymanage.asp“ '轉向到mymanage.asp,進入管理頁 end if '結束if語句 %> 'ASP結束
將以上代碼保存為checkpass.asp
這樣,用戶在admin.asp頁面中輸入用戶名和密碼后,就把用戶名和密碼值傳給checkpass.asp處理,當用戶名和密碼的值和數據庫中的字段相匹配時,就進入mymanage.asp這個管理頁面,同時建一個session,這個session的會話變量將在后面起作用,下一節就明白了。
ASP留言本教程(6)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
七、制作管理頁面
上節中講的是制作登陸頁面和檢測用戶,當用戶名和密碼正確時就轉到管理頁面,好了,開始實現它。
其實這個留言本的管理頁面和用戶直接看到的首頁沒有多大的區別,只是用了Session會話變量用作保護和增加了一個刪除鏈接,當點擊這個鏈接的時候,就會自動刪除這條留言,好了,其本的目的知道了,那就GO!
剛才講了,這個頁面和首頁的index.asp相似,那么就先復制就行了,然后再改一下
首先找到下面這句:
sql=”select user,qq,email,content,data from main order by id desc“ 把它改為
sql=”select id,user,qq,email,content,data from main order by id desc“ 這樣,就選取到了id這個自動編號的值,以便刪除留言時鎖定這個id。
然后在“郵件”這個鏈接后面增加一個鏈接“刪除”,鏈接:del.asp?id=<%=rs(”id“),修改代碼后為“ onclick=”return confirm('是否確定刪除本留言?');“>刪除 這樣,待會我們做del這個頁的時候,就會知道為什么了!
改過后存為mymanage.asp
現在打開瀏覽器看看!
怎么不用輸入用戶名和密碼都可進入呀?別急,上節中,我們不是建了一個session的會話變量,這時就派上用場了,直接用記事本打開。在<%@LANGUAGE=”VBScript“ codepage=”936“%>這句的后面加上<%if session(”admin“)<>”“ then%>這句,在末尾寫上: <% else response.Redirect(”admin.asp“)end if%> 下面來講解一下。
<%if session(”admin“)<>”“ then%> '就是說如果session這個(”admin“)的值不是空的話就執行。<% else response.Redirect(”admin.asp“)end if%> '為空的話就轉向登陸頁,重新登陸,這樣的話,直接輸入網址的話就會跳到admin.asp,簡單吧!
好了,這節就到這里了。
ASP留言本教程(7)時間:2010-04-09 22:53 點擊:17次 作者: 來源:網頁教學網
八、刪除留言
上節我們增加了一個刪除留言的鏈接,以下是這個del.asp的代碼
<% set rs=server.createobject(”adodb.recordset“)id=Request.QueryString(”id“)sql=”select * from main where id=“&id rs.open sql,conn,2,3 rs.delete rs.update %>
很明了吧,才幾句,第1、2、3句都不用我解釋了,大家都在上幾節中明白了。
第4句:
id=Request.QueryString(”id“)用id取值字符串中傳的id,回頭看一下刪除的鏈接:del.asp?id=<%=rs(”id“)%> 就是這個鏈接才把id的值傳來的,<%=rs(”id")%>是讀取數據庫中的自動編號字段中的id。
第5句:
用sql定義SQL語句,這里的*是通配符,表示所有,而Where有點像我們漢語中的“當”,整句話的意思是選擇所有來自表名為main的字段,它的條件是當數據庫中的id字段是字串所傳來的id。如果這個沒有的話這個一時間不明白也不要緊,慢慢接觸就知道了。
第6句是打開符合條件的記錄,確切的講不應該叫記錄集了,因為經過我們這樣篩選的話,記錄絕對是一條,2,3指定可以對數據庫中的數據進入修改。
第7、8句 rs.delete 看了就明白了,原來這才是整個程序的精髓,就是執行刪除了。rs.update 這是更新數據庫中的表,刪除后就更新。
最后大家自己用rs.close和conn.close釋放。
日照職業技術學院畢業設計(論文)
php留言板系統
學生姓名 院 部
電子信息科學與工程學院 專 業 計算機應用技術 指導老師 魯 紅 日 期 2015-05-19
目錄
一 留言板簡介..........................................................................................................................................4 二 留言板設計原理..................................................................................................................................4 三 四 五 PHP技術介紹...................................................................................................................................4 PHP技術優點...................................................................................................................................4 MYSQL介紹......................................................................................................................................6
六 留言板系統的概要設計......................................................................................................................6(一)系統開發環境...............................................................................................................................6(二)php語言選擇...............................................................................................................................6(三)系統功能.......................................................................................................................................7 七 留言板詳細設計..................................................................................................................................7(一)數據庫設計...................................................................................................................................8(二)留言板數據庫連接 寫入和保存..................................................................................................9(三)留言板文件夾中文件的介紹.....................................................................................................15(四)留言板首頁設計.........................................................................................................................15 八 總結....................................................................................................................................................15 九 留言板特色和不足............................................................................................................................15 參考文獻:................................................................................................................................................16
第1頁
留言板系統
摘要:隨著Internet的發展,網站的作用越來越重要,被稱之為繼廣播、報紙、雜志、電視后的
第五種媒體——數字媒體,擁有眾多優勢,所以現在不少企業都有或正在建設自己的網站。而留言板作為網站重要的一個部分,從來就是一個大家交流的平臺!留言板是一種最為簡單的BBS應用,借助留言板,瀏覽者可以張貼留言的方式給站長、版主或其他瀏覽者進行留言和提問。
本文主要介紹留言板系統的設計思路和制作過程,從留言板的重要性開始,介紹我的留言版采用的PHP技術和MYSQL數據庫,進而闡述整個留言板系統的制作過程和具體的設計思路。該留言板較全面地利用PHP技術實現留言板的基本功能:留言、查看、刪除,并增加了一些特色功能。最后介紹自己在設計過程的心得體會。關鍵詞:留言板,PHP,MYSOL數據庫
第2頁
引言
Internet起源于20世紀60年代末、70年代初,當時,美國國防部為了將充斥于軍事基地內各種廠商的電腦主機互連,讓它們可以進行數據交換以便研究工作順利進行,于是成立了ARPA網絡計劃。ARPA計劃嘗試建設1個網絡系統,它可將各種不同廠商的電腦連接起來。隨著這個計劃的成功,各學術單位,研究機構也紛紛與ARPA計劃所建立的ARPANet連接。到了20世紀80年代,Internet這個名詞因勢產生,它代表著這10年來所構建涵蓋全球各地的網絡系統。從1990年起,商業使用的Internet在美國急速地擴大,而Internet也從原來屬于少數人使用的網絡系統轉變為普通百姓也能夠使用的網絡系統。
最初的Internet資源服務都還停留在文本模式,1989年,量子物理實驗室(CERN)下的1個研究小組著手開發1種全新的Internet服務,它可以在網絡上傳送圖片、文本、影像、聲音等多媒體數據。于是由Tim Berners Lee領導的小組開發出了1種主從、分布式的網絡服務系統,這就是www.tmdps.cnpile編譯或鏈接程序,可在服務器端直接執行,這無疑是更加方便了我們的編寫過程。
2、使用編程環境方便簡單。可以使用普通的記事本之類的文本編輯器,即可進行編輯設計,如:Windows的記事本、FrontPage等文本編輯器。也可以用dreamweaver和專業的Microsoft Visual InterDev開發工具。
3、瀏覽網頁方便,交互速度也快。PHP是運行在服務器端,所以我們無須擔心瀏覽器是否支持PHP所使用的編程語言,用戶端只要使用可執行HTML碼的瀏覽器,即可瀏覽Personal home pages所設計的網頁內容。PHP在服務器端運行,當程序執行完畢后,服務器僅將執行的結果返回給客戶瀏覽器,這樣也就減輕了客戶端瀏覽器的負擔,大大提高了交互的速度。
4、提供多種編程語言。PHP能與任何ActiveX scripting語言相容。除了可用VBScript或JScript語言來設計外,還通過plug-in的方式,使用由第三方所提供的其他腳本語言,譬如Perl等。
5、提高代碼的安全性。Personal home pages的程序代碼隱藏,已編碼的腳本在運行時由腳本引擎解碼,因此不需要單獨的應用程序。客戶端上僅可以看到由PHP輸出的動態HTML文件。因而可以避免所寫的源程序被他人剽竊,也提高了程序的安全性。
6、功能強大。編程是面向對象的(Object oriented),并可擴展ActiveX Server組件功能。Personal home page Components(ActiveX服務器組件)具有無限可擴充性。你可以使用任何編程語言來編寫你所需要的Personal Server 組件。可以使用Visual Basic、Java、Visual C++、COBOL等編程語言來編寫你所需要的Personal Server Component。也可以使用第三方組件或自己開發的Personal Server組件。理論上說,可以實現任何功能。
7、訪問數據庫十分方便。可以通過PDO(Personal Data Objects,微軟的一種新的數據訪問模型,是一種可以提供WEB頁面開發者輕松存取Internet的數據庫,并可以在用戶端實現網上立即、即時更新顯示的最新WEB頁面數據庫技術。)非常方便地訪問數據庫。
總之,PHP從字面上說,包含三方面含義: 1.Personal:PHP使用了微軟的Personal技術。Personal(COM)技術是現在Microsoft軟件的重要基礎。它采用封裝對象,程序調用對象的技術,簡化編程,加強程序間合作。PHP本身封裝了一些基本組件和常用組件,有很多公司也開發了很多實用組件。只要你可以在服務器上安裝這些組件,通過訪問組件,你就可以快速、簡易地建立自己的WEB應用。
2.home:PHP運行在服務器端。這樣就不必擔心瀏覽器是否支持PHP所使用的編程語言。PHP的編程語言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一個簡集,會VB的人可以很方便的快速上手。然而NETscape瀏覽器不支持客戶端的VBSCRIPT,所以最好不要在客戶端使用VBSCRIPT。而在服務器端,則無需考慮瀏覽器的支持問題。NETscape瀏覽器也可以正常顯示PHP頁面。
3.page:PHP返回標準的HTML頁面,可以正常地在常用的瀏覽器中顯示。瀏覽者查看頁面源文件時,看到的是PHP生成的HTML代碼,而不是PHP程序代碼。這樣就可以防止別人抄襲程序。由此可以看出,PHP是在IIS下開發WEB應用的一種簡單、方便的編程工具。在了解了VBSCRIPT的基本語法后,只需要清楚各個組件的用途、屬性、方法,就可以輕松編寫出自己的PHP系統。
第5頁
而我這次所開發的留言本系統,主要是利用PHP技術的簡單和實用的特點,以及PHP使用的廣泛性,而且非常適合于網絡中小型系統開發。
五 MYSQL介紹
MySQL是一個小型關系型數據庫管理系統,開發者為瑞典MySQL AB公司。在2008 年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購.對于Mysql的前途,沒有任何人抱樂觀的態度.目前MySQL被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。
1.使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統
3.為多種編程語言提供了API。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多線程,充分利用CPU資源
5.優化的SQL查詢算法,有效地提高查詢速度
6.既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名
7.提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑 8.提供用于管理、檢查、優化數據庫操作的管理工具 9.可以處理擁有上千萬條記錄的大型數據庫
六 留言板系統的概要設計
(一)系統開發環境
基于微軟平臺PHP環境,使用MYSQL數據庫。適用于IE8.0以上版本瀏覽器,Win2000+APACHE 或win7+APACHE以上運行環境。(本人用的win7+APACHE測試)。
(二)php語言選擇
選擇一個好的編程語言十分的重要,當前,面對眾多的編程語言,很多人無從選擇,而本人看到PHP的以上眾多特點,個人認為:
MYSQL后臺數據庫+PHP服務器端程序+客戶端IE瀏覽器,是一個精練實用高效的組合模式。在這種使用模式中,PHP程序無疑是最重要的,是溝通客戶端和后臺數據庫之間的橋梁。在PHP程序中,通過數據庫語言,建立對MYSQL數據庫的連接,是客戶能夠訪問后
第6頁
臺數據庫的前提。
鑒于前面介紹PHP優點的原因,又有上面組合的優勢,本人的留言板使用PHP語言也是十分正確而實用的。
(三)系統功能
該留言板具有的主要功能如下:
1.可以按照發言時間的先后順序,留言板自動排序; 2.留言板的主要欄目組成圖
3.本留言板不需注冊,陌生人即可留言。
4.因為是個人留言板所以具有留言、查看、刪除的功能。
七 留言板詳細設計
有了技術和流程圖以及留言板要實現的功能,接下來就應該進行詳細設計了。數據庫是首當其沖的,接下來就是用戶常接觸的首頁的設計,然后就是該留言板特色功能的設計和實現。
第7頁
(一)數據庫設計
我的數據庫采用的是MY SQL數據庫,采用的原因也已經介紹了。以下就介紹留言板數據庫的組成。
第8頁
(二)留言板數據庫連接 寫入和保存
數據庫鏈接失敗!
”;
exit();} mysql_select_db(“gbook”, $con);mysql_query(“set names 'gb2312'”);date_default_timezone_set(PRC);?>
第9頁
if(isset($_REQUEST['GLOBALS'])OR isset($_FILES['GLOBALS'])){ exit('Request tainting attempted.');} //Session保存路徑
$sessSavePath = LOVE_ROOT.“data/sessions/”;if(is_writeable($sessSavePath)&& is_readable($sessSavePath)){ session_save_path($sessSavePath);} date_default_timezone_set(Singapore);$timestamp = time();require_once LOVE_ROOT.'./data/config.inc.php';require_once LOVE_ROOT.'./data/db.inc.php';require_once LOVE_ROOT.'./include/db_mysql.class.php';require_once LOVE_ROOT.'./include/template.class.php';if(defined('UC_KG')){include_once TM_ROOT.'/uc_client/client.php';} $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$SCRIPT_FILENAME = str_replace('', '/',($_SERVER['PATH_TRANSLATED'] ? $_SERVER['PATH_TRANSLATED'] : $_SERVER['SCRIPT_FILENAME']));//$homeurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace(“//+(api|archiver|wap)?/*$/i”, '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/';
//實例化數據庫操作 $db = new dbstuff;$db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);$db->query(“set names gbk”);if(getenv('HTTP_CLIENT_IP')&& strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){ $onlineip = getenv('HTTP_CLIENT_IP');} elseif(getenv('HTTP_X_FORWARDED_FOR')&& strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ $onlineip = getenv('HTTP_X_FORWARDED_FOR');} elseif(getenv('REMOTE_ADDR')&& strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ $onlineip = getenv('REMOTE_ADDR');} elseif(isset($_SERVER['REMOTE_ADDR'])&& $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ $onlineip = $_SERVER['REMOTE_ADDR'];}
preg_match(“/[d.]{7,15}/”, $onlineip, $onlineipmatches);$onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';unset($onlineipmatches);?>
第10頁
var $querynum = 0;var $link;var $histories;
var $dbhost;var $dbuser;var $dbpw;var $dbcharset;var $pconnect;var $tablepre;var $time;
var $goneaway = 5;
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $dbcharset = '', $pconnect = 0, $tablepre='', $time = 0){
$this->dbhost = $dbhost;
$this->dbuser = $dbuser;
$this->dbpw = $dbpw;
$this->dbname = $dbname;
$this->dbcharset = $dbcharset;
$this->pconnect = $pconnect;
$this->tablepre = $tablepre;
$this->time = $time;
if($pconnect){
if(!$this->link = mysql_pconnect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL server');
}
} else {
if(!$this->link = mysql_connect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL server');
}
}
if($this->version()> '4.1'){
if($dbcharset){
mysql_query(“SET character_set_connection=”.$dbcharset.“, character_set_results=”.$dbcharset.“, character_set_client=binary”, $this->link);
}
if($this->version()> '5.0.1'){
mysql_query(“SET sql_mode=''”, $this->link);
}
第11頁
} } if($dbname){ mysql_select_db($dbname, $this->link);} function fetch_array($query, $result_type = MYSQL_ASSOC){
return mysql_fetch_array($query, $result_type);}
function result_first($sql){
$query = $this->query($sql);
return $this->result($query, 0);}
function fetch_first($sql){
$query = $this->query($sql);
return $this->fetch_array($query);} function fetch_row($query){
$query = mysql_fetch_row($query);
return $query;} function fetch_fields($query){
return mysql_fetch_field($query);} function fetch_rows($sql){
$result = $this->query($sql);
$arr = array();
while($row = $this->fetch_array($result))
{
$arr[] = $row;
}
$this->free_result($result);
return $arr;} function fetch_one($sql){
$rs = $this->query($sql);
$arr = $this->fetch_array($rs,MYSQL_NUM);$this->free_result($rs);
第12頁
return $arr[0];} function fetch_all($sql, $id = ''){
$arr = array();
$query = $this->query($sql);
while($data = $this->fetch_array($query)){
$id ? $arr[$data[$id]] = $data : $arr[] = $data;
}
return $arr;}
function cache_gc(){
$this->query(“DELETE FROM {$this->tablepre}sqlcaches WHERE expiry<$this->time”);}
function query($sql, $type = '', $cachetime = FALSE){
$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query')'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->link))&& $type!= 'SILENT'){
$this->halt('MySQL Query Error', $sql);
}
$this->querynum++;
$this->histories[] = $sql;
return $query;}
function affected_rows(){
return mysql_affected_rows($this->link);}
function error(){
return(($this->link)? mysql_error($this->link): mysql_error());}
function errno(){
return intval(($this->link)? mysql_errno($this->link): mysql_errno());}
function result($query, $row){
$query = @mysql_result($query, $row);
return $query;}
function num_rows($query){
第13頁
?
$query = mysql_num_rows($query);
return $query;}
function num_fields($query){
return mysql_num_fields($query);}
function free_result($query){
return mysql_free_result($query);}
function insert_id(){
return($id = mysql_insert_id($this->link))>= 0 ? $id : $this->result($this->query(“SELECT last_insert_id()”), 0);}
function version(){
return mysql_get_server_info($this->link);}
function close(){
return mysql_close($this->link);}
function halt($message = '', $sql = ''){
$error = mysql_error();
$errorno = mysql_errno();
if($errorno == 2006 && $this->goneaway--> 0){
$this->connect($this->dbhost, $this->dbuser, $this->dbpw, $this->dbname, $this->dbcharset, $this->pconnect, $this->tablepre, $this->time);
$this->query($sql);
} else {
$s = 'Error:'.$error.'
';
$s.= 'Errno:'.$errorno.'
';
$s.= 'SQL::'.$sql;
exit($s);
} } } ?>
第14頁
(三)留言板文件夾中文件的介紹
有了數據庫,就應該設計留言板的各個頁面。本留言板由2個文件夾,11個文件組成,簡單介紹各文件的作用:
index.PHP:留言板主頁,主要功能是查看留言,任何人都可以查看留言信息。Fun.php連接數據庫并統計留言條數、計算頁數 Config.php連接配置數據庫。
(四)留言板首頁設計
我留言板的首頁文件index.PHP,功能主要是為訪客留下相關的信息,并進行留言。界面相對簡單,但功能很實用!留言板的基本功能實現具體如下:
圖7.1留言首頁
圖7.2愿望
圖7.3愿望列表
結束語:通過上面的介紹,相信對該留言板整體的構建和各項功能都有了一定的認識,最重要的是學會了留言板的設計以及類似網絡的編程,更對實際操作和具體設計流程有了清晰的認識。該留言板實現了基本功能,并具有自己的特色,例如屏蔽關鍵字和防灌水功能。由于該留言板功能實用,而且界面友好,特別適合于中小型網站使用。對于剛剛接觸網絡編程人員的信心和興趣也會有很大提高。
八 總結
通過本次畢業設計,我學到了很多東西,例如:編程規范,PHP技術等。這次畢業設計是對我大學本科四年所學知識的一次綜合應用,讓我認識到了自己的不足,并不斷的加強改進。在系統不斷的完善改進中,我學到了很多新的知識,也懂得了很多。這使我對自己的未來充滿了信心。
九 留言板特色和不足
特色:任何人都可以留言,任何人都可以看到。無需注冊和登錄,完全開放。不足:管理員功能較弱。
第15頁
參考文獻:
1.《PHP語言,進階和高級應用》 龍浩等編著 清華大學出版社
2.《PHP & MYSQL Web數據庫應用開發指南》 Hugh E.Williams等著 謝君英 歐陽宇譯2003年5月
3.《php程序設計》 Programming PHP 中國電力出版社 2003年7月 4.《phpmysql數據庫開發指南》焦桐順著 電子工業出版社 2001年9月 5.《php4交互網頁數據庫實戰手冊》清華大學出版社 2004年7月
第16頁