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