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

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

方法一:

<?php
session_start();
$k=$_GET['k'];
$t=$_GET['t'];
$allowTime = ;//防刷新时间
$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 = "";
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(,);
?>
<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">

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

php防止网站被刷新的更多相关文章

  1. ASP.NET开发中修改代码而不重启网站

    我们在做网站开发的时候,通常是写好了一个功能就要进行测试,Visual Studio上点“Start Debugging”(快捷键是F5),这是调试模式,也有直接运行模式,“Start Without ...

  2. 由 12306.cn 谈谈高并发+高负载网站性能技术

    12306.cn 网站挂了,被全国人民骂了.我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题.因为仓促,而且完全基于本人有限的经验和了解, 所以,如果有什么问题还请大家一起讨论 ...

  3. 快速学习html、css的经典笔记

    HTML语言剖析 Html简介-目录 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag ...

  4. 关于一些学习html和css的笔记

    一.Html简介 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag)使文件 达到预期的 ...

  5. Web开发人员常犯的10个错误

    说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框 ...

  6. php大力力 [035节] 先记录一些链接

    [IT名人堂]专访百分点研发总监:不止于平台,大数据操作系统重磅来袭! [2015-8-11 14:17:04] [IT名人堂]专访1号店技术总监:大型电商网站的IT架构 [2015-8-25 15: ...

  7. Windows Git+TortoiseGit简易使用教程

    转载自 http://blog.csdn.net/jarelzhou/article/details/8256139 官方教程:http://tortoisegit.org/docs/tortoise ...

  8. apache源码编译安装详解

    查看是否安装 rpm -qa httpd        如果已安装,则卸载:rpm -e 卸载  --nodeps 不考虑意外        下载 wget http://mirrors.sohu.c ...

  9. localstroge与cookie的区别

    HTML5本地存储是一种让网页可以把键值对存储在用户浏览器客户端的方法.像Cookie一样,这些数据不会因为你打开新网站,刷新页面,乃至关闭你的浏览器而消失. 而与Cookie不同的时,这些数据不会每 ...

随机推荐

  1. win7局域网内共享文件夹及安全设置

    右键想要共享的文件夹,选择属性. 在文件夹属性对话框中选择共享标签,如图: 点击共享按钮,弹出文件共享对话框. 添加 Everyone ,并根据实际需要修改权限.权限可以是读取 或 读取/写入. 到此 ...

  2. zabbix 2.0 安装

    2.0环境 采用Centos6.3_64位操作系统 Zabbix安装 Zabbix 2.0 for RHEL5: # rpm -ivh http://repo.zabbix.com/zabbix/2. ...

  3. Oracle ADF VO排序及VO的查询模式

    常规应用中,当需要使用Table向终端用户展示数据时,Table中数据的显示排序一致性极大程度的影响到了客户体验.通常希望诸如多次查询结果显示顺序相同.插入数据在原数据上方等的实现. ADF为开发人员 ...

  4. springMVC框架的作用

    springMVC:是一个表现层框架 作用:就是从请求中接收传入的参数 将处理后的结果数据返回给页面展示

  5. SqlMapConfig配置文件中的typeAliases标签用于自定义别名

    1.mybatis支持别名: 别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _flo ...

  6. Mac之如何查看已用端口

    一.苹果自带的网络分析工具查看方法:       OS X 10.9 下面 网络实用工具 从实用工具目录里消失了,可能苹果认为这个程序用的人太少就取消了吧.但是对于做互联网的人还是有点用的. 启动方法 ...

  7. PL/SQL Developer 窥探事务

    一次登录代表一个连接 一个SQL Window 代表一个会话(session),有唯一的SID 事务(transaction) 由 insert .update 或者 delete 开启 由 comm ...

  8. CString->char*.,char*->CString,char*->LPCTSTR

    CString->char* CString strSource;//宣告CString char* charSource; //宣告char* 法1: charSource = (char*) ...

  9. Linux的进程/线程间通信方式总结

    Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...

  10. polymer-quick tour of polymer

    注册一个元素 <link rel="import" href="bower_components/polymer/polymer.html">//没 ...