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 相关文章推荐
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
php使用curl存储cookie的示例
Mar 31 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
PHP 进度条函数的简单实例
Sep 19 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时间戳使用实例代码
2008/06/07 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php之readdir函数用法实例
2014/11/13 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
Move.js入门
2017/02/08 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
Python networkx包的实现
2020/02/14 Python
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
英语老师推荐信
2014/02/26 职场文书
技能比武方案
2014/05/21 职场文书
常务副总经理任命书
2014/06/05 职场文书
责任书格式
2015/01/29 职场文书
总经理岗位职责
2015/02/04 职场文书
社区母亲节活动总结
2015/02/10 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书