너무 빠른 새로고침 현상은
방문자의 고의적인 행위로 발생하기도 하고
프로그램상의 페이지 호출이 무한루프를 돌아버려서 발생하기도 합니다.
그럴 때 다른 대책도 있겠지만(?) 쿠키를 이용해서 간단하게 막아봤습니다.
뭐 실용적이냐 아니냐를 떠나서 제가 떠듬하게 프로그램한 나머지
페이지 호출이 반복되는 에러가 가끔 발생하기도 하거든요.
그때를 위해서 개발싯점에 유용할까 싶어서 include해서 사용합니다.
그리고 오픈 싯점에도 그냥 냅둡니다.
사용자들 중에서 고의적으로 빠르게 페이지 고침을 하면..... 데끼~ 하고~ 나타남
이 용도로 단점이라면 고의적으로 쿠키를 막아놓고 지랄하면 대책 없음;;;
---------=---------------
<?
#기능: 너무 빠른 접속 방지
#목적: 너무 빠른 접속은 무한 반복 등의 에러에 의할 수도 있고 해킹이나 고의적일 수도 있다.
#방법: 2초 내에 3번 이상의 호출이 있으면 alert()한 후 현재 페이지를 재출력한다
$time2sec= time() >> 1; # 2초 간격
if ($_COOKIE['time2sec']== $time2sec){ # 이전 시각과 같으면
if (3 <= $_COOKIE['call2sec']){
js_replace_alert($_SERVER['REQUEST_URI'],'너무 빠른 재접속이 발생하였습니다\\n\\n일부러 그런 건 아니겠지요?\\n\\n서두르지 말고 차분하게 사용해 주세요');
exit;
}
setcookie('call2sec',$_COOKIE['call2sec']+1); # 카운트 증가
}else{
setcookie('call2sec',1); # 카운트= 1
setcookie('time2sec',$time2sec);
}
#기능: javascript 코드 출력 (code 끝에는 반드시 ; 문자 필요)
# return_mode를 0아닌 값으로 주면 echo()하지 않고 문자열로 리턴한다
function js_code($code, $return_mode=0){
$str= "<SCRIPT language=JavaScript>
<!--
$code
//-->
</SCRIPT>\n";
if ($return_mode) return $str;
echo $str;
}
#기능: 페이지 이동
#인수 msg에 문자열을 주면 alert창을 열어 확인하게 한 다음에 페이지 이동
function js_replace_alert($url, $msg='') {
if ($msg) $code= "alert('$msg');";
js_code($code. "self.top.location.replace(\"$url\");");
}
?>
테스트<BR>
이 페이지를 테스트 하려면 F5키를 빠르게 누르시거나 새로 고침 버턴을 빠르게 눌러 보세요.
<PRE>
<?
print_r($_COOKIE);
?>
</PRE>
Apache mod_dosevasive 를 사용
방문자의 고의적인 행위로 발생하기도 하고
프로그램상의 페이지 호출이 무한루프를 돌아버려서 발생하기도 합니다.
그럴 때 다른 대책도 있겠지만(?) 쿠키를 이용해서 간단하게 막아봤습니다.
뭐 실용적이냐 아니냐를 떠나서 제가 떠듬하게 프로그램한 나머지
페이지 호출이 반복되는 에러가 가끔 발생하기도 하거든요.
그때를 위해서 개발싯점에 유용할까 싶어서 include해서 사용합니다.
그리고 오픈 싯점에도 그냥 냅둡니다.
사용자들 중에서 고의적으로 빠르게 페이지 고침을 하면..... 데끼~ 하고~ 나타남
이 용도로 단점이라면 고의적으로 쿠키를 막아놓고 지랄하면 대책 없음;;;
---------=---------------
<?
#기능: 너무 빠른 접속 방지
#목적: 너무 빠른 접속은 무한 반복 등의 에러에 의할 수도 있고 해킹이나 고의적일 수도 있다.
#방법: 2초 내에 3번 이상의 호출이 있으면 alert()한 후 현재 페이지를 재출력한다
$time2sec= time() >> 1; # 2초 간격
if ($_COOKIE['time2sec']== $time2sec){ # 이전 시각과 같으면
if (3 <= $_COOKIE['call2sec']){
js_replace_alert($_SERVER['REQUEST_URI'],'너무 빠른 재접속이 발생하였습니다\\n\\n일부러 그런 건 아니겠지요?\\n\\n서두르지 말고 차분하게 사용해 주세요');
exit;
}
setcookie('call2sec',$_COOKIE['call2sec']+1); # 카운트 증가
}else{
setcookie('call2sec',1); # 카운트= 1
setcookie('time2sec',$time2sec);
}
#기능: javascript 코드 출력 (code 끝에는 반드시 ; 문자 필요)
# return_mode를 0아닌 값으로 주면 echo()하지 않고 문자열로 리턴한다
function js_code($code, $return_mode=0){
$str= "<SCRIPT language=JavaScript>
<!--
$code
//-->
</SCRIPT>\n";
if ($return_mode) return $str;
echo $str;
}
#기능: 페이지 이동
#인수 msg에 문자열을 주면 alert창을 열어 확인하게 한 다음에 페이지 이동
function js_replace_alert($url, $msg='') {
if ($msg) $code= "alert('$msg');";
js_code($code. "self.top.location.replace(\"$url\");");
}
?>
테스트<BR>
이 페이지를 테스트 하려면 F5키를 빠르게 누르시거나 새로 고침 버턴을 빠르게 눌러 보세요.
<PRE>
<?
print_r($_COOKIE);
?>
</PRE>
Apache mod_dosevasive 를 사용
반응형
'인터넷정보' 카테고리의 다른 글
U-2, 너밖에 없다 (0) | 2007.10.18 |
---|---|
U-2, 너밖에 없다 (0) | 2007.10.18 |
주소줄(REQUEST_URI)의 인수를 새로 설정하기 (0) | 2007.10.17 |
주소줄(REQUEST_URI)의 인수를 새로 설정하기 (0) | 2007.10.17 |
새로고침이 너무 빨리 발생할 때 대책 한가지? (0) | 2007.10.17 |
국내포털의 robots.txt 패러독스 (0) | 2007.10.17 |
국내포털의 robots.txt 패러독스 (0) | 2007.10.17 |
원 클릭으로 클립보드 복사하기 2 - textarea, div, span.... (0) | 2007.10.17 |
원 클릭으로 클립보드 복사하기 2 - textarea, div, span.... (0) | 2007.10.17 |
마우스 더블클릭으로 페이지 맨 위로 / 맨 아래로 이동하기 (0) | 2007.10.17 |