Optimisations XiTi / ATinternet / AB testing

WRInaute discret
J'ai récemment installé XiTi Analyzer II sur l'un de mes sites.
J'ai cependant été confronté à une problématique concernant l'A/B testing, le but est d'auditer plusieurs pages de landing (en rotation) ou plusieurs CSS.
J'ai donc développé un script PHP, qui peut toujours vous servir si vous avez ce type de besoin.

Le principe :
Si je suis un nouveau visiteur: je suis redirigé vers une page au hasard et je crée un cookie sur le domaine du client nommé XitiABtesting.
Si je suis déjà venu sur le site pendant la durée de vie du cookie je suis toujours redirigé vers la page que j’ai vu lors de ma première visite.
Code:
<?php
$start = "0";   // définition de ma variable de départ
$total = "3"; // définition du nombre total de variables
$random = mt_rand($start, $total);  // attribue une valeur au hasard entre $start et $total
$redirection = array ("http://www.test.com/pageA", "http://www.test.com/pageB", "http://www.test.com/pageC", "http://www.test.com/pageD");  // définition des url du test dans un array
$timestamp_expire = time() + 365*24*3600; // durée de vie du cookie 
if (isset($_COOKIE["XitiABtesting"]))   // si le cookie existe déjà
{
$redirectCookie = $_COOKIE['XitiABtesting'];  // attribue la valeur du cookie à la variable $redirectCookie
header("Status: 302 Moved", false, 302); // redirection 302 (important de ne pas passer par une 301 pour ne pas plomber la SEO)
header("Location:$redirection[$redirectCookie]"); //redirige tout le temps vers la page vue lors de la première visite en récupérant la valeur du cookie
}
Else   // si le cookie n’est pas présent
{
setcookie('XitiABtesting', $random, $timestamp_expire); // définition du cookie
header("Status: 302 Moved", false, 302);  // redirection 302 (important de ne pas passer par une 301 pour ne pas plomber la SEO)
header("Location:$redirection[$random]"); // redirige vers une page ABC ou D de façon aléatoire
exit();
}
?>


voici la même méthode pour changer uniquement le CSS (mais je ne l'ai pas testé)

Code:
<?php
$start = "0";
$total = "3";
$random = mt_rand($start, $total);
$redirection = array ("../css/css1.css", "../css/css2.css", "../css/css3.css", "../css/css4.css");
$timestamp_expire = time() + 365*24*3600;
if (isset($_COOKIE["XitiABtesting"]))
{
$redirectCookie = $_COOKIE['XitiABtesting'];
$css = $redirection[$redirectCookie];
}
else
{
setcookie('XitiABtesting', $random, $timestamp_expire);
$css = $redirection[$random];
exit();
}
?>
 
WRInaute discret
Pour finaliser cette méthode voici le script JS complémentaire de la redirection serveur décrite plus haut.
Il s'agit d'une ligne de code que vous ajoutez à votre marqueur de contenus classique.

marqueur de contenus classique
Code:
<script type="text/javascript">
<!--
xtnv = document;        //parent.document or top.document or document         
xtsd = "http://logXXXX";
xtsite = "XXXXXXX";
xtn2 = "XX";        // level 2 site 
xtpage = "XXXXXX";        //page name (with the use of :: to create chapters)
//-->
</script>

marqueur de contenus modifié
Code:
<script type="text/javascript">
<!--
xtnv = document;        //parent.document or top.document or document         
xtsd = "http://logXXXX";
xtsite = "XXXXXXX";
xtn2 = "XX";        // level 2 site 
xtpage = "XXXXXX";        //page name (with the use of :: to create chapters)
window.xtparam+="&tl=[i][Nom_du_test][/i]&tv=[i]A[Nom_de_la_page_A][/i]";
//-->
</script>

ici le nom du test ne change pas d'une version de l'objet à l'autre.
En revanche pour une version B vous devriez mettre B[Nom_de_la page_B]
 
Discussions similaires
Haut