Определение IP-адреса ссылочного сайта

В настоящее время я работаю над модулем маркетинга, который отслеживает сайты, которые приносят трафик на наш сайт. Есть ли способ получить домен или IP-адрес ссылочного сайта с помощью PHP? Я считаю, HTTP_REFERER не всегда отображается в глобальном $ _SERVER.

Заранее спасибо.

Заголовок HTTP_REFERER должен быть отправлен браузером клиента. Вы не можете полагаться на его отправку.

Сценарии, когда он не отправляется, включают:

  • Пользователь вводит адрес вручную
  • Пользователь открывает ссылку в одном из больших клиентов E-Mail, которые проходят большие длины, чтобы скрыть REFERER
  • Браузер пользователя настроен на блокировку заголовка реферера (редко)
  • Пользователь переключает протоколы (т. Е. Ссылку на http-сайт, указывающий на https one, или наоборот)

В этих случаях вы ничего не можете сделать.

Однако, если вы контролируете сайт связывания, вы можете добавить идентификатор реферера в параметр GET к ссылке:

 http://example.com/?from=mysite 

вы могли бы проанализировать параметр from вашего скрипта.

Преобразование строки реферера в IP обычно не является хорошей идеей, так как многие IP-адреса вмещают десятки или сотни сайтов. Различие, из которого вышло пользователь, будет потеряно.

Обращающийся адрес присутствует в заголовке запроса из всех взаимодействующих браузеров, для которых имеется реферер. Если пользователь просто набрал ваш URL-адрес, то нет реферера.

Для преобразования URL-адреса в IP-адрес требуется тривиальное программирование:

 <?php $raddr = gethostbyaddr($_SERVER['HTTP_REFERER']); ?> 

Если HTTP_REFERER не отображается на сервере, этот пользователь не вводит ваш сайт по ссылке или у него есть способ маскировать эту переменную через свой браузер. Не намного больше вы можете сделать.

Если он не отображается в $ _SERVER, это обычно означает, что клиент не отправляет его. Реферрером являются данные, которым нельзя доверять точности, поскольку они полностью зависят от пользователя (более конкретно, их браузера).

Лучше всего проверить, существует ли референт, а затем использовать функцию gethostbyname () в домене, чтобы получить требуемый IP-адрес.

http://php.net/manual/en/function.gethostbyname.php

Вы можете определить URL-адрес с добавлением $_SERVER['HTTP_REFERER'] но помните, что это можно манипулировать.

Затем вы можете использовать gethostbyname($referrer) для получения IP-адреса.

См. http://php.net/manual/en/reserved.variables.server.php и http://php.net/manual/en/function.gethostbyname.php.