본문 바로가기

php

$_SERVER["HTTP_REFERER"] 란?

안녕하세요 질문자님 ^^
PHP 및 프로그래밍 디렉토리 담당 에디터 사랑이에요

 

 $_SERVER["HTTP_REFERER"] 은 위 답변자님 말씀처럼

 현제 페이지로 오기전의 페이지주소값이 담겨있는 환경변수가 맞습니다..

 

 그러나 무조건적으로 따라오는것은 아닙니다...

 

 같은 도메인안에서 진행을 하더라도 <A>링크 혹은 <FORM> 테그의 액션외에는 onclick 과 같은

 이벤트성 전달방식으로는 리페러가 전달되지 않습니다..

 

 즉 <A>링크를 통해서 불려지거나 <FORM>의 액션을 통해서 불려지는것 외엔 리페러가 전달되지 않습니다.

 

 이 환경변수는 같은 도메인안에서 정상적으로 이 페이지로 이동해 왔는지를 체크할때 사용하면

 편리한 변수입니다..

 

 말이 좀 어려웠던거 같아서 쉽게 예제로 보여드릴께요

 

 === 리페러가 전달되는경우 =======

a.php 내용

 <a href='b.php'>테스트1</a>

 

=== 리페러가 전달되지 않는경우 ===

 <a href='#' onclick="javascript:document.location='b.php';">테스트2</a>

 

b.php 내용

 

<?

  if($_SERVER["HTTP_REFERER"]) {

    echo "정상적으로 리페러가 전달되었습니다...<BR>리페러값: " .$_SERVER["HTTP_REFERER"];

   exit;

  }

  else {

     echo "비정상적인 접근입니다... 전달되지 않았습니다..";

}

?>

 

이해 하시겠나요^^;

 

이와 같이 작동하는 이유는 사용자가 주소창에 직접 입력하고 오는것을 방지하기 위함인데요..

onclick 과 같은 이벤트성 명령어로는 리페러가 전달되지 않는 이유는 아마도 조작의 요지가 있기때문이

아닐가 합니다...^^


'php' 카테고리의 다른 글

Apache Module mod_rewrite 사용하기  (0) 2009.12.14
Cookie 와 Session  (0) 2009.12.08
substr_count 함수  (0) 2009.12.08
urlencode, urldecode  (0) 2009.12.04
php 날짜 함수 관련  (0) 2009.12.04