PHP投票 每天只能投票一次,怎么来设置啊?

 我来答
xiii130
推荐于2018-03-14 · 知道合伙人软件行家
xiii130
知道合伙人软件行家
采纳数:817 获赞数:2867
爱好编程,在工作中积累了比较丰富的经验。愿与大家共同进步。

向TA提问 私信TA
展开全部
个人经验
至少我认为目前为止还没有一种方法能完全避免网上重复投票的
如果记录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);
追问
你这个是每隔24小时可以投票一次吧,我这要求 每天可以投票一次。过了晚上12点就可以继续投票
追答
好的,你可以将时间也存入其中
//获取ip地址
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
//获取当前时间
$date=date('y:m:d');
//以数组形式存入session
$info = array('ip'=>$cip,'time'=>$date);
//取出
$_SESSION['voteip'] = $info;
$arr = $_SESSION['voteip'];
//取出储存的日期
$t1 = strtotime($arr['time']);
取出当前日期
$t2 = strtotime(date('y:m:d'));
//计算当前相差天数
$t = $t2 - $t1;
echo (int)($t / 86400);
//判断是否大于一天
if($t>=1){
//允许投票
}else{
//拒绝
}
?>
因为只记录了天数,所以你即使是在昨天的11点59分59秒投的
过了12点,计算结果仍为1,可以投票
蓟素枝六莺
2019-05-26 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:30%
帮助的人:991万
展开全部
投票的时候见ip
和投票时间存入数据库,
存入数据库的时候判断该ip在数据库中是否存在,
如果不存在就第一次,可以进去,
如果存在,就取出数据库中那条数据的时间来判断是否是当天的时间,
如果不是当天的时间,就把现在投票的数据存进去,
如果是当天的时间,就不能把数据存进去,提示你今天已经投过票了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dingdang0702
2012-12-12 · TA获得超过384个赞
知道小有建树答主
回答量:375
采纳率:100%
帮助的人:241万
展开全部
每人每天只能投一次吗?
通过用户限制
如果没有用户设置,通过IP限制
$_SERVER['REMOTE_ADDR']可以取到客户端(即访问用户)的IP
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
32个字符
2012-12-12 · 超过11用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:28.2万
展开全部
每个用户投票后 记录下ip 第二天再重新记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luocongjay
2012-12-12 · TA获得超过949个赞
知道小有建树答主
回答量:1382
采纳率:33%
帮助的人:432万
展开全部
记录IP和当前投票时间。再判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式