Rumah >pembangunan bahagian belakang >tutorial php >投票系统 有人刷票 求大神帮忙解决
投票系统 PHP session
<?phperror_reporting(0);session_start();require_once 'config.php';require_once COMMON_PATH.'Common.php';$common = new Common();date_default_timezone_set ('Asia/Shanghai');$weil = strtotime("2013-08-07 23:59:59"); $now = time();if($weil-$now < 0){//投票时间过期 echo 0; exit;}$ip = $common->getClientIp();$id = $_POST['id'];$ipid=$ip.$id;if($_SESSION['ipid']==$ipid||$_COOKIE['ipid']==$ipid){//$array = array('48','49','67','47'); //if ( in_array($id,$array) ) { echo 2; } else { $tbName = TB_NAME; $limit_time = 3600; $arr = $common->getItems('id,addTime','20130618_ztao_jtsjip','id','desc',"where tpId='$id' and ip='$ip'"); $row = false; if (count($arr) > 0) { $row = $arr[0]; } if(!$row){ $common->insertItems('20130618_ztao_jtsjip','tpId,ip,addTime',"'$id','$ip','$now'"); $res = $common->updateItems("$tbName",'voteNum=voteNum+1',"$id"); $_SESSION['ipid']=$ipid; setcookie("ipid","$ipid",time()+$limit_time); if($res == true){ echo 1;//投票成功 }else{ echo 3; } }else if(($now-$row['addTime'])>$limit_time){ $common->insertItems('20130618_ztao_jtsjip','tpId,ip,addTime',"'$id','$ip','$now'"); $res = $common->updateItems("$tbName",'voteNum=voteNum+1',"$id"); $_SESSION['ipid']=$ipid; setcookie("ipid","$ipid",time()+$limit_time); if($res == true){ echo 1; }else{ echo 3; } }else if(($now-$row['addTime'])<$limit_time){ echo 2; }else{ echo 3; }}?>
$arr = $common->getItems('id,addTime','20130618_ztao_jtsjip','id','desc',"where tpId='$id' and ip='$ip'");
返回了什么?print_r($arr) 打印出来看看
那你判断下,如果是注册的用户,才可以投票的。并且投票完成,加一个修改时间,下次投票的话,判断下修改时间即可。
Array ( [0] => Array ( [id] => 59 [addTime] => 1371531470 ) [1] => Array ( [id] => 45 [addTime] => 1371531349 ) [2] => Array ( [id] => 43 [addTime] => 1371531316 ) [3] => Array ( [id] => 41 [addTime] => 1371531233 ) )
我的IP print_r($arr)得到的结果如上
但是刷票机器的在数据库的记录是这样的如图 同一个id 和Ip在一个小时之内能不断插入数据库,我的判断失效了,求教
这种投票肯定是不能要注册才能投票的,验证码都影响投票的用户体验,现在关键是刷票机器为什么在一个小时之内能不断的插入,这点很不解 @xuzuning
if($_SESSION['ipid']==$ipid||$_COOKIE['ipid']==$ipid)
if($_SESSION['ipid']==$ipid||$_COOKIE['ipid']==$ipid)
还有数据库中时间的记录随着Id的增加反而有时候还减小了,这是什么情况,求教大神解决
session和cookie的话太容易伪造了或者清空了,而且验证码呢?
就算你把session、cookie、ip等问题全部解决了,没有验证码的话很容易被刷的,各种方法都能刷的了你