zoukankan      html  css  js  c++  java
  • php防止网站被刷新

     在实际应用中,总会遇到某些页面被恶意用户刷新。当你的系统在某些模块没有使用缓存的时候,频繁的刷新会导致数据库吃紧。下面附上一段代码,防止频繁的刷新造成的死机情况。

    主要是从 session方面进行限制用户刷新

    方法一:

    <?php       
    session_start();       
    $k=$_GET['k'];       
    $t=$_GET['t'];       
    $allowTime = 1800;//防刷新时间       
    $ip = get_client_ip();       
    $allowT = md5($ip.$k.$t);       
    if(!isset($_SESSION[$allowT]))       
    {       
        $refresh = true;       
        $_SESSION[$allowT] = time();       
    }elseif(time() - $_SESSION[$allowT]>$allowTime){       
        $refresh = true;       
        $_SESSION[$allowT] = time();       
    }else{       
        $refresh = false;       
    }       
    ?>

    方法二:

    <?php 
    session_start(); 
    $allow_sep = "2"; 
    if (isset($_SESSION["post_sep"])) { 
      if (time() - $_SESSION["post_sep"] < $allow_sep) { 
          exit("请不要频繁刷新,休息2秒再刷新吧"); 
      } 
      else { 
          $_SESSION["post_sep"] = time(); 
      } 
    } 
    else { 
        $_SESSION["post_sep"] = time(); 
    } 
    ?>

    方法三:

    <?php 
    session_start(); 
    if(!emptyempty($_POST[name])){ 
       $data = $_POST[name]; 
       $tag = $_POST[tag]; 
       if($_SESSION[status]==$tag){ 
         echo $data; 
       }else{ 
         echo "不允许刷新!"; 
       } 
    } 
    $v = mt_rand(1,10000); 
    ?> 
    <form method="post" name="magic" action="f5.php">
        <input type="hidden" name="tag" value="<?=$v?>">
        <input type=text name="name">
        <input type="submit" value="submit"> 
    </form>
    <?php 
    echo $v; 
    $_SESSION[status] = $v; 
    ?>

    上面的代码是基于 session的验证,假设你在2秒内刷新了页面,那么他会执行exit() 函数输出一条消息,并退出当前脚本,于是就不会加载下面的内容,所以这段代码最好放在header中,先让代码执行,再加载其他的东西.

    如果把代码放在了footer里,结果整个页面都加载了只在最后一行输出了"请不要频繁刷新",放在header中,效果比较好,想看效果的话按两下F5 吧.

    当然最好的是采用的是新建一个php文件,然后在header调用.

    这样做的好处有两个:

    一个是修改功能代码方便,不用每次都打开header文件,也不怕误改了其他地方的代码,二是一旦出错,可以快速修改并检查,甚至可以直接删除文件,代码如下:

    <?php  
    include('includes/forbiddenCC.php');  
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    这里要注意下,必须调用在所有页面的最前面.

  • 相关阅读:
    ASP.NET MVC 扩展相关
    新.NET开发十大必备工具
    c#调用存储过程两种方法
    TweakUI取消pc喇叭声
    baidu mp3竟然还加密,太扯了
    NTLM在使用代理服务器的情况下,第三次握手可能出错
    httpclient解析gzip网页
    eclipse不能自动编译工程的解决方法
    bat设置环境变量
    java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/7601825.html
Copyright © 2011-2022 走看看