2010-09-19 72 views
2

在我的項目中,我只需要爲用戶提供評分系統一次。 我有我的數據庫中的表,我存儲所有的IP地址,我檢查,如果用戶的IP不在數據庫中,我允許評級。如何保存用戶的ip,誰使用隨機生成的ip?

但是現在我遇到了一個問題。

有提供商,每次用戶重新啓動計算機時生成隨機IP地址。

所以當我打電話給$ip=$_SERVER['REMOTE_ADDR'];時,它每次都從同一臺計算機返回不同的結果。

我也嘗試過類似

if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet 
    { 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy 
    { 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else 
    { 
     $ip=$_SERVER['REMOTE_ADDR']; 
    } 

但它並不能幫助。

我該如何解決這個問題?

感謝很多

+0

對不起,但問題本身沒有意義,因爲它措辭。保存一個隨機生成的IP沒有問題,它可以保存,也可以保存爲靜態。並沒有使用HTTP_CLIENT_IP等。它不會返回昨天使用的IP地址。 – 2010-09-19 13:28:13

回答

5

你必須接受一些用戶將改變IP。

如果您的投票系統很重要,可以考慮添加註冊,電子郵件驗證以及IP檢查以過濾出原始的祕籍。

再次,雖然它總是很容易欺騙那些五花八門的系統(網絡代理爲例)

2

有效地打擊這個問題的唯一方法是使用一個獨特的登錄系統,但即使是這樣,用戶可以創建多個帳戶。

1

除了IP檢查可以實現一個cookie,它不是一個完美的解決方案,但是,如果用戶不刪除它,你可以在這個第二道檢查利用查找重複投票嘗試

0

沒有從服務器獲取超全局用戶舊的IP的方式。

餅乾也可以工作,但不是真正可行的一個sinple評級系統。

0

您可以使用setcookie在投票後將cookie寫入用戶的硬盤。當然,對於精明的用戶來說,刪除它並投票兩次會很容易。

1

最好的選擇是強制他們註冊,以評分/投票。

有沒有絕對的方式,否則你將能夠跟蹤他們。

0

您可以結合使用在客戶端設置cookie和存儲IP地址,還可以獲取公共代理的副本和黑名單的IP地址,以及電子郵件驗證。

多數民衆贊成在最大程度上,其不充分的證據,如果人清理緩存,並有一個動態的IP,但你可以減慢垃圾郵件發送者。