萬早德

摘 要 中等職業學校的軟件與信息服務專業,三年級開設的《web項目實戰》是征對二年級已經開設過的專業課程,通過項目,編寫具體的工程,讓學生了解一個項目從設計到實現的整個流程,為今后從事軟件開發等相關工作打下一個堅實的基礎。筆者為了帶好學生的《web項目實戰》課程,特意編寫了一個基于PHP的在線投票系統,來引領學生真正走進項目實戰,同時也將該系統分享給大家。
關鍵詞 PHP MySql 在線投票系統
中圖分類號:TP29文獻標識碼:A
基于PHP的在線投票系統,采用B/S模式,主要功能由分前、后臺完成,后臺主要包括:登錄模塊、會員管理、投票主題管理、投票主題選項管理等幾個模塊,會員在后臺設置好投票主題和輸入相應主題選項后,用戶就可以在登錄網站,在規定的時間內進行投票,同時也可以實時查看投票結果,這樣在日常生活中有不少場合,是需要對一些主題進行投票,這個系統都有很好的應用價值。
為實現在線投票系統的預期功能,應在MySql中設計一個數據庫(vote),其中包含有四張數據據表,會員表(user)、找回密碼問題表(a_p_question)、表投票主題表(votetopic)和投票主題選項表(topicoption)的表結構(略)。
1登錄模塊
(1)在登錄模塊中,除了實現在客戶端對數據的合法性進行驗證外,還添加了驗證碼,來提高網站的安全性,防止他人登錄惡意注水。通過GD庫制作驗證碼,并存入SESSION中,這樣再結合PHP的SESSION這個超級全局變量,就可以實現對網頁的合法性訪問起到有效保護。
(2)在會員管理中有“設計找回密碼問題”功能,用戶在成功登錄后,根據自己的情況,設置“找回密碼問題”和“回答問題的答案”,系統會自動存入到用戶表中當前用戶對應的記錄中,這樣,以后在登錄網站時,如果用戶忘記了密碼,可以通過“忘記密碼?”功能,順利找回密碼。
2會員管理
會員管理主要有會員注冊、會員修改、刪除會員,設置找回密碼問題。
在會員注冊功能中,為了強化學生的JavaScript知識應用能力,增加了現在流行的Ajax技術,注冊會員時,在輸入一個新用戶名并當文本框在失去焦點時,系統會自動對新輸入的用戶名進行合法性判斷,判斷此用戶名是否在用戶表已經被注冊過,并馬上給出信息提示,通過局部刷新技術,能大大提高網站的注冊率,也會提高學生對學習新技術的深厚興趣。
3投票主題管理
實現的界面如圖1。
投票主題管理除了增加投票主題、修投票主題、刪除投票主題。關鍵通過JavaScript技術,在每條記錄上增加一個設置當前投票主題功能:
)"
function f(id){
window.location.href="topicDo.php?id="+id;
}
當前用戶單擊“是否選中”前面的單選按鈕時,系統通過JavaScript技術支持會跳轉到topic.php網頁,把當前記錄的isChecked字段值設置為1,這樣就成功把這個主題設置為當前投票主題,用戶就可以在網站的首頁對這個主題進行投票了。
4投票主題選項管理
當用戶打開主題選項管理,系統已經把所有主題放到一個下拉列表中,需要先選擇對應的主題。
在選擇好主題后,系統會自動判斷當前主題的選項是否為空,如果選項還沒內容,會自動轉入到添加當前主題選項表單,用戶需要完成表單的錄入;如果當前主題的選項是完整的,則會跳轉查看當前主題的投票結果。
5網站首頁的投票功能和查看投票結果
系統會自動根據主題表中當前主題的開始和結束時間的字段值進行判斷,如果不在投票規定的有效期,會給出提示信息,投票功能失效,禁止用戶投票;如果是在投票規定的有效期,所有用戶都能對當前的主題進行投票,也能實時查看當前的投票結果,
如果用戶想連續投票,為了緩解服務器的壓力,系統會獲取用戶客戶端的IP,封閉此IP10秒鐘,10秒之后才允許再次投票,實現代碼:
if(isset($userIp)){
echo "";
sleep(10);
} else{
$str=$_SERVER['REMOTE_ADDR'];
setCookie('userIp',$str,time()+60);
}
6結束語
對于在校中職生,如何充分利用學校的教學資源,并結合對應專業的行業規范,通過適合的項目訓練,有效提高在校學生的專業技能水平,為他們將來的就業打下一個良好的基礎,這正是我們每個從事職業教育工作者的迫切義務。由于篇幅限制,還有一些沒有講明白的地方,希望得到您的諒解。
參考文獻
[1] 高洛峰.細說PHP[M].電子工業出版社,2009.
[2] 曾俊國,羅剛,王飛. PHP WEB開發實用教程[M].北京:清華大學出版社,2011.