Я использую $_SERVER['HTTP_REFERER'];
, чтобы получить URL-адрес реферирования. Он работает так, как ожидается, пока пользователь не нажмет на другой странице, и референт не перейдет на последнюю страницу.
Как сохранить исходный адрес Url?
Я использую $_SERVER['HTTP_REFERER'];
, чтобы получить URL-адрес реферирования. Он работает так, как ожидается, пока пользователь не нажмет на другой странице, и референт не перейдет на последнюю страницу.
Как сохранить исходный адрес Url?
Храните его либо в файле cookie (если это приемлемо для вашей ситуации), либо в переменной сеанса.
session_start();
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
И не забудьте выйти $_SERVER["HTTP_REFERER"]
со своего обычного вектора атаки для веб-приложений.
Как рекомендует Johnathan, вы либо захотите сохранить его в файле 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'] для каждого запроса.
попробуй это
(isset ($_SERVER['HTTP_CLIENT_IP']) ?
$_SERVER['HTTP_CLIENT_IP'] :
(isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ?
$_SERVER['HTTP_X_FORWARDED_FOR'] :
$_SERVER['REMOTE_ADDR']
)
)