最近學校導航站找我讓我給他們做一個投票系統的網站,我一口答應了,他們只是要求不准刷票情況出現,我也一口答應了。。我答應的太干脆了。
然后我便開始做這個網站,網站做出來沒花太多時間,並且我是用IP來判斷是否投過票,現在想起來,IP,唉,,,痛啊啊啊啊啊。
投票的前一天,我給導航站的看網站,他們覺得可以,並且希望只能用學校內網投票,然后又改,還好服務器是在學校里面的,內網的IP可以直接訪問的,在IP處理這一方面直接用的是正則表達式,只允許172.16.0.0到172.32.255.255的IP投票,然后我天真的以為這樣就可以防止刷票了。
投票的第一天,很多隊伍都很為內網投票很頭疼,我告訴了他們可以用VPN連到校內網進行投票。我雖然是這么一說了,但是萬萬沒有想到,每連一次VPN,IP就換一次,意思說刷票情況又出現了。為了防止這一情況,我設置了cookie,保存當前用戶投票的隊伍,若是刷票的話,下一票肯定還是這個隊,所以我就這么做了,同時我還設置了驗證碼。我再次天真的以為刷票風雲就可以這么結束了,可萬萬沒想到厲害的還在后面,先上一張圖:
我呵呵勒個呵呵,在跟我開玩笑嗎?百度一下一大片一大片的軟件,自動更換IP,自動輸入驗證碼,啊啊啊啊啊啊啊啊,我當場就哭了,哭的相當的慘呀,慘不忍睹呀,弄了老半天就這么給破了,不甘心呀。
我沒有辦法了,我之后弄郵箱驗證了。以前沒有寫過郵箱這一塊的程序,在網上看了下實現方法,當然我很擔心,如果發郵件的話會不會被比如說騰訊郵箱攔截下來之類的呀,表示也很蛋疼,便在網上直接找到了個類,將這個郵箱類看懂之后直接拿來用了。有個域名,是freestu.net,並且這學期開學之后去弄了騰訊的企業郵箱,覺得相當爽,以自己的域名來做郵箱,好霸氣高端上檔次。看懂類之后直接拿來實例化用了,現在網站是集合IP,cookie,驗證碼,郵箱驗證四大功能防刷票。
已經不會再愛了,在群里面我被罵慘了,越整越難投票了。不愛了。
我再講講每個方法的實現吧。
IP,用到的是一個函數:
getenv("REMOTE_ADDR")
cookie是用的函數:
setcookie("ip",$ip,$time); setcookie("vote_id",$tb_vote_id,$time);//設置cookie,到時候可以判斷VPN之后還是投這個隊的話就投不起
cookie的檢查:
$_COOKIE['vote_id']==$tb_vote_id
驗證碼是以前寫的一個類,直接拿來用了,主要就是隨機生成一個4位數,包括A-Z,a-z和0-9,驗證的時候區分大小寫,然后存在session里面。
發郵箱的類:

郵箱發送的內容也是隨機一個10位的包括大寫小寫數字的驗證碼,發過去然后郵箱獲得后可以直接復制,同時這個驗證碼存入cookie里面,這里存session也可以的,然后讓用戶輸入驗證碼,判斷這個郵箱的驗證碼與cookie或者session中的是否一樣。
投票還沒有結束,但是起碼我看見了成效,沒有再刷票了。yeah~~~~
轉載請注明出處:http://www.cnblogs.com/yydcdut/p/3470105.html