在我的项目中,我只需要为用户提供一次评级系统。 我在我的数据库中有一个表,我存储所有的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 :(得分: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但不能完全证明你可以减慢垃圾邮件发送者的速度。