gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php中用memcached实现页面防刷新功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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中用memcached实现页面防刷新功能的文章就讲到这里了,如果你想了解更多关于php中用memcached实现页面防刷新功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com