我們有下面的例子:如何捕捉具有不同IP相同的用戶
一個網站(使用Apache/MySQL的PHP編寫的Web應用程序),您可以在不同的崗位投票。例如,我是一個用戶,我發佈「安娜喜歡蘋果」。
每個訪問該網站的人必須能夠upvote我的帖子,如果他們喜歡它,但只有一次(有或沒有被註冊)!
實現此目標的最佳方法(如我迄今所知)是檢查想要註冊的未註冊用戶的IP。但是當用戶更改他的IP時你會做什麼?
我們如何檢查用戶是否曾經從同一臺計算機投票過,但使用不同的IP?
我們有下面的例子:如何捕捉具有不同IP相同的用戶
一個網站(使用Apache/MySQL的PHP編寫的Web應用程序),您可以在不同的崗位投票。例如,我是一個用戶,我發佈「安娜喜歡蘋果」。
每個訪問該網站的人必須能夠upvote我的帖子,如果他們喜歡它,但只有一次(有或沒有被註冊)!
實現此目標的最佳方法(如我迄今所知)是檢查想要註冊的未註冊用戶的IP。但是當用戶更改他的IP時你會做什麼?
我們如何檢查用戶是否曾經從同一臺計算機投票過,但使用不同的IP?
要確定用戶是否真的相同,您應該更多地依賴他的NIC的MAC地址而不是他的IP地址。在這裏我找到了一個類似的問題,其中一個提出了一個JavaScript來獲取遠程MAC地址。
How can I get the MAC and the IP address of a connected client in PHP?
請注意,這裏沒有100%的方式。一個確定的用戶會找到方法。這取決於你保守,不允許可疑的情況。也許你可以爲所有提到的方法指定唯一性概率:用戶會話,瀏覽器的用戶代理,cookie,IP,MAC。要阻止的門檻應該是一個依賴後果嚴重程度的商業決策。
謝謝@KarmaEDV這可能是我正在尋找的。如果在一個小時內沒有更好的答案,我會將此標記爲最合適的答案。 –
沒有比MAC地址更好的方法,除非你強制登錄... – KarmaEDV
我確實同意你的看法,我認爲這與cookie檢查結合將是處理雙選票的最佳方式。 –
您可以使用cookie。例如:
setcookie("already_voted","yes");
後來檢查,如果該cookie存在:
if($_COOKIE["already_voted"] == "yes") /* Disallow voting */
這裏的主要問題是,用戶可以刪除cookies:/
這隻有在窗口不處於私人模式時纔有效。 –
是的,我知道這種方法,但正如你所提到的,用戶可以刪除他的cookies ...並且與一個用戶如此決心對upvote一個帖子,他改變他的IP或尋找一個代理......他將definetely擦除cookie。 –
如果他們不只是記錄使用會話變量,我想...把這個放在每個腳本的頂部:
// set cookie lifetime for 1000 days (60sec * 60mins * 24hours * 1000days)
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 1000);
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 1000);
// start session
session_start();
而在頁面上,一旦t哎點擊投票設置:
$_SESSION['votes']['post_id'] = 1;
並在代碼模板只能說明在此條件下投票按鈕:
if (empty($_SESSION['votes']['post_id'])) {
//show voting button html
}
這個確切的實施將取決於你如何組織你的代碼,但這是沒有任何工作的例子的原始邏輯。如果他們清除所有瀏覽器緩存/ cookies,他們可以再次投票,但是如果您希望它與客戶兼容,那麼您可以做的很少。
看看@Castillo的回答。這種方法不適用於確定的用戶。 –
@MerdescuR。我知道這一點,我只是更新我的答案,因爲你發表了你的評論:) – ajmedway
如果用戶已註冊,則可以通過在用戶信息中存儲postID來檢查用戶的投票。然後當用戶投票時,檢查postID是否已經存儲過。
如果沒有註冊的用戶和一個設備只能有一個投票(沒有登錄),我認爲cookie存儲在設備中,所以你可以設置一個cookie與一些特定的信息(TimeofSetCookie,UnregisterUserName ,PATH .....),然後使用$ _COOKIE獲取cookie並檢查它。
嗯....我只能有這兩種方式....希望他們可以幫助你
我認爲會有一個問題,不同的人可以使用相同的IP或相同的設備來投票。那麼你的網站在這種情況下可能會失去這種投票。你爲什麼不嚴格只有會員可以投票?
好吧,考慮到我需要用戶投票作爲一個快速行動,我需要投票快(沒有其他步驟註冊)。並且可以通過檢查mac並將它們放在另一個旁邊來解決ip問題。 –
讓用戶登錄,以便識別用戶。 –
@GordonLinoff我需要爲未註冊且不希望註冊的用戶執行此操作。 –
無法使用IP地址對其進行跟蹤 –