永发信息网

PHP如何防止同一ip重复记录?网站有个分享链接增加金币和积分功能,但同IP会无限记录并增加金币和积分,

答案:2  悬赏:80  手机版
解决时间 2021-03-18 04:17
  • 提问者网友:謫仙
  • 2021-03-17 12:45
现在我想让同一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;
}
}

本人菜鸟不会写代码,麻烦哪位高手帮完善下,积分就这点了,在此谢谢各位了!
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-03-17 12:59
这个很简单,我只说下思路,就是做以下判断
在share表里sql查询 增加时间范围在(获取当前日期 加 00:00:00 和 当前日期 加 23:59:59)内 UID = 当前传过来的uid的 and ip = 传过来的IP 如果查询出结果,直接终止操作,否则增加金币和积分
全部回答
  • 1楼网友:傲气稳了全场
  • 2021-03-17 13:51
不是
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯