如何保存用户的ip,谁使用随机生成的ip?

时间:2010-09-19 11:55:50

标签: php ip-address

在我的项目中,我只需要为用户提供一次评级系统。 我在我的数据库中有一个表,我存储所有的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'];
    }

但它没有帮助。

我该如何解决这个问题?

非常感谢

7 个答案:

答案 0 :(得分:5)

您必须接受某些用户将更改IP。

如果您的投票系统很重要,请考虑添加注册,电子邮件验证以及IP检查以过滤原始作弊。

再次虽然在各种系统(例如网络代理)上作弊总是很容易

答案 1 :(得分:2)

有效对抗此问题的唯一方法是使用独特的登录系统,但即使这样,用户也可以创建多个帐户。

答案 2 :(得分:1)

除了ip检查你可以实现一个cookie,它不是一个完美的解决方案,但是,如果用户没有删除它,你可以利用第二次检查找到重复的投票尝试

答案 3 :(得分:1)

最佳选择是强制他们注册,以便评价/投票。

否则你无法以绝对的方式跟踪它们。

答案 4 :(得分:0)

无法从服务器超全局获取用户旧IP。

Cookies也可以工作,但对于一个罪魁祸首评级系统来说并不是真的可行。

答案 5 :(得分:0)

您可以使用setcookie在投票后将Cookie写入用户的硬盘。当然,精明的用户很容易将其删除并投票两次。

答案 6 :(得分:0)

您可以同时使用在客户端设置cookie和存储IP地址的组合,也可以获取公共代理的副本并将IP地址列入黑名单,以及电子邮件验证。

这是最大程度的,如果该人清理缓存并具有动态IP但不能完全证明你可以减慢垃圾邮件发送者的速度。