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


Posted in PHP onAugust 19, 2014

有个新需求要加上去,防止用户频繁刷新页面。具体需求是当用户在一分钟之后内请求指定的页面超过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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
header跳转和include包含问题详解
Sep 08 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP5.3新特性小结
Feb 14 PHP
php简单复制文件的方法
May 09 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
Aug 23 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 #PHP
php中多维数组按指定value排序的实现代码
Aug 19 #PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 #PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 #PHP
zend framework框架中url大小写问题解决方法
Aug 19 #PHP
深入理解PHP中的global
Aug 19 #PHP
PHP Session机制简介及用法
Aug 19 #PHP
You might like
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
vue结合element-ui使用示例
2019/01/24 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python实现简单日期工具类
2019/04/24 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
美国在线家装零售商:Build.com
2016/09/02 全球购物
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
保安公司服务承诺书
2014/05/28 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
大学生实习介绍信
2015/05/05 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书