В настоящее время я работаю над модулем маркетинга, который отслеживает сайты, которые приносят трафик на наш сайт. Есть ли способ получить домен или IP-адрес ссылочного сайта с помощью PHP? Я считаю, HTTP_REFERER не всегда отображается в глобальном $ _SERVER.
Заранее спасибо.
Заголовок HTTP_REFERER
должен быть отправлен браузером клиента. Вы не можете полагаться на его отправку.
Сценарии, когда он не отправляется, включают:
В этих случаях вы ничего не можете сделать.
Однако, если вы контролируете сайт связывания, вы можете добавить идентификатор реферера в параметр GET к ссылке:
http://example.com/?from=mysite
вы могли бы проанализировать параметр from
вашего скрипта.
Преобразование строки реферера в IP обычно не является хорошей идеей, так как многие IP-адреса вмещают десятки или сотни сайтов. Различие, из которого вышло пользователь, будет потеряно.
Обращающийся адрес присутствует в заголовке запроса из всех взаимодействующих браузеров, для которых имеется реферер. Если пользователь просто набрал ваш URL-адрес, то нет реферера.
Для преобразования URL-адреса в IP-адрес требуется тривиальное программирование:
<?php $raddr = gethostbyaddr($_SERVER['HTTP_REFERER']); ?>
Если HTTP_REFERER не отображается на сервере, этот пользователь не вводит ваш сайт по ссылке или у него есть способ маскировать эту переменную через свой браузер. Не намного больше вы можете сделать.
Если он не отображается в $ _SERVER, это обычно означает, что клиент не отправляет его. Реферрером являются данные, которым нельзя доверять точности, поскольку они полностью зависят от пользователя (более конкретно, их браузера).
Лучше всего проверить, существует ли референт, а затем использовать функцию gethostbyname () в домене, чтобы получить требуемый IP-адрес.
Вы можете определить URL-адрес с добавлением $_SERVER['HTTP_REFERER']
но помните, что это можно манипулировать.
Затем вы можете использовать gethostbyname($referrer)
для получения IP-адреса.
См. http://php.net/manual/en/reserved.variables.server.php и http://php.net/manual/en/function.gethostbyname.php.