Редирект каждого 5 посетителя, пришедшего из поисковика?
Новая тема Написать ответ
# Пн Июн 15, 2015 6:23 pmtvsm22 Зарег.: 03.03.2008 ; Сообщ.: 556Ответить с цитатой
Есть код. Как сделать так, чтобы пересылать только каждого 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();
}
?>

# Пн Июн 15, 2015 6:56 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Код:
<?php

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

?>

# Пн Июн 15, 2015 7:19 pmtvsm22 Зарег.: 03.03.2008 ; Сообщ.: 556Ответить с цитатой
если подставить в код - при загрузке пустую страницу выдает... (
# Пн Июн 15, 2015 7:36 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
tvsm22, добавь этот код в самом начале страницы скрипта, а вместо $url задай целевой URL:

Код:
<?php

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

?>

# Пн Июн 15, 2015 7:58 pmtvsm22 Зарег.: 03.03.2008 ; Сообщ.: 556Ответить с цитатой
хм, в таком случае вроде из каждого перехода из google переадресует на ссылку, а не один из 5, раз 10 открыл разные страницы...
# Вт Июн 16, 2015 12:03 amCodd Зарег.: 13.01.2011 ; Сообщ.: 186Ответить с цитатой
Если надо, чтобы 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)

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