$ _SERVER ['HTTP_REFERER'] показывает текущую страницу - PullRequest
0 голосов
/ 31 августа 2011

У меня есть скрипт отслеживания, который я использую для сохранения аналитических данных в базе данных нашей компании. У нас довольно много веб-сайтов (около 2000 доменов) и кампаний PPC, и сценарий, который я использую, прекрасно работает.

Я знаю, что $_SERVER['HTTP_REFERER'] не является на 100% надежным и может быть либо пустым, либо подделанным, что угодно, это незначительное меньшинство из отведений, которые мы получаем (я учитываю это в своем сценарии отслеживания).

Проблема в том, что, хотя мой $_SERVER['HTTP_REFERER'] var всегда возвращается пустым, если я отображаю его на соответствующей странице, он передается в скрипт отслеживания (через $_SESSION var) в качестве URL текущей страницы. Это как если бы (обратите внимание на «как будто», я знаю, что это не так) PHP заменяет $_SERVER['REQUEST_URI'] на $_SERVER['HTTP_REFERER']. Это с целевой страницы:

$_SESSION['keywords'] = $_SERVER['HTTP_REFERER'];
require_once 'tracking.php';
$raw_query = $_SESSION['keywords'];
 $key_browser = getKeywords($raw_query);
 $keywords = $key_browser['keywords'];
 $referer = $key_browser['referer'];
 $user_agent = getBrowserOs($_SERVER['HTTP_USER_AGENT']);
 $br = $user_agent['browser'];
 $os = $user_agent['os'];

Скрипт отслеживания несущественен, потому что переменные, которые я передаю, не изменяются.

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

если вы загружаете ваш скрипт с тегом HTML вроде <script src="mytracking.php"></script>, referer будет таким же, как и request_uri, потому что request_uri - это тот, который запрашивает скрипт.

Единственный скрипт, который получает реферер, от которого пришел пользовательесли ссылка нажата - это скрипт, который отвечает на запрос браузера.Все ресурсы, загруженные через теги HTML, будут иметь текущую страницу в качестве реферера.Который, кстати, часто используется в качестве защиты от горячей ссылки на изображения и другие ресурсы.

0 голосов
/ 01 сентября 2011

Ну, я не нашел подходящего решения, поэтому я решил использовать скрытое поле, значение которого заполняется свойством javascript document.referrer, и просто передал его в скрипт отслеживания. Определенно работает, хотя я не слишком рад, что не смог найти лучшего решения.

...