PHP如何防止同一ip重复记录?网站有个分享链接增加金币和积分功能,但同IP会无限记录并增加金币和积分, 15
现在我想让同一IP24小时只记录和增加一次,本人菜鸟也没积分啦,望请高手帮我完善下,谢谢,数据库表名是:share,表内字段:ip访问IPagent访问客户端uid会员I...
现在我想让同一IP24小时只记录和增加一次,本人菜鸟也没积分啦,望请高手帮我完善下,谢谢,数据库表名是:share,表内字段:ip 访问IP agent 访问客户端 uid 会员ID cion 赠送金币 jinyan 赠送经验 addtime 访问时间
源代码是:
//分享
public function share()
{
//关闭数据库缓存
$this->db->cache_off();
$this->load->library('user_agent');
$uid=intval($this->uri->segment(3));
if($uid==0){
header("Location: ".Web_Path);exit;
}
//判断每天上限次数
$addid=1;
if(User_Nums_Share>0){
$times=strtotime(date("Y-m-d 0:0:0"));
$nums=$this->db->query("select id from ".CS_SqlPrefix."share where uid=".$uid." and addtime>".$times."")->num_rows();
if($nums>User_Nums_Share){
$addid=0;
}
}
//增加金币和经验
if($addid==1){
$edit='';
if(User_Cion_Share>0){
$edit.=",cion=cion+".User_Cion_Share."";
}
if(User_Jinyan_Share>0){
$edit.=",jinyan=jinyan+".User_Jinyan_Share."";
}
if(!empty($edit)){
$edit=substr($edit,1);
$this->db->query("update ".CS_SqlPrefix."user set ".$edit." where id=".$uid."");
}
}
//写入分享记录
$agent = ($this->agent->is_mobile() ? $this->agent->mobile() : $this->agent->platform()).' / '.$this->agent->browser().' v'.$this->agent->version();
$add['uid']=$uid;
$add['cion']=($addid==1)?User_Cion_Share:0;
$add['jinyan']=($addid==1)?User_Jinyan_Share:0;
$add['ip']=getip();
$add['agent']=$agent;
$add['addtime']=time();
$this->CsdjDB->get_insert('share',$add);
//分享访问的地址
$shareurl='http://'.Web_Url.Web_Path;
header("Location: ".$shareurl);exit;
}
}
本人菜鸟不会写代码,麻烦哪位高手帮完善下,积分就这点了,在此谢谢各位了! 展开
源代码是:
//分享
public function share()
{
//关闭数据库缓存
$this->db->cache_off();
$this->load->library('user_agent');
$uid=intval($this->uri->segment(3));
if($uid==0){
header("Location: ".Web_Path);exit;
}
//判断每天上限次数
$addid=1;
if(User_Nums_Share>0){
$times=strtotime(date("Y-m-d 0:0:0"));
$nums=$this->db->query("select id from ".CS_SqlPrefix."share where uid=".$uid." and addtime>".$times."")->num_rows();
if($nums>User_Nums_Share){
$addid=0;
}
}
//增加金币和经验
if($addid==1){
$edit='';
if(User_Cion_Share>0){
$edit.=",cion=cion+".User_Cion_Share."";
}
if(User_Jinyan_Share>0){
$edit.=",jinyan=jinyan+".User_Jinyan_Share."";
}
if(!empty($edit)){
$edit=substr($edit,1);
$this->db->query("update ".CS_SqlPrefix."user set ".$edit." where id=".$uid."");
}
}
//写入分享记录
$agent = ($this->agent->is_mobile() ? $this->agent->mobile() : $this->agent->platform()).' / '.$this->agent->browser().' v'.$this->agent->version();
$add['uid']=$uid;
$add['cion']=($addid==1)?User_Cion_Share:0;
$add['jinyan']=($addid==1)?User_Jinyan_Share:0;
$add['ip']=getip();
$add['agent']=$agent;
$add['addtime']=time();
$this->CsdjDB->get_insert('share',$add);
//分享访问的地址
$shareurl='http://'.Web_Url.Web_Path;
header("Location: ".$shareurl);exit;
}
}
本人菜鸟不会写代码,麻烦哪位高手帮完善下,积分就这点了,在此谢谢各位了! 展开
1个回答
展开全部
这个很简单,我只说下思路,就是做以下判断
在share表里sql查询 增加时间范围在(获取当前日期 加 00:00:00 和 当前日期 加 23:59:59)内 UID = 当前传过来的uid的 and ip = 传过来的IP 如果查询出结果,直接终止操作,否则增加金币和积分
在share表里sql查询 增加时间范围在(获取当前日期 加 00:00:00 和 当前日期 加 23:59:59)内 UID = 当前传过来的uid的 and ip = 传过来的IP 如果查询出结果,直接终止操作,否则增加金币和积分
追问
能把我上面代码完善下吗,关键是不会写啊
追答
如果你一点都不懂,我就是写下代码你也不会用,还是找会开发的人吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询