php防止访客F5频繁刷新页面
还是那句话,网络不是完美的,有时访客无聊无限刷新内容,有可能会造成服务器卡顿甚至卡死。于是,就有了防止F5刷新过于频繁的代码:
方法一:
<?php $allow_sep = "60"; if (isset($_SESSION["post_sep"])){ if (time() - $_SESSION["post_sep"] < $allow_sep) {exit("孩子你能消停一下么?刷新请60秒后继续!");} else{$_SESSION["post_sep"] = time();} }else{$_SESSION["post_sep"] = time();} ?>
方法二:推荐啦~
<?php //代理IP直接退出,看自己需要是否要这句,禁止代理访问 empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //防止快速刷新,在设置的时间内到达设置次数就跳转的设定的页面 $seconds = '3'; //时间段[秒] $refresh = '3'; //刷新次数 //设置监控变量 $cur_time = time(); if(isset($_SESSION['last_time'])){ $_SESSION['refresh_times'] += 1; }else{ $_SESSION['refresh_times'] = 1; $_SESSION['last_time'] = $cur_time; } //处理监控结果 if($cur_time - $_SESSION['last_time'] < $seconds){ if($_SESSION['refresh_times'] >= $refresh){ //跳转至攻击者服务器地址 header(sprintf('Location:%s', 'http://127.0.0.1')); exit('Access Denied'); } }else{ $_SESSION['refresh_times'] = 0; $_SESSION['last_time'] = $cur_time; } ?>
推荐将这段代码放到一个norefresh.php文件,然后在header.php调用。
默认设置为3秒内刷新达到3次就跳转到访客自己的本机页面,并输出拒绝访问的提示。
点赞0
支持一下