程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php中用memcached實現頁面防刷新功能

php中用memcached實現頁面防刷新功能

編輯:PHP綜合

有個新需求要加上去,防止用戶頻繁刷新頁面。具體需求是當用戶在一分鐘之後內請求指定的頁面超過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);

 }

 }

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved