URL реферала в php - PullRequest
       1

URL реферала в php

8 голосов
/ 15 января 2010

Итак, я пытаюсь получить страницу, с которой пришел посетитель. Я вставил этот код в файл php, и я пытаюсь увидеть URL страницы, но он не работает, какие-либо предложения?

<?php 

  $ref = getenv("HTTP_REFERER"); 
  echo $ref; 

?>

(добавлено после некоторых ответов) Я также пытался

print $_SERVER["HTTP_REFERER"];

и это тоже не работает

это сработало после того, как я много раз обновлял сайт, не уверен, почему вообще возникла проблема, все равно спасибо

Ответы [ 8 ]

24 голосов
/ 15 января 2010

Вы пытались получить доступ через $_SERVER superglobal?

print $_SERVER["HTTP_REFERER"];
4 голосов
/ 15 января 2010

$ _ SERVER ['HTTP_REFERER'] - лучший способ получить доступ к этой информации.

На основе ваших комментариев к другим ответам:

  1. Вы на самом деле откуда-то? Если вы обновите свой браузер, это значение, скорее всего, не будет отправлено. Поэтому убедитесь, что ваш браузер отправляет заголовок. Если вы разместите этот скрипт в общедоступном URL-адресе, я буду рад проверить его и проверить.
  2. Вы должны действительно включить все ошибки. Если заголовок не отправлен и вы все равно получаете к нему доступ, PHP выдаст E_NOTICE. Если вы отлаживаете свой код, вы должны включить все сообщения об ошибках и убедиться, что нет E_NOTICE или хуже.
3 голосов
/ 20 марта 2012

Возможно глупое замечание, но $_SERVER["HTTP_REFERER"] работает, только если вы заходите на страницу с помощью гиперссылки. например,

/ goto.html

<a href="refer.php">go to refer</a>

/ refer.php

<?php
print "You entered using a link on ".$_SERVER["HTTP_REFERER"];
?>

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

2 голосов
/ 15 ноября 2015
<?php
  echo $_SERVER['HTTP_REFERER'];
?>

приведенный выше код работает! Тем не менее, многим из моих учеников сначала трудно понять, что для $_SERVER['HTTP_REFERER'] требуется от ссылки .

Я даю им ниже (проверено) код (или "веб-страница") для демонстрации. Код выше находится внизу.

шоу-referer.php

<?php
  if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    $referer = $_SERVER['HTTP_REFERER'];
  } else {
    $referer = 'No Link - No Referer - Direct URL Entry';
  }
  echo $referer;
?>

<p>See the referer in action
  <a href="show-referer.php">from this page!</a>
</p>

<?php
  echo $_SERVER['HTTP_REFERER'];
?>

Страница show-referer.php ссылается на себя, когда вы щелкаете ссылку, что должно заставить браузер генерировать HTTP_REFERER.

2 голосов
/ 15 января 2010

getenv() используется, если он запускается как скрипт CGI. С SAPI вы используете $_SERVER["HTTP_REFERER"].

1 голос
/ 04 июля 2013

Если вы вычислите все эти ответы, вы получите что-то похожее на:

<?php
if isset($_SERVER['HTTP_REFERER']) {
    $ref = $_SERVER['HTTP_REFERER'];
}
else {
    $ref = "Direct Entry";
}
?>
1 голос
/ 15 января 2010
$ref = $_SERVER['HTTP_REFERER'];

Соответствующая страница справочника: http://php.net/manual/en/reserved.variables.server.php

0 голосов
/ 15 января 2010

Снова прочитайте http://php.net/manual/en/reserved.variables.server.php: С HTTP_REFERER есть комментарий:

Адрес страницы (если есть), на которой пользовательский агент направлен на текущую страницу. Это устанавливается пользовательским агентом. Не все пользовательские агенты будут устанавливать это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, ему нельзя доверять .

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