Отримати оригінальний 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.

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

Помістіть це вгорі сторінки, і ви завжди зможете отримати доступ до першого реферату, яким керував відвідувач сайту.


4

Зберігайте його у файлі cookie, який триває лише протягом поточного сеансу перегляду


4

Використовувати 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'] у кожному запиті.


-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.