Я использую $_SERVER['HTTP_REFERER'];
получить рефери Url. Он работает так, как ожидается, пока пользователь не нажмет на другой странице, а референт не перейдет на последнюю страницу.
Как сохранить исходный адрес Url?
Храните его либо в файле cookie (если это приемлемо для вашей ситуации), либо в переменной сеанса.
session_start(); if ( !isset( $_SESSION["origURL"] ) ) $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
И не забывайте избегать $_SERVER["HTTP_REFERER"]
поскольку он является общим вектором атаки для веб-приложений.
Как сказал Джонатан, вы либо захотите сохранить его в файле cookie или сеансе.
Более простой способ – использовать переменную сеанса.
session_start(); if(!isset($_SESSION['org_referer'])) { $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER']; }
Поместите это вверху страницы, и вы всегда сможете получить доступ к первому рефереру, на который был направлен посетитель сайта.
Храните его в файле cookie, который длится только для текущего сеанса просмотра.
Использование Cookie в качестве репозитория ссылочной страницы в большинстве случаев намного лучше, так как файлы cookie будут содержать ссылку, пока браузер не будет закрыт (и сохранит его, даже если вкладка браузера закрыта), поэтому, если пользователь оставит страницу открытой, допустим, перед выходными и вернулся к нему через пару дней, ваша сессия, вероятно, истекла, но файлы cookie все равно будут там.
Поместите этот код в начале страницы (перед любым выходом html, поскольку файлы cookie будут правильно установлены только перед любым эхом / печатью):
if(!isset($_COOKIE['origin_ref'])) { setcookie('origin_ref', $_SERVER['HTTP_REFERER']); }
Затем вы можете получить к нему доступ позже:
$var = $_COOKIE['origin_ref'];
И в дополнение к тому, что @pcp предложил об экранировании $ _SERVER ['HTTP_REFERER'], при использовании cookie вы также можете избежать $ _COOKIE ['origin_ref'] для каждого запроса.