Как определить, с какого сайта пришел пользователь до моего появления в PHP? - PullRequest
5 голосов
/ 22 февраля 2010

Как я могу определить сайт, с которого пришел пользователь, прежде чем получить доступ к моему в PHP?

Ответы [ 6 ]

22 голосов
/ 22 февраля 2010

Вы можете проверить в Заголовок HTTP Referer :

echo $_SERVER['HTTP_REFERER'];


Но обратите внимание, что Referer отправляется браузером , что означает:

  • Его можно отключить (это не обязательно, а просто дополнительная информация, которую может отправлять браузер)
  • Он может быть подделан (т. Е. Любой может отправить что угодно - даже некоторые инъекции SQL или XSS, например)


Таким образом, вы можете использовать реферера для предоставления дополнительной функции на вашем сайте, но вы должны убедиться, что ваш сайт не полагается на него: ваше приложение должно работать, даже если реферера нет.

9 голосов
/ 22 февраля 2010

Попробуйте это:

$_SERVER['HTTP_REFERER']

Для получения дополнительной информации, см. HTTP реферер :

Реферер или HTTP реферер - также известный по общему написание реферер, который встречается как заголовок HTTP поле - идентифицирует, с точки просмотр интернет-страницы или ресурс, адрес веб-страницы (обычно URL, более общий URI или обновленный IRI i18n) ресурс, который ссылается на него. Проверяя реферер, новую страницу видно откуда поступил запрос.

2 голосов
/ 22 февраля 2010
echo $_SERVER['HTTP_REFERER'];

Он не совсем надежен и может быть подделан, но в общем случае он будет заполнен URL-адресом, по которому пользователь щелкнул, чтобы перейти к сценарию.

1 голос
/ 22 февраля 2010

Как сказал @Andrew Hare в своем ответе , получение значения значения сервера HTTP_REFERRER (заголовка, который отправляется как часть HTTP-запроса) скажет вам сайту, что браузер был последний на.

Однако следует отметить, что вполне возможно, что эта переменная заголовка / сервера не будет иметь значения по ряду законных причин, некоторые из которых:

  • Пользователь набрал URL-адрес сайта в том же окне
  • Пользователь открыл закладку в том же окне
  • Пользователь только что открыл браузер и выполнил одно из действий выше

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

1 голос
/ 22 февраля 2010

Вам нужно взглянуть на заголовок HTTP Referer:

$_SERVER['HTTP_REFERER']

См. Документация PHP для получения дополнительных заголовков HTTP

0 голосов
/ 22 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...