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

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

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



답변

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

session_start();

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


답변

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

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

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

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


답변

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


답변

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

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

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

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

$var = $_COOKIE['origin_ref'];

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


답변

이 시도

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


답변