个人经验
至少我认为目前为止还没有一种方法能完全避免网上重复投票的
如果记录ip,一般ADSL断网再连ip就变了
设置cookie,浏览器都有禁用或者清除cookie的功能
设置session,关闭浏览器就没了
所以,我们只能尽量防止重复投票现象
方法介绍几种
session_start();
//获取ip地址
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
if(($_COOKIE['VoteIP']==$cip) or ($_SESSION['VoteIP']==$cip)){
//拒绝投票
}
//记录到cookie中
SetCookie("VoteIP", $cip, time()+3600*24);//3600秒=1小时 过期时间为24小时
//记录到session中
$_SESSION['VoteIP']=$cip;
//设置session存活时间
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
投票的时候见ip
和投票时间存入数据库,
存入数据库的时候判断该ip在数据库中是否存在,
如果不存在就第一次,可以进去,
如果存在,就取出数据库中那条数据的时间来判断是否是当天的时间,
如果不是当天的时间,就把现在投票的数据存进去,
如果是当天的时间,就不能把数据存进去,提示你今天已经投过票了,
每人每天只能投一次吗?
通过用户限制
如果没有用户设置,通过IP限制
$_SERVER['REMOTE_ADDR']可以取到客户端(即访问用户)的IP
每个用户投票后 记录下ip 第二天再重新记录
记录IP和当前投票时间。再判断