АРМАДА
Редирект каждого 5 посетителя, пришедшего из поисковика?
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

tvsm22
Профессионал
Зарегистрирован: 03.03.2008
Сообщений: 551
Обратиться по нику
# Добавлено:Пн Июн 15, 2015 6:23 pmДобавить в избранноеОтветить с цитатой
Есть код. Как сделать так, чтобы пересылать только каждого 5 посетителя?

Код:
<?php
$to = 'http://сайт'; //впишите ссылку на которую требуется перенаправление
$toDefault = 'http://сайт'; //если не удастся определить поисковый запрос, то перенаправить по этой ссылке
if (preg_match('#(google|bing|msn|ask|aol|mail\.ru|webalta).*[\?\&]q=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
   header("Location: ".$to.urldecode($match[2]));
   die();
}
if (preg_match('#(altavista|yahoo).*[\?\&]p=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
   header("Location: ".$to.urldecode($match[2]));
   die();
}
if (preg_match('#yandex.*[\?\&]text=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
   header("Location: ".$to.urldecode($match[1]));
   die();
}
if (preg_match('#rambler.*[\?\&]query=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
   header("Location: ".$to.urldecode($match[1]));
   die();
}
if (preg_match('#(google|bing|msn|ask|aol|mail\.ru|webalta|altavista|yahoo|yandex|rambler)#i', $_SERVER['HTTP_REFERER'], $match)) {
   header("Location: ".$toDefault);
   die();
}
?>

sabirovsk.ru - Игровое оборудование для детских садов

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11276
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Пн Июн 15, 2015 6:56 pmОтветить с цитатой
Код:
<?php

if (rand(1,5)>=3) {
   header("Location: ".$url;
   die();
}

?>

Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

tvsm22
Профессионал
Зарегистрирован: 03.03.2008
Сообщений: 551
Обратиться по нику
# Добавлено:Пн Июн 15, 2015 7:19 pmОтветить с цитатой
если подставить в код - при загрузке пустую страницу выдает... (
sabirovsk.ru - Игровое оборудование для детских садов

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11276
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Пн Июн 15, 2015 7:36 pmОтветить с цитатой
tvsm22, добавь этот код в самом начале страницы скрипта, а вместо $url задай целевой URL:

Код:
<?php

if (rand(1,5)>=3) {
   echo '<meta http-equiv="refresh" content="0;URL=http://site.com/">';   // Здесь задать URL
   die();
}

?>

Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

tvsm22
Профессионал
Зарегистрирован: 03.03.2008
Сообщений: 551
Обратиться по нику
# Добавлено:Пн Июн 15, 2015 7:58 pmОтветить с цитатой
хм, в таком случае вроде из каждого перехода из google переадресует на ссылку, а не один из 5, раз 10 открыл разные страницы...
sabirovsk.ru - Игровое оборудование для детских садов

Codd
Опытный
Зарегистрирован: 13.01.2011
Сообщений: 186
Обратиться по нику
# Добавлено:Вт Июн 16, 2015 12:03 amОтветить с цитатой
Если надо, чтобы 20% посетителей переадресовывались, а остальные оставались на этой же странице, то так:

Код:

<?php
if ( !(5-mt_rand(1,5)) ) {

    $to = 'http://сайт'; //впишите ссылку на которую требуется перенаправление
    $toDefault = 'http://сайт'; //если не удастся определить поисковый запрос, то перенаправить по этой ссылке
    if (preg_match('#(google|bing|msn|ask|aol|mail\.ru|webalta).*[\?\&]q=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
        header("Location: ".$to.urldecode($match[2]));
        die();
    }
    if (preg_match('#(altavista|yahoo).*[\?\&]p=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
        header("Location: ".$to.urldecode($match[2]));
        die();
    }
    if (preg_match('#yandex.*[\?\&]text=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
        header("Location: ".$to.urldecode($match[1]));
        die();
    }
    if (preg_match('#rambler.*[\?\&]query=([^&]+)#i', $_SERVER['HTTP_REFERER'], $match)) {
        header("Location: ".$to.urldecode($match[1]));
        die();
    }
    if (preg_match('#(google|bing|msn|ask|aol|mail\.ru|webalta|altavista|yahoo|yandex|rambler)#i', $_SERVER['HTTP_REFERER'], $match)) {
        header("Location: ".$toDefault);
        die();
    }
   
}




При многократном запуске mt_rand распределение чисел примерно будет равное, соответственно mt_rand(1,5) примерно 20% раз вернет 5 и код запустится.
(результат запуска 100 раз - 3145111544113341514524152145114423215531532235535215244541413135545521254151152535243242544111335413)

Если надо, чтобы именно каждый пятый переадресовывался, то нужно, например, в файле хранить счетчик посетителей и из него брать информацию, какой это посетитель по счету.
Хранилище травки
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры