Получить исходный URL-адрес с PHP?


110

Я использую, $_SERVER['HTTP_REFERER'];чтобы получить URL-адрес ссылки. Он работает, как ожидалось, пока пользователь не щелкнет другую страницу, а реферер не перейдет на последнюю страницу.

Как сохранить исходный URL-адрес ссылки?

Ответы:


137

Сохраните его либо в файле cookie (если это приемлемо для вашей ситуации), либо в переменной сеанса.

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
Обратите внимание на совет @pcp в ответе ниже!
d -_- b

6
Обратите внимание, что вы также должны проверить, http_refererсуществует ли он , поскольку часто этого не происходит, что может вызвать ошибку «Неопределенный индекс».
Джастин

17

Как предложил Джонатан, вы хотите сохранить его в файле cookie или в сеансе.

Более простой способ - использовать переменную сеанса.

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

Поместите это вверху страницы, и вы всегда сможете получить доступ к первому референту, по которому был направлен посетитель сайта.


4

Сохраните его в файле cookie, который действует только в течение текущего сеанса просмотра.


4

Использование Cookie в качестве репозитория справочной страницы в большинстве случаев намного лучше, поскольку файлы cookie будут сохранять реферер до закрытия браузера (и будут сохранять его, даже если вкладка браузера закрыта), поэтому в случае, если пользователь оставил страницу открытой, скажем до выходных и вернувшись к нему через пару дней, ваша сессия, вероятно, истечет, но файлы cookie все еще будут там.

Поместите этот код в начало страницы (перед любым выводом html, поскольку файлы cookie будут правильно установлены только перед любым echo / print):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

Тогда вы сможете получить к нему доступ позже:

$var = $_COOKIE['origin_ref'];

И помимо того, что @pcp предложил экранировать $ _SERVER ['HTTP_REFERER'], при использовании cookie вы также можете захотеть экранировать $ _COOKIE ['origin_ref'] при каждом запросе.


-4

попробуй это

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

Речь идет о получении, IP ADDRESSно сообщение о REFERERвеб-странице, которая привела к той, о которой идет речь.
Санхофон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.