这是一个关于投票的页面,通过获取IP限制投票次数。但现在除了点问题,即可以反复投票,给怎么改? 30
代码如下:我试过将if句上面的->count()改成->get(),然后的确没有“投票成功”的提示了,但我把数据库清空之后也没办法投票了,显示的是“今天您已经投过一票!”...
代码如下:
我试过将if句上面的->count()改成->get(),然后的确没有“投票成功”的提示了,但我把数据库清空之后也没办法投票了,显示的是“今天您已经投过一票!”
public function postVote(Request $request){
$count = DB::table("contests_vote")
->where("contestId",$request['id'])
->where("ip", $request['ip'])
->whereBetween('created_at',[date('Y-m-d 00:00:00',time()) , date('Y-m-d 23:59:59',time())])
->count();
if($count>0){
$ret = ['state' => 'fail', 'message' => '今天您已经投过一票!'];
}else{
DB::transaction(function () use($request){
DB::table("contests")->where("id", $request["id"])->increment("vote");
DB::table("contests_vote")->insert(["contestId"=>$request["id"], "ip"=>$request['ip'].'_'.$this->get_inter()]);
});
$ret = ['state' => 'success', 'message' => '投票成功'];
}
return \Response::json($ret);
} 展开
我试过将if句上面的->count()改成->get(),然后的确没有“投票成功”的提示了,但我把数据库清空之后也没办法投票了,显示的是“今天您已经投过一票!”
public function postVote(Request $request){
$count = DB::table("contests_vote")
->where("contestId",$request['id'])
->where("ip", $request['ip'])
->whereBetween('created_at',[date('Y-m-d 00:00:00',time()) , date('Y-m-d 23:59:59',time())])
->count();
if($count>0){
$ret = ['state' => 'fail', 'message' => '今天您已经投过一票!'];
}else{
DB::transaction(function () use($request){
DB::table("contests")->where("id", $request["id"])->increment("vote");
DB::table("contests_vote")->insert(["contestId"=>$request["id"], "ip"=>$request['ip'].'_'.$this->get_inter()]);
});
$ret = ['state' => 'success', 'message' => '投票成功'];
}
return \Response::json($ret);
} 展开
3个回答
展开全部
第一步:网上我的名字,下
第二步:打开软件连接国内任何城市IP
第三步:IP就变成那个城市了
使用简单,操作方便
第二步:打开软件连接国内任何城市IP
第三步:IP就变成那个城市了
使用简单,操作方便
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是没设置自增ID? 要不然你一步步var_dump();把.看起来逻辑没问题..
追问
print_r($count),打印出来的值是0,感觉好像是count()的问题
追答
那就是你SQL语句出问题了,你是是删除一些条件慢慢查,或者用GET试试,DB库好久没用了, 能三个where一起写么? 不需要使用AND 或者OR 什么的?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询