2012-04-21 72 views
1

我目前正在創建一個網站,允許匿名用戶輸入數據(或評論)到數據庫中,並允許其他匿名用戶訪問該網站上的網站評論。PHP服務器選項和投票系統

我已經創建了允許用戶創建評論並允許其他用戶對評論投票的功能。我遇到的問題是考慮如何限制每個訪問者訪問該網站只對每條評論投票一次。

我的想法是在用戶投票時創建一個會話ID,然後當他們嘗試並再次投票嘗試並比較會話ID是否已存在時。這將工作,但只有在會議被銷燬之前。有沒有人有任何其他的想法如何實現?

我猜想,我也許可以使用一些現有的$ _ SERVER選項提前

感謝

+2

我假設你已經嘗試過一些東西?試圖控制「匿名」幾乎是不可能的。 IP是共享的,會話是臨時的,cookies可以被刪除。 – Blake 2012-04-21 17:39:57

+0

當我說匿名時,我的意思是我沒有獲得有關用戶的信息,因此無法識別另一個用戶(即,通過登錄) – Phil 2012-04-21 17:45:26

+1

我知道你的意思,但它歸結爲:沒有獨特的標識符,沒有獨特的限制。 – Blake 2012-04-21 17:46:49

回答

1

只是限制與知識產權的或任餅乾投票,我也創造了3個網站,其中我有接受公衆投票,早些時候我用IP做了它,但後來我又變回了cookies,我也保存了IP,並設置了cookie來檢查用戶是否一次又一次地刪除cookies來投票,但我從來沒有這樣的問題,所以我的意見只是使用cookie,因爲不是每個人都可以發現我們正在使用cookie。

+0

是嗎?我可以更改我的IP並刪除Cookie。我在很多網站上做了這麼多次。不要相信你的用戶! – 2012-04-21 18:35:16

+0

幸運的是,這只是一個小型網站,所以我認爲這足夠了,再加上如果他們真的去改變IP和刪除cookie的努力,那麼他們應該能夠投兩次:)謝謝 – Phil 2012-04-21 19:10:29

-1

當您插入特定文章的評論時,請存儲該評論的成員(評論者)的ID或名稱或任何唯一的事物。把驗證碼插入註釋之前....

Select * from articles where member_commented_id = [current_member_id_from_querystring) and article_id = member_commented_on_article_id 

//a check point 
if result is > 0 .. its mean member already has commented on this article 

//otherwise 
add comments on article and insert member id as well for checking 

// if you are using seperate table for comments then you have to make additional field in table like 

comment_id, comment, com_date, member_id_who_commented, article_id_on_which_commented 

使IP或者Cookie檢查點是不可靠的,因爲IP地址是由ISP(如果設置爲動態IP)改變,Cookie可以通過訪問者被清除

希望這有助於你

+0

歡迎來到堆棧溢出!請正確格式化您的代碼。通過在任何代碼行之前縮進4個空格來插入代碼塊。我這次爲您編寫了代碼格式,但下次請正確格式化。如需進一步的幫助,請參閱[編輯常見問題](http://stackoverflow.com/editing-help#code) – 2012-04-21 18:31:00

0

這是不可能執行的匿名用戶系統上的一票政策。就像在上面的評論中所說:

試圖控制「匿名」幾乎是不可能的。 IP的共享, 會話是暫時的,Cookie可以被刪除

您不能100%確定你的客戶,如果用戶希望,他將能夠繞過不擇手段試圖使用和投票不止一次。

您唯一可靠的選擇是強制註冊並且只允許註冊用戶投票。


如果你還是堅持,你可以儘量做到困難用戶繞過您的強制執行措施的系統。使用用戶的IP地址和持久cookie的組合,並對兩者進行交叉驗證,以確保用戶不投票兩次。但是,請注意,用戶可以輕鬆刪除Cookie,並且在大多數情況下,請更改其IP地址。

+0

幸運的是,這只是一個小型網站,所以我認爲這樣做就足夠了,如果他們真的需要改變知識產權和刪除cookie,那麼他們應該能夠投兩次:)謝謝 – Phil 2012-04-21 19:10:53