 I love VIC |
Bonjour, J'aimerais récupérer dans ma base de données les mots qu'ont utilisé les internautes pour accéder à mon site.
J'ai donc fait un table, avec trois champs : id, la page, mot clef
Voici le script que j'ai écrit :
$referer = $_SERVER['HTTP_REFERER'];
if (!empty($referer)){
$url = $referer;
$url = trim($url);
$url = ereg_replace("http://", "", $url);
$url = ereg_replace("www.", "", $url);
$url=split("/",$url);
if($url[0]=='google.com'){
$s = stristr($referer, "q=");
$pos = strpos($s, "&");
$key = substr($s, 0, $pos);
$page = $_GET['id'];
mysql_query("INSERT INTO spykey VALUES('','$page','$key')");
}
}
Le problème c'est que je me retrouve avec ça dans ma table : q=site%20...+fdfg+gsfg
J'aimerais pouvoir voir dans ma table les mots clefs tels qu'ils ont été écrits. Avez vous une idée ?
J'ai écrit ce script en plusieurs jours mais la je commence à sécher. Ca ne marche plus :(
Merci d'avance.
PS : si vous avez une idée pour récupérer les mots clefs sur Yahoo et d'autres moteurs de recherche, ça serait bien. Et pourquoi pas l'ajouter sur le site après... :) -- Je vous aiderai dans la mesure du possible ;) |
 Admin |
Salut,
utilise la fonction url_decode() pour pouvoir récupérer les mots tels qu'ils ont été entrés. Par contre les eregs sont très vilains.
<?php
if (isset($_GET['id'], $_SERVER['HTTP_REFERER']) AND !empty($_SERVER['HTTP_REFERER']))
{
$url = explode('/', str_replace(array('http://', 'www.'), '', trim($_SERVER['HTTP_REFERER'])));
if($url[0] === 'google.com')
{
$key = substr(stristr($referer, 'q='), 0, strpos($s, '&'));
mysql_query('INSERT INTO spykey VALUES("","'.$_GET['id'].'","'.$key.'")');
}
}
?>
-- 
|
 I love VIC |
Salut Anthony.
J'ai un petit soucis. Ton code est parfait (car 15x plus court).
Cependant, la ligne suivante :
$key = substr(stristr($referer, 'q='), 0, strpos($s, '&'));
Ne renvoie rien. Quand je vais un
echo $key;
il n'y a rien qui s'affiche. J'ai donc repris ce que j'avais codé auparavant en ajouter quelques trucs.
Ca donne ça :
if (isset($_SERVER['HTTP_REFERER']) AND !empty($_SERVER['HTTP_REFERER']))
{
$url = explode('/', str_replace(array('http://', 'www.'), '', trim($_SERVER['HTTP_REFERER'])));
switch ($url[0]){
case 'google.com':
case 'google.fr':
case 'google.be':
$s = stristr($referer, "q=");
$pos = strpos($s, "&");
$key = substr($s, 0, $pos);
$key = urldecode($key);
$key = str_replace("+"," ",$key);
$key = str_replace("site:","",$key);
$key = str_replace("www", "", $key);
$key = str_replace("q=", "", $key);
$key = str_replace("-", "", $key);
$key = str_replace(".", "", $key);
$key = str_replace("com", "", $key);
$key = trim($key);
mysql_query('INSERT INTO spykey VALUES("","'.$_SERVER['HTTP_REFERER'].'","'.$key.'")');
break;
}
}
As tu une solution ? Merci. -- Je vous aiderai dans la mesure du possible ;) |