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