上節(jié)課完成了一覽查詢功能頁面。
這節(jié)課來做詳細頁面,將新建頁面和編輯頁面合并編寫成一個詳細頁面。
防止SQL注入
一覽查詢頁面實現(xiàn)了輸入檢索條件進行SQL查詢數(shù)據(jù)庫表,得到滿足條件的數(shù)據(jù)。
這里需要注意一點:編寫代碼要注意防止SQL注入。
那么什么是SQL注入呢?
SQL注入就是由于程序編寫不嚴(yán)謹(jǐn),導(dǎo)致用戶可以在界面上通過輸入特殊的字符串,匹配特殊的SQL語句,執(zhí)行了非預(yù)期的SQL語句,從而對數(shù)據(jù)庫造成破壞或者泄漏的現(xiàn)象。
舉例說明一下。
假設(shè)有一個登錄的SQL語句:
select * from user where account='$account' and password='$password';
那么account隨意輸入一個比如aaa,密碼如果輸入特殊的字符串:' or 1=1;-- 則拼接好的SQL如下:
select * from user where account='aaa' and password='' or 1=1;--';
那么這條語句就可以滿足條件,本來是查詢不到數(shù)據(jù)的,但是通過輸入特殊字符串就可以達到查詢到數(shù)據(jù)的目的了。
這樣就可以實現(xiàn)登錄的目的了。
所以通過以上例子說明,大家就能了解SQL注入的危害性。
那么如何修改代碼,避免發(fā)生SQL注入呢?
方法有很多種,一種辦法是通過限制連接數(shù)據(jù)庫的用戶的相關(guān)權(quán)限來防止用戶執(zhí)行刪除等的動作。
還有一種辦法是修改代碼進行SQL拼接的方式。
還有一種辦法是對輸入的條件參數(shù)進行轉(zhuǎn)換,防止非法的拼接字符串出現(xiàn)。
entity.php代碼修改如下:
可以看到在拼接輸入?yún)?shù)變量之前,運行了函數(shù)mysql_real_escape_string,它的作用就是進行特殊字符轉(zhuǎn)義,防止數(shù)據(jù)庫攻擊。
后面的代碼實現(xiàn)執(zhí)行SQL語句的時候都要對參數(shù)執(zhí)行這個函數(shù)操作。
編寫新聞創(chuàng)建和編輯網(wǎng)頁
接下來實現(xiàn)新聞信息詳細頁面,由于新建頁面和編輯頁面大部分項目都是一樣的,除了ID項目。ID項目新建的時候是不知道的,要創(chuàng)建完數(shù)據(jù)之后才能知道,而編輯的時候,ID是要傳遞到詳細頁面的,因此對這個字段做特殊處理即可。
這樣就不需要做2個頁面,只用1個頁面就可以完成新建和編輯功能。
news_detail.php代碼如下:
news_detail_do.php代碼如下:
news.css代碼如下:
news.js代碼如下:
common.php代碼如下:
entity.php代碼如下:
測試新建功能和編輯功能
打開一覽頁面,點擊新增按鈕,進入詳細頁面:
可以看到ID顯示為空,然后輸入如下數(shù)據(jù):
點擊新增明細按鈕:
然后在明細當(dāng)中輸入下列文字:
然后點擊“選擇文件”按鈕:
在文件選擇框當(dāng)中選擇一個圖片文件,點擊打開:
為了保證上傳成功,需要在Web服務(wù)器的WWW目錄下創(chuàng)建一個upload目錄。
然后點擊上傳按鈕:
可以看到提示消息,說明上傳成功了。點擊確定按鈕讓消息窗口關(guān)閉:
可以看到上傳好的圖片文件前面多了一個查看的鏈接,點擊這個鏈接:
可以看到新打開了一個窗口,顯示這個圖片的內(nèi)容。
回到詳細頁面,再次點擊新增明細按鈕:
可以看到又多了一條明細輸入行。
輸入序號為2,文本內(nèi)容輸入一些內(nèi)容如下:
然后點擊“選擇文件”按鈕,選擇一個圖片文件,點擊打開,然后點擊“上傳”按鈕。
看到提示消息,說明上傳成功了。點擊確定按鈕讓消息窗口關(guān)閉:
點擊保存按鈕,確認(rèn)窗口點擊“確定”按鈕:
顯示保存成功的消息,點擊確定,再點擊返回按鈕,然后點擊查詢按鈕:
可以看到新的數(shù)據(jù)出現(xiàn)了。
然后修改這條新的數(shù)據(jù),點擊右側(cè)的“修改”按鈕,進入詳細頁面:
可以看到ID有數(shù)值了,并且所有輸入的數(shù)據(jù)都正確顯示出來了,修改數(shù)據(jù)如下:
然后將第2條明細記錄刪除,點擊第2條明細行右側(cè)的刪除按鈕,確認(rèn)窗口點擊“確定”按鈕:
可以看到只剩一個明細行了。點擊保存按鈕:
顯示修改成功的消息,點擊確定,再點擊返回按鈕,然后點擊查詢按鈕:
可以看到數(shù)據(jù)修改成功了。
異常輸入情況測試
為了防止用戶在輸入數(shù)據(jù)的時候輸入一些不合適的數(shù)據(jù),需要對輸入的數(shù)據(jù)做數(shù)據(jù)檢查。
數(shù)據(jù)檢查的手段有2種,一種是前端用JavaScript實現(xiàn),另一種是后段接收輸入數(shù)據(jù)時進行檢查。
這2種方式最好都做,前者是方便用戶不需要等到提交才知道錯誤,后者是防止一些腳本程序繞過JavaScript直接提交到服務(wù)器。
學(xué)哥這里因為輸入項目比較簡單,所以前端JavaScript的檢查就省略了。
打開一覽頁面,點擊新增按鈕進入詳細頁面。
直接點擊保存按鈕:
會提示必須輸入的信息,輸入錯誤的數(shù)據(jù),比如長度超過規(guī)定長度,姓名輸入超過30個字符,點擊保存按鈕:
可以看到提示了相應(yīng)的信息。
后臺功能整體測試
將數(shù)據(jù)庫表中的數(shù)據(jù)全部刪除,然后按照邏輯順序進行下列測試:
1.查詢0條記錄
2.新建1條記錄
3.查詢1條記錄,確認(rèn)數(shù)據(jù)字段全部正確
4.修改1條記錄
5.查詢1條記錄,確認(rèn)數(shù)據(jù)字段全部正確
6.刪除1條記錄
7.查詢0條記錄
8.新建2條記錄
9.查詢2條記錄,翻頁數(shù)據(jù)正確
10.插入1條記錄
11.查詢3條記錄,翻頁數(shù)據(jù)正確
12.點擊翻頁鏈接正確翻頁
13.插入2條記錄
14.查詢5條記錄,翻頁數(shù)據(jù)正確
15.點擊翻頁鏈接正確翻頁
16.修改第2頁的1條記錄
17.刪除第2頁的1條記錄
18.查詢記錄確認(rèn)修改和刪除都正確
下節(jié)課來編寫前端網(wǎng)頁用于顯示新聞消息的內(nèi)容。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由信途科技轉(zhuǎn)載于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系站長刪除。
轉(zhuǎn)載請注明出處http://macbookprostickers.com/xintu/16070.html