|
|
|
Есть код. Как сделать так, чтобы пересылать только каждого 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();
}
?>
|
|
|
|
|
|
|
Код: |
<?php
if (rand(1,5)>=3) {
header("Location: ".$url;
die();
}
?>
|
|
|
|
|
|
|
если подставить в код - при загрузке пустую страницу выдает... ( |
|
|
|
|
|
tvsm22, добавь этот код в самом начале страницы скрипта, а вместо $url задай целевой URL:
Код: |
<?php
if (rand(1,5)>=3) {
echo '<meta http-equiv="refresh" content="0;URL=http://site.com/">'; // Здесь задать URL
die();
}
?>
|
|
|
|
|
|
|
хм, в таком случае вроде из каждого перехода из google переадресует на ссылку, а не один из 5, раз 10 открыл разные страницы... |
|
|
|
|
|
Если надо, чтобы 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)
Если надо, чтобы именно каждый пятый переадресовывался, то нужно, например, в файле хранить счетчик посетителей и из него брать информацию, какой это посетитель по счету. |
|
|
|
|
|
|
|