2010-06-12 4 views
1

J'essaie de rediriger les visiteurs vers un site en fonction de leur URL de référence.Redirection basée sur l'URL du référent

Voici le script:

 
php 
$domain='blankds.com'; 
$referrer=$_SERVER['HTTP_REFERER']; 
echo $referrer; 
if (preg_match("/$domain/",$referrer)) { 
header('Location: http://www.blackisgreen.org/page_1.php'); 
} else { 
header('Location: http://www.blackisgreen.org/page_2.php'); 
}; 

erreurs: je reçois un « Attention: ne peut pas modifier en-tête » erreur parce que je me fais l'écho referrer $ avant d'envoyer les en-têtes.

Si je supprime l'écho, le script ne fonctionne pas.

Des suggestions?

+0

En quoi cela ne fonctionne-t-il pas comme prévu? – Gumbo

Répondre

0

PHP envoie des en-têtes à l'utilisateur demandant la page lorsque vous echo $referrer. La fonction header vous appelez puis tente de modifier ces en-têtes et affectez une redirection d'emplacement, mais ne peut pas car les en-têtes ont déjà été envoyés avec le début du contenu de votre page.

Pour contourner ce problème, jetez un oeil à des fonctions Output Control de PHP, en particulier ob_start(); qui a introduit en haut de votre script devrait vous permettre de continuer en écho l'emplacement de redirection et vous permettant de rediriger en même temps.

0

À noter: toute sortie générera automatiquement des en-têtes. Si vous voulez rediriger avec des en-têtes il vous suffit de commenter echo $referrer; Si vous avez besoin de voir quel référent se rend sur quel site à des fins de débogage, placez-le simplement dans l'URL, la page de réception doit l'ignorer.

Questions connexes