
А/Б тест - это демонстрация разных версий одного сайта пользователям с целью выявления лучшей. Почему нельзя второй сайт повесить на новый домен? Потому, что условия будут не равными, один сайт всегда будет лучше другого (по SEO, по возрасту, по названию и т.д.), идея в том, что бы взять 1000 пользователей например из контекстной рекламы, 500 пользователям показать версию сайта с зеленой кнопкой "купить", а 500 пользователям с красной кнопкой "заказать сейчас" и понять какой вариант даст большую конверсию.

А/Б тест на php
Для начала я делаю страницу index.php на которую будет попадать пользователь. Далее эта страница будет редиректить на нужный вариант. Все варианты я называю цифрами, так удобнее, например классический А/Б тест будет содержать в корне сайта 1.php и 2.php
Ещё создаем файл flag.txt в который будем записывать номер последней отрытой версии (т.е. если зашел человек и попал на 2.php, то во flag.txt запишем 2)
Так же нам понадобится ставить пользователю куку, для того что бы при обновлении страницы он не увидел другую версию. Назавем её ab_test, а в значение будем записывать ту версию которая теперь его.
Перейдем к коду, в index.php нам нужна будет функция для записи флага:
function writeFlag($next_num = false){
$write_next_num = ($next_num ? $next_num : DEFAULT_TEMPLATE_NUM);
$f = fopen(FLAG_FILE, 'w');
fwrite($f, $write_next_num);
fclose($f);
}
Ну и основной код файла:
define('FLAG_FILE', 'flag.txt'); //определяем файл флага
define('DEFAULT_TEMPLATE_NUM', 1); //версия по умолчанию, срабатывает при самом первом заходе или в случае ошибок с файлом flag
$last_visit_template = file(FLAG_FILE); //считываем файл флага
$last_template_num = 0;
$next_template_num = 0;
$templates_array = array( //основной массив версий, может быть много
1, 2,
);
if (is_array($last_visit_template) && sizeof($last_visit_template) > 0)
{
$last_template_num = intval(trim($last_visit_template[0]));
}else{
writeFlag();
$last_template_num = DEFAULT_TEMPLATE_NUM;
}
if (!($last_template_num == 1 || $last_template_num == 2))
{
writeFlag();
$last_template_num = DEFAULT_TEMPLATE_NUM;
}
$next_template_num = $last_template_num;
foreach ($templates_array as $template_num_key => $template_num)
{
if ($template_num == $last_template_num)
{
if (isset($templates_array[$template_num_key+1]))
{
$next_template_num = $templates_array[$template_num_key+1];
}
elseif (isset($templates_array[$template_num_key-1]))
{
$next_template_num = $templates_array[$template_num_key-1];
}
break;
}
}
if (isset($_COOKIE['ab_test'])) {
if (in_array($_COOKIE['ab_test'], $templates_array)) {
$next_template_num = $_COOKIE['ab_test'];
}else{
setcookie(
"ab_test",
$next_template_num,
time() + (10 * 365 * 24 * 60 * 60)
);
writeFlag($next_template_num);
}
}else{
setcookie(
"ab_test",
$next_template_num,
time() + (10 * 365 * 24 * 60 * 60)
);
writeFlag($next_template_num);
}
include($next_template_num.'.php');