如何追踪IPv4地址以防止多重投票?

问题描述 投票:1回答:1

我正在创建一个网站,并试图实现一个功能来防止多重投票。目前我实现的方式似乎在一定程度上是有效的,但似乎用户的IPv6 IP地址每天都在变化,允许每个用户在另一天进行另一次投票。

这是我目前记录IP的方式。

这是我在PHP中抓取用户IP的方法。

$user_ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');

这是我在数据库中记录每一次投票的方法。

$check_if_vote = mysqli_query($con, "SELECT * FROM voting_log WHERE voter_ip = '".$user_ip."' AND voted_user = '".$search."'");

if(mysqli_num_rows($check_if_voted) <= 0) {
    mysqli_query($con, "INSERT INTO voting_log (voter_ip, voted_user, votetype) VALUES ('".$user_ip."', '".$search."', 0);");
} else {
   echo "You have already voted for this user";
}

有没有办法只追踪IPv4的IP,因为这些IP似乎永远不会改变?

php html ip environment-variables
1个回答
1
投票

如果你觉得可以在其中加入一点javascript,可以考虑在你的网站前端添加一些代码,对客户端进行指纹识别。将其与请求一起发送,如果你处理的是IPv6,则依靠指纹来代替。

这个问题 有多个伟大的答案,详细介绍了如何实现这个目标。

它仍然不是万无一失的,但遇到一个既拥有IPv6,又有足够的智慧来规避你所选择的客户端唯一识别方法的用户的几率可能会低到足以让你接受。

© www.soinside.com 2019 - 2024. All rights reserved.