PHP获取IP 文件写入与行修改
程序员文章站
2022-04-24 20:47:57
...
·做了一个投票放在微信订阅号上,通过cookie来实现禁止刷票,这个真是只能防君子不能防小人,出现了恶意刷票;所以最后改为用IP来限制; 因为是一个短暂的活动,就把IP的记录写入了文件,没有再写入表中; 我的验证规则是:同个ID 对应的同一个IP3分钟内只
·做了一个投票放在微信订阅号上,通过cookie来实现禁止刷票,这个真是只能防君子不能防小人,出现了恶意刷票;所以最后改为用IP来限制;
因为是一个短暂的活动,就把IP的记录写入了文件,没有再写入表中;
我的验证规则是:同个ID 对应的同一个IP3分钟内只能投一票;
代码写的不是很好,急着上交 ,先看着吧 ,以后再完善
function GetIP() { if ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if ($_SERVER["REMOTE_ADDR"]) $ip = $_SERVER["REMOTE_ADDR"]; else if (getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "Unknown"; return $ip; } $iptxt = fopen("./data/lovewall.txt", "a+"); $ip = GetIP(); $ifok = $i = 1; while (!feof($iptxt)) { $now = fgets($iptxt);//获取遍历行的内容 if(!empty($now)){ $now_arr = explode('#',$now); if($now_arr[1]==$ip&&$now_arr[2]==$_G['gp_show']."\n"){ $ifok = 0; if($now_arr['0']+180>time()){ $return = array('status'=>0,'err_msg'=>'一封情书三分钟内只限赠送一次哦'); echo json_encode($return); exit; }else{ $all = file_get_contents('./data/lovewall.txt'); $new = time().'#'.$ip.'#'.$_G['gp_show']."\n"; $update_str = str_replace($now,$new, $all);//替换 间接实现修改 file_put_contents('./data/lovewall.txt', $update_str); } } } $i++; } if($ifok){ $now = time()."#".$ip."#".$_G['gp_show']; fwrite($iptxt,$now."\n"); } fclose($iptxt);
上一篇: yii-网页(php)后台时间触发思路