2014-12-20 5 views
2

간단한 모달 상자를 개발했으며 특정 리퍼러에서 $_SERVER["HTTP_REFERER"]을 추가하여 표시되지 않았습니다. 괜찮 았지만 $_SERVER["HTTP_REFERER"]은 Mozilla에서 작동하지 않습니다. 이것을 할 수있는 다른 방법이 있습니까?

나는 간단한 PHP 코드를 사용하고 있습니다 :

if ($_SERVER["HTTP_REFERER"] == "www.thedomain.com/article.php"){ 
//Code to do not show the modal box 
}else{ 
//code to show the modal box 
} 
+4

referer는 실제로 포함되어있는 것을보기 위해'http : //''var_dump ($ _ SERVER [ 'HTTP_REFERER']) 프로토콜을 포함 할 것입니다. –

+4

그러나 HTTP_REFERER 문자열을 보내거나 보내지 않으려면 클라이언트 브라우저가 전적으로 의존하거나 사용자가 원하는 지 또는 사용자가 구성한 지 여부를 보내면됩니다. 그것은 전혀 존재하지 않을 수도 있으며, 일반적으로 꽤 신뢰할 수 없습니다. –

+0

당신이 접근 할 수있는 변수를 보려면'print_r ($ _ SERVER);'를 시도하십시오. 브라우저에 의존하지 않을 것입니다. 파이어 폭스가 특별한 경우에 그것을 볼 수 없으면, 다른 경우도 그렇게 할 수 없습니다. – halfer

답변

1

설명했듯이 리퍼러를 신뢰할 수 없습니다. 일부 사용자는 리퍼러를 모두 사용하지 않기로 선택하고 HTTPS를 통해 항상 비어 있습니다.

&modal=true과 같은 쿼리 문자열 매개 변수 만 사용하십시오.

+0

나는 쿼리 문자열을 사용하지 않아야합니다! :-( –

1

'HTTP_REFERER'- 을 현재 페이지에 대한 유저 에이전트를 참조하는 페이지의 주소 (있는 경우). 이것은 사용자 에이전트에 의해 설정됩니다. 모든 사용자 에이전트가이를 설정하는 것은 아니며 일부는 HTTP_REFERER를 기능으로 수정할 수있는 기능을 제공합니다. 요컨대, 그것은 정말로 신뢰할 수 없습니다. http://php.net/manual/en/reserved.variables.server.php

즉, 당신은 당신의 코드에서이 값에 의존해서는 안된다. 거기에는이 정보를 얻는 데 실제로 더 신뢰할만한 방법이 없다고했습니다. 사용자의 브라우저에서이 정보에 액세스 할 수있는 것은 아닙니다.

관련 문제