안녕하세요 질문자님 ^^
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 |