2017-07-14 2 views
0

Avant la balise <html> dans le fichier header.php de mon site WordPress je le code suivant:Comment puis-je empêcher HTTP_REFERER d'être écrasé

<?php 

session_start(); 

$_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 

?> 

Pour tester le code ci-dessus, j'ai placé le code suivant à l'avant fichier -page.php (et il fonctionne):

<?php 
    echo $_SESSION['refererurl']; 
?> 

Je fais cela parce que je veux suivre l'URL referrer qui a conduit un visiteur sur mon site à partir d'un site externe (à des fins de suivi des objectifs). Le problème est que $_SERVER['HTTP_REFERER'] se réinitialise lors du chargement de la page, alors que l'information est utile lorsqu'un visiteur arrive sur mon site Web, elle est écrasée chaque fois que le visiteur navigue plus loin sur mon site.

Y a-t-il un moyen de stocker la valeur de $_SERVER['HTTP_REFERER'] lorsqu'un visiteur arrive sur mon site depuis un site externe aussi longtemps que le visiteur se trouve sur mon site? Je suis plutôt nouveau à PHP à ce niveau, alors excusez mon manque d'expérience. Je stocke $_SERVER['HTTP_REFERER'] dans une session simplement parce que c'est ce que j'ai rassemblé travaillerait basé sur une recherche rapide dans des sessions et des biscuits.

+0

Vérifiez si le référent contient votre nom de domaine et ignorez-le s'il le fait? –

+0

Je devrai finalement poster cette information dans un formulaire, donc d'une manière ou d'une autre j'ai besoin que la valeur initiale soit enregistrée pendant la durée de la session. – LCW

Répondre

2

Très simple - ne le définissez que si n'est pas déjà défini.

if(!isset($_SESSION['refererurl'])) { 
    $_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 
} 
+0

Vous pouvez également utiliser 'parse_url' sur' $ _SERVER ['HTTP_REFERER'] 'pour détecter et ignorer les référents du domaine de votre propre site. – ceejayoz

0

Vous pouvez vérifier si $_SESSION['refererurl'] est déjà défini et simplement ne pas la remplacer :-)

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

Vous pouvez également vérifier si le referer est vide avant d'essayer de lui attribuer:

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