php中用memcached实现页面防刷新功能

 更新时间:2014年08月19日 09:49:55   作者:蓝色夏威夷  
这篇文章主要介绍了php中用memcached实现页面防刷新功能,这是一个比较安全、稳定的防刷新方案,需要的朋友可以参考下

有个新需求要加上去,防止用户频繁刷新页面。具体需求是当用户在一分钟之后内请求指定的页面超过100次,就直接拒绝请求。仔细分析后发现这个功能用memcache来做最方便:

1、以用户IP和被请求的文件名作为KEY值。

2、以memcached的方法increment()来自增记录用户访问次数,increment()是原子性增加,准确。

3、设置set()时指定过期时间为60s,这样就统计一分钟的访问次数。

于是写了个函数放在项目的初始化文件中调用,函数内容如下:

function requestCount(){ 

 $patharr = pathinfo($_SERVER['PHP_SELF']);

 $filename = explode('?',$patharr['basename']);//获取当前文件名

 if( in_array($filename['0'],array('index.php','login.php','password.php')) ){

 global $memcache;

 $clientip = get_client_ip();

 //使用长整型IP和文件名生成KEY

 $ipkey = 'C'.sprintf("%u", ip2long( $clientip )). $filename['0'] ;

 if( $visitCount = $memcache->get($ipkey) ){  

      if($visitCount == 100){

        die('<h1>Please don\'t refresh your page!</h1>');

      }else{

        $memcache->increment($ipkey);

      }  

 }else{

    $memcache->set($ipkey,1,0,60);

 }

 }

}

相关文章

  • PHP 简单日历实现代码

    PHP 简单日历实现代码

    写文件系统的时候看中了个国外的HTML模板...上面有个日历,就想用PHP写出来...
    2009-10-10
  • php 解压rar文件及zip文件的方法

    php 解压rar文件及zip文件的方法

    rar文件解压php没有直接支持的,不过可以通过下载将非线程安全的dll然后扔到php的ext目录下,之后按照下面的步骤操作即可
    2014-05-05
  • php和asp语法上的区别总结

    php和asp语法上的区别总结

    在本篇文章中小编给大家分享了关于php和asp语法上的区别以及相关代码知识点,需要的朋友们学习下。
    2019-05-05
  • 分割GBK中文遭遇乱码的解决方法

    分割GBK中文遭遇乱码的解决方法

    以下是对分割GBK中文遭遇乱码的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • PHP中去除换行解决办法小结(PHP_EOL)

    PHP中去除换行解决办法小结(PHP_EOL)

    PHP中去除换行解决办法小结,第一种写法和第二种写法基本相同, 第三种写法是用的正则表达式,需要的朋友可以参考下。
    2011-11-11
  • php函数之strtr和str_replace的用法详解以及效率分析

    php函数之strtr和str_replace的用法详解以及效率分析

    PHP中主要用strtr()和str_repalce()这两个函数替换字符串和数组,但你们都知道他们这两个函数的区别和用法吗?有不少文章在说使用strtr函数比str_replace快4倍,那为什么很多时候都在用str_replace,到底应该使用哪个函数呢
    2022-11-11
  • 让Json更懂中文(JSON_UNESCAPED_UNICODE)

    让Json更懂中文(JSON_UNESCAPED_UNICODE)

    我们知道, 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 还会在一定程度上增加传输的数据量.
    2011-10-10
  • 深入解析PHP的Laravel框架中的event事件操作

    深入解析PHP的Laravel框架中的event事件操作

    这篇文章主要介绍了PHP的Laravel框架中的event事件操作,其中重点讲解了Laravel 5.1之中新加入了事件广播的功能,需要的朋友可以参考下
    2016-03-03
  • php实现压缩多个CSS与JS文件的方法

    php实现压缩多个CSS与JS文件的方法

    这篇文章主要介绍了php实现压缩多个CSS与JS文件的方法,通过两个完整实例分别实现了针对css文件与js文件的压缩,需要的朋友可以参考下
    2014-11-11
  • php多用户读写文件冲突的解决办法

    php多用户读写文件冲突的解决办法

    解决多调用同时写一个文件时我们会使用flock来解决些问题,这样同一时间只有一个用户可以写文件,同时其它用户进行等待队列了,下面我来介绍一下flock解决多用户读写文件冲空问题
    2013-11-11

最新评论