2010-06-12 3 views
1

Я пытаюсь перенаправить посетителей на сайт, основываясь на их ссылочном URL-адресе.Переадресация на основе URL-адреса реферала

Вот сценарий:

 
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'); 
}; 

Ошибки: Я получаю «предупреждение: не может изменить заголовок» ошибку, потому что я вторя $ реферера перед отправкой заголовков.

Если я удалю эхо, скрипт не работает.

Любые предложения?

+0

Как он работает не так, как ожидалось? – Gumbo

ответ

0

PHP отправляет заголовки пользователю, запрашивающему страницу, когда вы echo $referrer. Затем заголовок вызывает попытки изменить эти заголовки и перенаправить перенаправление адреса, но не может, поскольку заголовки уже отправлены вместе с началом содержимого вашей страницы.

Чтобы обойти эту проблему, посмотрите на Output Control функции PHP, особенно ob_start();, который вставляется в верхней части вашего сценария позволит вам продолжить вторя место переадресации и позволяет перенаправлять одновременно.

0

Как примечание: Любой выход будет автоматически генерировать заголовки. Если вы хотите перенаправить с заголовками, вам просто нужно прокомментировать echo $referrer;. Если вам нужно посмотреть, какой реферер собирается на какой сайт для целей отладки, просто поместите его в URL-адрес, страница-получатель должна его игнорировать.

Смежные вопросы