본문으로 바로가기

PHP에서 전에 현재 페이지로 오기 전에 페이지의 주소값을 가져올 때 $_SERVER['HTTP_REFERER']을 사용한다.

(전에 $_SERVER관련 글을 포스팅한 적도 있다 : 확인)


하지만, 웹페이지 프로그래밍할 때 페이지를 이동하는 방법에는 여러가지가 있고 $_SERVER['HTTP_REFERER']를 사용했지만 전에 페이지의 주소값을 가져오지 못하는 경우가 있다.


1) 주소창에 직접 주소를 입력해서 방문하는 경우 : HTTP_REFERER의 값 가져오지 못한다

2) '즐겨찾기'를 이용해서 방문(IE에서 해당)하는 경우 :  HTTP_REFERER 값 가져오지 못한다

3) 링크를 통해서 방문.(a태그) : HTTP_REFERER 가져온다

4) 자바스크립트 location.href를 통해 방문 : 브라우저에 따라 HTTP_REFERER 값 가져오거나, 가져오지 못한다


위에서 말한바와 같이 자바스크립트 location.href를 통해 방문한 경우

IE는 값을 가져오지 못하지만

Chrome, Firefox경우에는 가져올수 있다.


주소창에 직접 주소 입력한 것과 즐겨찾기를 이용해 방문한 경우는 어쩔수 없다 쳐도,

자바스크립트 location.href를 사용하는 경우가 꾀 있는데 a 태그로 처리할 수 없지만 전에 페이지의 주소값을 가져오고 싶은 경우가 생긴다.


이럴 경우 해결방법!


header나, meta 태그를 사용하여 페이지를 이동한다.

참고 사이트 : http://www.somacon.com/p145.php


- header

// Permanent redirection
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.somacon.com/");
exit();


- meta

<meta http-equiv="refresh" content="0;url=http://www.somacon.com/">


나같은 경우는 그냥 movepage함수를 만들어

세개가 모두 실행되도록 하여서 어느 경우더라도 REFERER 값을 받을 수 있도록 수정하였다.