Повышаем конверт при сплит-тесте лендингов или офферов – часть 2

Часть 1 ВКонтакте

Теперь поговорим о технической реализации. Сам скрипт ищи в конце поста. Про использование куки для определения того, куда редиректить, я уже писал в посте «Редирект новых и старых посетителей в разные места, редирект по номеру посещения«.

Для определения псевдослучайного числа от 1 до 100 на основе ip-адреса напишем функцию:

function getIPNum() {
  $ip = ip2long($_SERVER["REMOTE_ADDR"]);
  $sto = pow($ip + 57, 0.7)%100 + 1;
  return $sto;
}

Адреса лендингов будем передавать в массиве со значениями. Каждой ссылке присвоим вероятность выпадания в процентах (а если точнее – умножим на сто).

Например,

$arr = array(
 "http://google.com" => 30,
 "http://yandex.ru" => 30,
 "http://mail.ru" => 40);

Тут гугл откроется в 30% случаев, яндекс тоже в 30, а мэйл в 40 процентах. Скажу сразу, значение у последней ссылки может быть любым, и если сумма чисел будет меньше сотни, переход всё равно осуществится по последней ссылке. Ну и ссылок сколько угодно можно с разными вероятностями. Удобно?

Теперь функция выбора лендинга на основе числа от 1 до 100:

function chooseLink($arr, $num) {
 $rate = 0;
 while (($item = current($arr))!== FALSE) {
   $rate += $item;
   if ($num <= $rate) return key($arr);
   next($arr);
 }
 return key($arr);
}

Итак, уже получаем адрес для ленда на основе ip:

$arr = array(
 "http://google.com" => 30,
 "http://yandex.ru" => 30,
 "http://mail.ru" => 40);
 
function getIPNum() {
 $ip = ip2long($_SERVER["REMOTE_ADDR"]);
 $sto = pow($ip + 57, 0.7)%100;
 return $sto;
}

function chooseLink($arr, $num) {
 $rate = 0;
 while (($item = current($arr))!== FALSE) {
 $rate += $item;
 if ($num <= $rate) return key($arr);
 next($arr);
 }
 return key($arr);
}
$link = chooseLink($arr, getIPNum());

Хорошо, сделали. Но! Как мы помним из первой части, всё же сначала при посещении проверяем куки.

Что храним в куки? А давайте сразу ссылку туда зафигачим!

Итого,

if (isset($_COOKIE['keks']))
 $link=$_COOKIE['keks'];
else {
  $link = chooseLink($arr, getIPNum());
  SetCookie("keks",$link,time()+3600*24*365*10);
}

Ну и в самом контенте ссылки на лендинг делать уже как <a href="<?php echo $link; ?>">йа ссылко</a>

Итак, при заходе посетителя

  1. При отсутствии куки (=новый посетитель) получаем значение функции chooseLink на основе IP-адреса посетителя.
  2. При наличии куки просто берём ссылку из него.
  3. Используем ссылку, полученную в пункте 1 либо в пункте 2.

Весь код для выбора ссылки:

 30,
   "http://yandex.ru" => 30,
   "http://mail.ru" => 40);
 
  function getIPNum() {
   $ip = ip2long($_SERVER["REMOTE_ADDR"]);
   $sto = pow($ip + 57, 0.7)%100;
   return $sto;
  }

  function chooseLink($arr, $num) {
    $rate = 0;
    while (($item = current($arr))!== FALSE) {
      $rate += $item;
      if ($num <= $rate) return key($arr);
      next($arr);
    }
    return key($arr);
  }
  if (isset($_COOKIE['keks']))
    $link=$_COOKIE['keks'];
  else {
    $link = chooseLink($arr, getIPNum());
    SetCookie("keks",$link,time()+3600*24*365*10);
  }
?>
Ололо

Йа текст лендинга
А йа ссылко
...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *