投票系统 有人刷票 求大神帮忙解决
本帖最后由 u010603569 于 2013-06-21 08:55:59 编辑
我这投票是一个IP地址在一个小时只能只能对一个ID投一票,但是那些刷票机器为什么能绕过一个小时,同一个IP能在一个小时之内不断的写入数据库,这点让我很不解,一个小时的时间限制完全对刷票机器不起作用,求大神帮忙解决,验证码很不友好,能不能有什么好方法解决这个问题[size=36px][/size]
<?php<br />error_reporting(0);<br />session_start();<br />require_once 'config.php';<br />require_once COMMON_PATH.'Common.php';<br />$common = new Common();<br />date_default_timezone_set ('Asia/Shanghai');<br />$weil = strtotime("2013-08-07 23:59:59"); <br />$now = time();<br />if($weil-$now < 0){//投票时间过期<br /> echo 0;<br /> exit;<br />}<br /><br />$ip = $common->getClientIp();<br />$id = $_POST['id'];<br />$ipid=$ip.$id;<br />if($_SESSION['ipid']==$ipid||$_COOKIE['ipid']==$ipid){<br /><br />//$array = array('48','49','67','47'); <br />//if ( in_array($id,$array) ) {<br /> echo 2;<br /> } else {<br /> $tbName = TB_NAME;<br /> $limit_time = 3600;<br /> $arr = $common->getItems('id,addTime','20130618_ztao_jtsjip','id','desc',"where tpId='$id' and ip='$ip'");<br /> $row = false;<br /> if (count($arr) > 0) {<br /> $row = $arr[0];<br /> }<br /> if(!$row){<br /> $common->insertItems('20130618_ztao_jtsjip','tpId,ip,addTime',"'$id','$ip','$now'");<br /> $res = $common->updateItems("$tbName",'voteNum=voteNum+1',"$id");<br /> $_SESSION['ipid']=$ipid;<br /> setcookie("ipid","$ipid",time()+$limit_time);<br /> if($res == true){<br /> echo 1;//投票成功 <br /> }else{<br /> echo 3;<br /> }<br /> <br /> }else if(($now-$row['addTime'])>$limit_time){<br /> $common->insertItems('20130618_ztao_jtsjip','tpId,ip,addTime',"'$id','$ip','$now'");<br /> $res = $common->updateItems("$tbName",'voteNum=voteNum+1',"$id");<br /> $_SESSION['ipid']=$ipid;<br /> setcookie("ipid","$ipid",time()+$limit_time);<br /> if($res == true){<br /> echo 1<em>8本文来源gao.dai.ma.com搞@代*码(网$</em><pre>搞代gaodaima码
;
}else{
echo 3;
}
}else if(($now-$row[‘addTime’])<$limit_time){
echo 2;
}else{
echo 3;
}
}
?>
投票系统 PHP session
分享到:
——解决方案——————–
$arr = $common->getItems(‘id,addTime’,’20130618_ztao_jtsjip’,’id’,’desc’,”where tpId=’$id’ and ip=’$ip'”);
返回了什么?print_r($arr) 打印出来看看
——解决方案——————–
<br />if($_SESSION['ipid']==$ipid<br><font color='#FF8000'>------解决方案--------------------</font><br>$_COOKIE['ipid']==$ipid)<br />
cookie可以伪造,ip也是用户可以控制的
你看下是不是这个原因
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:投票系统 有人刷票 求大神帮忙解决解决方案
转载请注明原文链接:投票系统 有人刷票 求大神帮忙解决解决方案
