当前位置: 首页 > 编程笔记 >

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

夏何平
2023-03-14
本文向大家介绍php中用memcached实现页面防刷新功能,包括了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采用session实现防止页面重复刷新,包括了php采用session实现防止页面重复刷新的使用技巧和注意事项,需要的朋友参考一下 如何防止页面重复刷新,在php环境下可以利用session来轻松实现。 b.php的代码 代码很简单,无非是把ip,以及通过POST方式提交到需要防刷新页面的数据经过md5加密后写入session中,再通过存储的session来判断刷新时间间隔从而

  • 本文向大家介绍ASP.NET使用ajax实现分页局部刷新页面功能,包括了ASP.NET使用ajax实现分页局部刷新页面功能的使用技巧和注意事项,需要的朋友参考一下   listview列表实现分页是非常容易的。ListView分页是非常简单的,加上一个DataPager控件,把ListView的ID赋予就可以了。最开始我就是这么写的。(网上有人说这样是伪分页?)     然而这样写完,点击分页的效

  • 问题内容: 如何定期使用PHP刷新页面?如果我用PHP无法做到这一点,那么最好的推荐方案是什么? 问题答案: 您可以使用PHP来做到这一点: 它会刷新您的当前页面,如果需要将其重定向到另一个页面,请使用以下命令:

  • 本文向大家介绍php+ajax实现无刷新分页,包括了php+ajax实现无刷新分页的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php+ajax实现无刷新分页实现方法。分享给大家供大家参考。具体如下:     limit  偏移量,长度;     limit  0,7;   第一页     limit  7,7;   第二页     limit  14,7;  第三页 每页信息条数:7

  • 本文向大家介绍jQuery的ajax中使用FormData实现页面无刷新上传功能,包括了jQuery的ajax中使用FormData实现页面无刷新上传功能的使用技巧和注意事项,需要的朋友参考一下 接着上一篇ajax系列之用jQuery的ajax方法向服务器发出get和post请求写,这篇主要写如何利用ajax和FormData实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方法和

  • 本文向大家介绍php+jQuery+Ajax简单实现页面异步刷新,包括了php+jQuery+Ajax简单实现页面异步刷新的使用技巧和注意事项,需要的朋友参考一下 页面显示如下:  JQueryAjax.html中的代码如下(用的较为简单的$.post)  ajax.php 在非json格式下,后台只能返回字符串,如果想后台返回数组,可以采用json格式  例如将JQueryAjax中的代码修改为

  • 本文向大家介绍AngularJS实现页面定时刷新,包括了AngularJS实现页面定时刷新的使用技巧和注意事项,需要的朋友参考一下 有时我们在前端可能会有这样的需求: 1、每隔一段时间刷新一下页面中的数据 2、根据需要可以暂停和启用刷新 接下来我们就来看下AngularJS的实现方法: 首先我们了解到AngularJS中$interval可以用来处理间歇性处理一些事情,那么我们的间歇性刷新就使用i

  • 问题内容: 我有一个页面,在该页面上我通过代码运行SQL查询,以便每当查看该页面时,查询 就像计数页面视图一样* 运行 * 问题是刷新页面,运行查询和将PAGE REFRESH计为我要避免的PAGE VIEW。 问题: 如何避免呢? 我正在寻找一个简单的解决方案,以便我可以检查 问题答案: 我已经解决了问题…没有会话且没有Cookie的HURRAHHH 该解决方案是PHP:AJAX:JavaScr