>백엔드 개발 >PHP 튜토리얼 >memcached를 사용하여 php_php 스킬에서 페이지 새로 고침 방지 기능 구현

memcached를 사용하여 php_php 스킬에서 페이지 새로 고침 방지 기능 구현

WBOY
WBOY원래의
2016-05-16 20:38:211029검색

사용자가 페이지를 자주 새로 고치는 것을 방지하기 위해 새로운 요구 사항이 추가되었습니다. 구체적인 요구 사항은 사용자가 지정된 페이지를 1분 내에 100회 이상 요청할 경우 해당 요청이 바로 거부된다는 것입니다. 주의 깊게 분석한 결과 이 ​​기능이 memcache를 사용하는 데 가장 편리하다는 것을 알았습니다.

1. 사용자 IP와 요청한 파일 이름을 KEY 값으로 사용합니다.

2. 사용자 방문 수를 자동으로 기록하려면 memcached 메서드 increment()를 사용하세요. 이는 원자 단위로 증가하며 정확합니다.

3. set() 설정 시 만료 시간을 60초로 지정하여 1분 동안의 방문 횟수를 계산합니다.

그래서 함수를 작성하고 프로젝트 초기화 파일에 호출했습니다. 함수 내용은 다음과 같습니다.

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);

 }

 }

}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.