2011-08-31 2 views
0

У меня есть сценарий отслеживания, который я использую для хранения аналитических данных в нашей базе данных. У нас довольно много сайтов (около 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']; 

Скрипт отслеживания является несущественным, поскольку переменные Перехожу его не изменяются.

+1

Считаете ли вы использование Google Analytics? –

+0

Можете ли вы опубликовать соответствующий код из сценариев, которые вызывают проблему? – DaveRandom

+0

@Briedis мы интенсивно используем GA, но я также программирую свое деловое программное обеспечение, в котором им нужны отдельные аналитические данные, связанные с их индивидуальными выводами. – k4t434sis

ответ

0

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

3

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

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

+0

Я не думаю, что это так, HTTP_REFERER сохраняется как переменная $ _SESSION, поэтому я могу передать ее сценарию отслеживания. Хотя это и не так, это очень похоже на то, что происходит. – k4t434sis

+0

Что такое конфигурация сервера? У вас есть nginx перед apache? –

+0

Apache/2.2.3 (CentOS) – k4t434sis

Смежные вопросы