PHP로 원래 URL 리퍼러를 받으시겠습니까?


110

$_SERVER['HTTP_REFERER'];리퍼러 URL을 가져 오는 데 사용 하고 있습니다. 사용자가 다른 페이지를 클릭하고 리퍼러가 마지막 페이지로 변경 될 때까지 예상대로 작동합니다.

원래 참조 URL은 어떻게 저장합니까?

답변:


137

쿠키 (상황에 따라 허용되는 경우) 또는 세션 변수에 저장하십시오.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
아래 답변에서 @pcp의 조언을 참고하십시오!
d -_- b

6
또한 http_referer존재하지 않는지 확인해야 합니다. 존재하지 않는 경우 '정의되지 않은 색인'오류가 발생할 수 있습니다.
Justin

17

Johnathan이 제안한대로 쿠키 또는 세션에 저장하고 싶을 것입니다.

더 쉬운 방법은 세션 변수를 사용하는 것입니다.

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

페이지 상단에 배치하면 사이트 방문자가 지시 한 첫 번째 참조 자에 항상 액세스 할 수 있습니다.


4

현재 브라우징 세션 동안 만 지속되는 쿠키에 저장


4

쿠키를 참조 페이지의 저장소로 사용하는 것이 대부분의 경우 훨씬 낫습니다. 쿠키는 브라우저가 닫힐 때까지 리퍼러를 유지하므로 (브라우저 탭이 닫혀 있어도 유지됨) 사용자가 페이지를 열어 둔 경우를 대비하여 주말 전에, 며칠 후에 돌아 오면 세션이 만료 될 수 있지만 쿠키는 여전히 남아 있습니다.

페이지 시작 부분에 해당 코드를 넣으십시오 (쿠키는 에코 / 인쇄 전에 만 적절하게 설정되므로 html 출력 전에) :

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

그런 다음 나중에 액세스 할 수 있습니다.

$var = $_COOKIE['origin_ref'];

그리고 @pcp가 $ _SERVER [ 'HTTP_REFERER'] 이스케이프에 대해 제안한 것 외에도 쿠키를 사용할 때 각 요청에서 $ _COOKIE [ 'origin_ref']를 이스케이프 할 수도 있습니다.


-4

이 시도

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

이것은 얻는 것에 관한 IP ADDRESS것이지만 게시물은 문제의 REFERER웹 페이지에 관한 것입니다.
Sanxofon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.