亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php中用memcached實(shí)現(xiàn)頁(yè)面防刷新功能

 更新時(shí)間:2014年08月19日 09:49:55   作者:藍(lán)色夏威夷  
這篇文章主要介紹了php中用memcached實(shí)現(xiàn)頁(yè)面防刷新功能,這是一個(gè)比較安全、穩(wěn)定的防刷新方案,需要的朋友可以參考下

有個(gè)新需求要加上去,防止用戶(hù)頻繁刷新頁(yè)面。具體需求是當(dāng)用戶(hù)在一分鐘之后內(nèi)請(qǐng)求指定的頁(yè)面超過(guò)100次,就直接拒絕請(qǐng)求。仔細(xì)分析后發(fā)現(xiàn)這個(gè)功能用memcache來(lái)做最方便:

1、以用戶(hù)IP和被請(qǐng)求的文件名作為KEY值。

2、以memcached的方法increment()來(lái)自增記錄用戶(hù)訪(fǎng)問(wèn)次數(shù),increment()是原子性增加,準(zhǔn)確。

3、設(shè)置set()時(shí)指定過(guò)期時(shí)間為60s,這樣就統(tǒng)計(jì)一分鐘的訪(fǎng)問(wèn)次數(shù)。

于是寫(xiě)了個(gè)函數(shù)放在項(xiàng)目的初始化文件中調(diào)用,函數(shù)內(nèi)容如下:

function requestCount(){ 

 $patharr = pathinfo($_SERVER['PHP_SELF']);

 $filename = explode('?',$patharr['basename']);//獲取當(dāng)前文件名

 if( in_array($filename['0'],array('index.php','login.php','password.php')) ){

 global $memcache;

 $clientip = get_client_ip();

 //使用長(zhǎng)整型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);

 }

 }

}

相關(guān)文章

最新評(píng)論