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

2015-01-24信息快讯网

这篇文章主要介绍了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将图片保存入mysql数据库失败的解决方法
php下pdo的mysql事务处理用法实例
php5.3不能连接mssql数据库的解决方法
解决phpcms更换javascript的幻灯片代码调用图片问题
php+jQuery.uploadify实现文件上传教程
PHP使用memcache缓存技术提高响应速度的方法
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
PHP扩展模块memcached长连接使用方法分析
php实现基于微信公众平台开发SDK(demo)扩展的方法
腾讯微博提示missing parameter errorcode 102 错误的解决方法
php运行提示:Fatal error Allowed memory size内存不足的解决方法
PHP中Memcache操作类及用法实例
PHP内存缓存Memcached类实例
PHP模块memcached使用指南
php实现的太平洋时间和北京时间互转的自定义函数分享
php中Session的生成机制、回收机制和存储机制探究
php中多维数组按指定value排序的实现代码
PHP获取一个字符串中间一部分字符的方法
php数组索引的Key加引号和不加引号的区别
zend framework框架中url大小写问题解决方法
深入理解PHP中的global
PHP命名空间(namespace)的动态访问及使用技巧
PHP命名空间(namespace)的使用基础及示例
php中操作memcached缓存进行增删改查数据的实现代码
Zend Framework 2.0事件管理器(The EventManager)入门教程
linux下安装php的memcached客户端
linux下编译安装memcached服务
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
采用memcache在web集群中实现session的同步会话
PHP+Memcache实现wordpress访问总数统计(非插件)
©2014-2024 dbsqp.com