php中防止恶意刷新页面的代码小结

 更新时间:2012年10月31日 21:40:18   作者:   我要评论

恶意刷新就是不停的去刷新提交页面,导致大量无效数据了,下面我们来总结一下php 防止恶意刷新页面方法总结

防止恶意刷页面的原理是

要求在页面间传递一个验证字符串,
在生成页面的时候 随机产生一个字符串,
做为一个必须参数在所有连接中传递。同时将这个字符串保存在session中。

点连接或者表单进入页面后,判断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;
}
?>


ie6提交两次我也碰到过,大致是用图片代替submit时,图片上有个submit(),这样会提交两次,如果只是submit钮我没碰到过提交两次的情况。

现在整理一下:
方法基本上前面几位说得差不多
接收的页即2.php分为两部分,一部分处理提交过来的变量,一部分显示页面
处理变量完毕用header( "location: ".$_SERVER[ 'PHP_SELF '])跳转到自身页
本部分要做判断,如果没有post的变量就跳过。当然也可以跳到别的页面。
跳到别的页面返回时会有问题,建议做在一个php文件里。
如果上页穿过来得变量不符合要求可以强制返回

复制代码 代码如下:

<script>
history.go(-1);
</script>


只说了一下大体思路,也许高手们不会遇到此类问题,可是并不是每个人都是高手。
2.php的流程

复制代码 代码如下:

if(isset($_POST))
{ 接收变量
if(变量不符合要求)
<script> history.go(-1); </script>
else
操作数据
...
if(操作完成)
header( "location: ".$_SERVER[ 'PHP_SELF ']);
}
<script language= "JavaScript ">
<!--
 javascript:window.history.forward(1);
//-->
</script>

相关文章

  • PHP获取文件扩展名的4种方法

    PHP获取文件扩展名的4种方法

    这篇文章主要介绍了PHP获取文件扩展名的4种方法,涉及PHP针对字符串与数组及上传文件属性等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)

    php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹

    这篇文章主要介绍了php文件操作方法,包括删除指定文件、获取文件夹下的文件名及读取文件夹下图片名,涉及php针对文件与目录的常用操作技巧,需要的朋友可以参考下
    2016-05-05
  • 攻克CakePHP系列二 表单数据显示

    攻克CakePHP系列二 表单数据显示

    CakePHP表单数据显示的方法步骤
    2008-10-10
  • PHP XML操作类DOMDocument

    PHP XML操作类DOMDocument

    不得不自已写一个.XML 的操作一直没有用过.下面是自己搜集的XML操作类
    2009-12-12
  • PHP解析目录路径的3个函数总结

    PHP解析目录路径的3个函数总结

    这篇文章主要介绍了PHP解析目录路径的3个函数总结,本文总结了basename、dirname、pathinfo3个函数,它们分别处理路径的不同部分,需要的朋友可以参考下
    2014-11-11
  • php数组函数序列之array_sum() - 计算数组元素值之和

    php数组函数序列之array_sum() - 计算数组元素值之和

    array_sum() 函数返回数组中所有值的总和。如果所有值都是整数,则返回一个整数值。如果其中有一个或多个值是浮点数,则返回浮点数
    2011-10-10
  • php json相关函数用法示例

    php json相关函数用法示例

    这篇文章主要介绍了php json相关函数用法,列举了json_encode、json_decode及json_last_error的功能,并实例分析了json_encode与json_decode函数的具体使用技巧,需要的朋友可以参考下
    2017-03-03
  • php中simplexml_load_file函数用法实例

    php中simplexml_load_file函数用法实例

    这篇文章主要介绍了php中simplexml_load_file函数用法,以实例形式详细的讲述了simplexml_load_file函数读取XML文件的具体方法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • php中JSON的使用方法

    php中JSON的使用方法

    json常用来作为数据交换的一种格式,和xml相比体积更小。缺点就是层级关系不明显不大容易被理解。php中生成json要借助array和json_encode,json_decode一起使用。越复杂的json嵌套的数组越多,下面我们来仔细探讨下这个问题。
    2015-04-04
  • 在Linux系统下一键重新安装WordPress的脚本示例

    在Linux系统下一键重新安装WordPress的脚本示例

    这篇文章主要介绍了在Linux系统下一键重新安装WordPress的脚本示例,尤其适用于VPS服务器上进行操作,需要的朋友可以参考下
    2015-06-06

最新评论