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 renvoi d'origine?
Stockez-le dans un cookie (si cela convient à votre situation) ou dans une variable de session.
session_start();
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
Comme suggéré par Johnathan, vous souhaitez 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é.
Utiliser un cookie en tant que référentiel de page de référence est bien meilleur dans la plupart des cas, car les cookies garderont le référent jusqu'à la fermeture du navigateur (et le resteront même si l'onglet du navigateur est fermé), donc au cas où l'utilisateur laisserait la page ouverte, avant les week-ends, et y revenez après quelques jours, votre session sera probablement expirée, mais les cookies seront toujours là.
Placez ce code au début de la page (avant toute sortie HTML, car les cookies ne seront correctement configurés 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 demande.
Stockez-le dans un cookie qui ne dure que pour la session de navigation en cours
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']
)
)