2011-01-31 3 views
4

Как я могу ссылаться на предыдущую страницу, которая была посещена с помощью PHP?Как я могу сделать ссылку «назад» на страницах PHP?

+0

отслеживать каждую посещаемую страницу в переменной сеанса –

+4

@ Шахи, это обычная ошибка, которую совершают большинство noobs. –

ответ

-1

Использование $ _SERVER [ 'HTTP_REFERER']

$page_referrer=$_SERVER['HTTP_referer']; 

Использование $ page_referrer в качестве ссылки на предыдущую страницу! Предупреждение: не делайте этого на домашней странице!

+0

'$ _SERVER ['HTTP_REFERER']' это то, что вы намеревались написать –

+0

Да, спасибо за опечатку! – keatch

0

Единственный способ, которым вы можете догадаться, откуда пришел пользователь, - это то, что они отправили вам заголовок Referrer или нет, когда они запросили вашу страницу PHP. Содержимое этого заголовка сохраняется в переменной $_SERVER['HTTP_REFERRER'].

Таким образом, вы могли бы, например, написать это

<a href="<?=$_SERVER['HTTP_REFERRER']?>">Back to whence you came</a>

ли на самом деле не знаю, что это имеет отношение к SQL, хотя

1

Вот небольшой пример того, как можно реализовать это:

if(isset($_SERVER['HTTP_REFERER'])) { 
    echo "<a href=".$_SERVER['HTTP_REFERER'].">Go back</a>"; 
} 
+0

а что, если он не установлен? –

+0

Он не будет писать никаких ссылок, так как информация недоступна (например: вы открываете браузер непосредственно на этой странице). Вы можете вставить «else» и сообщить об этом пользователю, если это необходимо. – Danilo

+0

Самый лучший и простой способ создания обратных ссылок, основанных на истории, для добавления на основе иерархии пакетиков esp на сайтах электронной коммерции –

11

Есть несколько способов сделать это:

1) Использование история браузера - это чистый HTML-вариант:

<a href='javascript:history.back(1);'>Back</a> 

2) Используйте Referer HTTP header, который обычно содержит URL-адрес, который называется текущим запрос:

$link = $_SERVER['HTTP_REFERER']; 

3) Использование некоторых поддерживаемого сервера который отслеживает пройденные страницы и заполняет атрибут «href» в «обратной» ссылке соответственно. Обычно это может быть полезно в волшебниках; в других случаях накладные расходы могут быть слишком высокими. Кроме того, вы должны тщательно обрабатывать ситуацию, когда пользователь открывает веб-сайт на нескольких вкладках браузера.

UPDATE

4) Построить конкретный "Назад" ссылки, основанные на иерархии страниц отношений. См. Ответ от Матти Вирккунен за подробностями. Фактически, это самый эффективный способ навигации по страницам с «иерархическими» отношениями («просмотр списка элементов», «раздел> подраздел», «просмотр объектов» и «вложенные объекты» и т. Д.).

+0

Извините, но за все время, когда я попал на страницу, которая делает что-то подобное из Результат Google. –

+0

@Matti Virkkunen - спасибо, абсолютно правильный комментарий. Обновленный ответ. – Kel

+0

Один вопрос: что такое точка с запятой в первом примере? Мне интересно, если я что-то пропустил в отношении HTML. –

0

Вам даже не нужен PHP.

<a href="javascript://" onclick="history.back();">Back</a> 
3

Вы очень редко захотите иметь обратную ссылку на основе истории браузера, заголовков или сеансов реферера. Для этого используется кнопка возврата браузера.

Обратные ссылки являются наиболее полезными, когда пользователь пришел от за пределами вашего сайта, например, из поисковой системы, и они хотели бы получить страницу, которая «одна обратно» в вашей иерархии страниц. Это может быть предыдущая страница, верхний уровень в дереве и т. Д. Очевидно, что когда пользователь пришел извне вашего веб-сайта, браузерные истории kludges или перехватчики заголовков не будут работать. Единственный способ создать правильную обратную связь - понять иерархию вашей страницы и создать правильную ссылку для каждого представления в коде.

0

Использование history.back() или $_SERVER['HTTP_referer'] не лучший способ. Проблема заключается в том, что пользователь приходит на ваш сайт с прямой ссылки, google (или etc search engine), другого сайта или подобного трафика. Затем это решение возвращает пользователя на предыдущую страницу, вне вашего сайта.

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