我正在做一个投票系统,我希望每个设备只有一次投票机会。我如何使用PHP做到这一点?
PHP无法获取MAC,只能获取全局变量$_SERVER['REMOTE_ADDR']
的客户端ip。
这将从环境变量中获得值
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
Cookie的使用
//如果用户第一次投票并成功,则设置$vote = "success"
,然后为该设备设置cookie变量,例如
if($vote == "success"){
setcookie("isvote", "true");
}
//要检查用户是否投票,您可以简单地检查cookie变量是否存在。//这是你可以使用的最后一个代码
if (isset($_COOKIE["isvote"])){
echo "you can vote only one time";
}else{
if($vote == "success"){
setcookie("isvote", "true");
}
}
通过ip地址和cookie,您可以分析投票来自哪个网络。。
您还可以保存用户id或为该用户设置计数,以了解用户尝试投票的次数。您可以在此条件下添加语句->
if (isset($_COOKIE["isvote"])){
// some statements that add or update counter in database
}