php中用memcached實(shí)現(xiàn)頁(yè)面防刷新功能
有個(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); } } }
- PHP實(shí)現(xiàn)將多個(gè)文件壓縮成zip格式并下載到本地的方法示例
- 基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問(wèn)題
- PHP獲取真實(shí)客戶(hù)端的真實(shí)IP
- 幾行代碼輕松實(shí)現(xiàn)PHP文件打包下載zip
- php實(shí)現(xiàn)替換手機(jī)號(hào)中間數(shù)字為*號(hào)及隱藏IP最后幾位的方法
- THinkPHP獲取客戶(hù)端IP與IP地址查詢(xún)的方法
- 基于PHP給大家講解防刷票的一些技巧
- PHP投票系統(tǒng)防刷票判斷流程分析
- php獲取用戶(hù)真實(shí)IP和防刷機(jī)制的實(shí)例代碼
相關(guān)文章
使用Curl進(jìn)行抓取遠(yuǎn)程內(nèi)容時(shí)url中文編碼問(wèn)題示例探討
在編碼時(shí)應(yīng)該只對(duì)部分URL編碼,否則URL中的冒號(hào)和反斜杠也會(huì)被轉(zhuǎn)義,下面有兩個(gè)不錯(cuò)的示例,有類(lèi)似情況的朋友可以感受下2013-10-10php實(shí)現(xiàn)微信模擬登陸、獲取用戶(hù)列表及群發(fā)消息功能示例
這篇文章主要介紹了php實(shí)現(xiàn)微信模擬登陸、獲取用戶(hù)列表及群發(fā)消息功能,結(jié)合具體實(shí)例形式分析了php微信接口的相關(guān)調(diào)用與操作技巧,需要的朋友可以參考下2017-06-06php實(shí)現(xiàn)漢字驗(yàn)證碼和算式驗(yàn)證碼的方法
這篇文章主要介紹了php實(shí)現(xiàn)漢字驗(yàn)證碼和算式驗(yàn)證碼的方法,實(shí)例分析了算式驗(yàn)證碼及中文漢字驗(yàn)證碼的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03PHP Swoole異步Redis客戶(hù)端實(shí)現(xiàn)方法示例
這篇文章主要介紹了PHP Swoole異步Redis客戶(hù)端實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了php操作Swoole異步Redis客戶(hù)端相關(guān)擴(kuò)展安裝與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-10-10PHP中echo,print_r與var_dump區(qū)別分析
這篇文章主要介紹了PHP中echo,print_r與var_dump區(qū)別分析,主要講述了三者的類(lèi)型本質(zhì)及其操作數(shù)據(jù)類(lèi)型的用法區(qū)別,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-09-09php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié)
這篇文章主要介紹了php中字符集轉(zhuǎn)換iconv函數(shù)使用總結(jié),本文同時(shí)介紹了mb_convert_encoding函數(shù),需要的朋友可以參考下2014-10-10PHP利用REFERER根居訪(fǎng)問(wèn)來(lái)地址進(jìn)行頁(yè)面跳轉(zhuǎn)
這篇文章主要是根據(jù)referfer判斷來(lái)源,然后跳轉(zhuǎn)到制定頁(yè)面,以防出現(xiàn)了無(wú)法訪(fǎng)問(wèn)頁(yè)面,用戶(hù)體驗(yàn)不好2013-09-09深入解讀php中關(guān)于抽象(abstract)類(lèi)和抽象方法的問(wèn)題分析
這篇文章主要介紹了php中關(guān)于抽象(abstract)類(lèi)和抽象方法的問(wèn)題分析,有需要的朋友可以參考一下2014-01-01php中關(guān)于token驗(yàn)證的相關(guān)問(wèn)題詳解
這篇文章主要介紹了php中關(guān)于token驗(yàn)證的相關(guān)問(wèn)題詳解的相關(guān)資料,需要的朋友可以參考下2023-05-05