Obtenir le référent URL d'origine avec PHP?


110

j'utilise $_SERVER['HTTP_REFERER']; pour obtenir l'URL du référent. Cela fonctionne comme prévu jusqu'à ce que l'utilisateur clique sur une autre page et que le référent passe à la dernière page.

Comment stocker l'URL de référence d'origine?

Réponses:


137

Stockez-le soit dans un cookie (si cela convient à votre situation), soit dans une variable de session.

session_start();

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

13
Veuillez noter les conseils de @pcp dans la réponse ci-dessous!
d -_- b

6
Notez que vous devez également vérifier s'il http_refererexiste, car ce n'est souvent pas le cas, ce qui pourrait provoquer une erreur "Index non défini".
Justin le

17

Comme Johnathan l'a suggéré, vous voudrez soit l'enregistrer dans un cookie ou une session.

Le moyen le plus simple serait d'utiliser une variable de session.

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

Mettez cela en haut de la page, et vous pourrez toujours accéder au premier référent par lequel le visiteur du site a été dirigé.


4

Stockez-le dans un cookie qui ne dure que pour la session de navigation en cours


4

L'utilisation de Cookie comme référentiel de page de référence est bien meilleure dans la plupart des cas, car les cookies conserveront le référent jusqu'à ce que le navigateur soit fermé (et le conserveront même si l'onglet du navigateur est fermé), donc si l'utilisateur a laissé la page ouverte, disons avant le week-end, et y revenir après quelques jours, votre session sera probablement expirée, mais les cookies seront toujours là.

Mettez ce code au début d'une page (avant toute sortie html, car les cookies ne seront correctement définis qu'avant tout écho / impression):

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

Ensuite, vous pourrez y accéder plus tard:

$var = $_COOKIE['origin_ref'];

Et en plus de ce que @pcp a suggéré d'échapper à $ _SERVER ['HTTP_REFERER'], lorsque vous utilisez un cookie, vous pouvez également vouloir échapper $ _COOKIE ['origin_ref'] à chaque requête.


-4

essaye ça

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

Il s'agit d'obtenir IP ADDRESSmais le message concerneREFERER la page Web qui a conduit à celle en question.
Sanxofon le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.