Перенаправление на основе URL реферера - PullRequest
1 голос
/ 12 июня 2010

Я пытаюсь перенаправить посетителей на сайт по их ссылке.

Вот скрипт:

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

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

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

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 12 июня 2010

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

0 голосов
/ 12 июня 2010

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

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

...