[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']
)
)