萬早德

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