Fonction SEO, d’où vient mon visiteur

D’ou vient le visiteur ? Une question a laquelle beaucoup de Webmaster aimerait répondre.

Voici une petite fonction sympas pour retrouver facilement le mot clé, le moteur de recherche et la page de provenance d’un visiteur sur un site:

function analyse($ref)
{
$refe = parse_url($ref);
parse_str($refe['query'], $query);
$host = $refe['host'];

switch ($host){
//GOOGLE
case (strpos($host, '.google.') !== false):
$moteur = "Google";
$mot_cle = $query['q'];
$page = $query['start'];
if (!$page){
$page = 1;
} else {
$page = ($page / 10) + 1;
}
break;
//Yahoo
case (strpos($host, '.yahoo.') !== false):
$moteur = "Yahoo";
$mot_cle = $query['p'];
$page = $query['b'];
if (!$page){
$page = 1;
} else {
$page = (($page - 1) / 10) + 1;
}
break;
//Bing
case (strpos($host, '.bing.') !== false):
$moteur = "Bing";
$mot_cle = $query['q'];
$page = $query['first'];
if (!$page){
$page = 1;
} else {
$page = (($page - 1) / 10) + 1;
}
break;
//ALTAVISTA
case (strpos($host, '.altavista.') !== false):
$moteur = "Altavista";
$mot_cle = $query['q'];
$page = $query['stq'];
if (!$page){
$page = 1;
} else {
$page = ($page / 10) + 1;
}
break;
//LYCOS
case (strpos($host, '.lycos.') !== false):
$moteur = "Lycos";
$mot_cle = $query['query'];
$page = $query['page2'];
if (!$page){
/**
* particularité de lycos qui affiche un page2=0
* au lieu de ne rien afficher
*
*/
$page = "1";
} else {
$page = $page + 1;
}
break;
//ALLTHEWEB
case (strpos($host, '.alltheweb.') !== false):
$moteur = "All The Web";
$mot_cle = $query['q'];
$page = $query['o'];
if (!$page){
$page = 1;
} else {
$page = ($page / 10) + 1;
}
break;
}
return array(
'moteur' => stripslashes($moteur) ,
'mot' => stripslashes($mot_cle) ,
'page' => stripslashes($page)
);

}

Utilisation :

$result = analyse($_SERVER['HTTP_REFERER']);
echo $result['moteur'] . '<br />';
echo $result['mot'] . '<br />';
echo $result['page'] . '<br />';

,

5 commentaires

Où sont les Bots ?

Une petite fonction sympa pour surveiller les Bots ( save en BDD ou cloaking )

L’interêt de cette fonction et de pouvoir traiter des tableaux multiples en redéfinissant des plages d’ip éventuelles des Robots ou tout autre recherche que vous souhaiteriez traquer

/**
 * Is_bot
 * traque la présence d'un bot par plage d'ip
 *
 * @param string $ip
 * @param array $array_bots
 * @return string|false
 */

function is_bot ($ip,$array_bots) {
    $ip = strval($ip);
    $reponse = false;
    foreach($array_bots as $bot=>$val) {
	foreach($array_bots[$bot] as $ip_bot) {
	    $reponse = strpos($ip,$ip_bot);
	    if ($reponse !== FALSE) return $bot;
	}
    }
    return $reponse;
}

Utilisation:

$bots = array(
    'google' => array('216.239.46','64.68.8','66.249.','64.233.173'),
    'yahoo' => array('66.196.','68.142.','202.165.','66.142.')
);
$test = is_bot('216.239.46.654',$bots); //renverra TRUE car 216.239.46 est présent dans l'ip
if($test != FALSE) {
    //action affichage bot ou cloaking ;)
    $bot = $test;
    echo "bot présent<br/>";
    echo $bot;
} else {
    echo "pas de bot";
}

Le code vous retourne donc un true ou false avec possibilité de reprendre le nom du bot.

, ,

Pas de commentaire