Classement Google

WRInaute discret
J'utilise un script me permettant de connaître la provenance des visiteurs de mon site et notamment ceux qui sont passés par Google, avec le mot clé qui les a amené.
Qui connaît un script permettant de récupérer la position ou la page Google où se trouvait ce mot clé
Quand on fait une recherche sur Google, il affiche la page de départ mais je suis trop nul en php pour récupérer cette information
exemple :
https://www.google.fr/search?q=voyage&hl ... rt=10&sa=N

start=10 donc sur la 2ème page
merci par avance
 
WRInaute passionné
Salut

Pour savoir d'où vient le visiteur, il faut utiliser $_SERVER['HTTP_REFERER'] (ou bien $HTTP_GET_VARS['HTTP_REFERER'] si tu as un PHP antérieur à la version 4.1.0)
Ca te donnera l'url complète avec donc également la chaîne de requête (ce qui se trouve après le ?)
Il n'y a plus qu'à faire un traitement sur cette chaîne pour récupérer les différentes variables. Il y a plusieurs moyens de faire ça, par exemple avec la fonction explode() ou avec des expressions régulières.

Fred
 
WRInaute discret
George Abitbol a dit:
Salut

Pour savoir d'où vient le visiteur, il faut utiliser $_SERVER['HTTP_REFERER'] (ou bien $HTTP_GET_VARS['HTTP_REFERER'] si tu as un PHP antérieur à la version 4.1.0)
Ca te donnera l'url complète avec donc également la chaîne de requête (ce qui se trouve après le ?)
Il n'y a plus qu'à faire un traitement sur cette chaîne pour récupérer les différentes variables. Il y a plusieurs moyens de faire ça, par exemple avec la fonction explode() ou avec des expressions régulières.

Fred

Merci pout ta précision
Pas de problème pour récupérer l'adresse d'où provient mon visiteur
Par contre et comme je ne suis pas très doué en PHP je cherche comment récupérer le chiffre se trouvant, pour google, après &start=
merci
 
WRInaute passionné
Alors, d'abord, pour récupérer le QUERY_STRING, tu peux effectivement utiliser parse_url() :

Code:
$parse = parse_url($_SERVER['HTTP_REFERER']);

Ceci te renvoie un tableau contenant diverses informations sur l'url (le domaine, le chemin, etc.). L'information qui nous intéresse, c'est query, la chaine de requête :

Code:
$query = $parse['query']; // $query contient alors tout ce qui suit le point d'interrogation

Maintenant que l'on a récupéré la query, il faut la diviser suivant les & (séparateur de paramètres), puis diviser chaque nouvelle sous-chaine obtenue suivant les =, afin de séparer le paramètre et sa valeur. C'est là qu'intervient explode() :

Code:
$params = explode('&', $query); // on divise la chaine selon les &
foreach ($params as $var) {
     $temp = explode('=', $var); // on divise la chaine selon les =
     $variable[$temp[0]] = $temp[1];
}

Ce code va construire un tableau associatif, faisant correspondre à chaque paramètre sa valeur.
Par exemple, après ce traitement, un echo $variable['start'] affiche la valeur du paramètre start de l'url... Enfin, à condition qu'il existe.
Attention, car il n'y a pas que le start qui compte, il faut aussi compter avec le paramètre num (le nombre de résultats sur chaque page).

Donc par exemple, si start = 40 et que num = 20, ça veut dire que le site est compris entre la 41ème et la 60ème position.

Fred
 
WRInaute occasionnel
WebRankInfo a dit:
par contre malheureusement je ne vois aucun moyen de récupérer le rang dans la page
Logiquement c'est impossible puisque cette information n'est même pas existante sur l'url de la page de résultat de GG.
 
WRInaute discret
perti a dit:
Logiquement c'est impossible puisque cette information n'est même pas existante sur l'url de la page de résultat de GG.
Ca n'est pas vraiment impossible, suffit de parser la page ... mais c vrai que ca serait beaucoup de boulot pour finalement pas gd chose. Si tu as le referer, c deja cool, tu peux chopper la page de resultat et faire un lien dessus pour voir tranquillement si tu as amélioré ton positionnement :)
 
WRInaute discret
Classement par google

WebRankInfo a dit:
par contre malheureusement je ne vois aucun moyen de récupérer le rang dans la page

Merci à tous pour vos conseils
Pour l'instant, je ne souhaite simplementsavoir si je suis sur la 1ère page ou la 23 ème en fonction des mots clés qui m'ont apporté les visiteurs
Avant de me lancer dans la procédure de George, j'ai essayé une autre méthode

$moteur=substr($row[referer],11,6); // $row[referer] est la variable de l'url
if ($moteur="google")
{
$mot1="&start";
$mot2="&sa=";
$pos1=strpos($row[referer],$mot1);
$pos2=strpos($row[referer],$mot2);
if ($pos2-$pos1 > 0)
{
$page=substr($row[referer],$pos1+7,$pos2-$pos1-7)/10;}
else
{
$page="1";}
}
if ($moteur == "google")
{
$page=" ";}
echo "<td valign=top BGCOLOR="$color">".$page."</TD>"; // affichage de la page

Celà fonctionne bien si je ne mets pas la dernière condition qui finit par m'afficher un espace pour tout alors que je ne veux cet espace que pour les non google
Qui peut m'aider à corriger
merci
 
WRInaute passionné
C'est ton premier if qui pose problème. Lorsque tu fais if ($moteur = "google") tu ne fais pas une comparaison, tu fais une affectation. Et non seulement ton if sera toujours considéré comme true mais en plus $moteur vaudra "google", après ça.

Remplace donc ce if par if ($moteur=="google")

Fred
 
WRInaute discret
George Abitbol a dit:
C'est ton premier if qui pose problème. Lorsque tu fais if ($moteur = "google") tu ne fais pas une comparaison, tu fais une affectation. Et non seulement ton if sera toujours considéré comme true mais en plus $moteur vaudra "google", après ça.

Remplace donc ce if par if ($moteur=="google")

Fred

Merci mais çà ne va pas non plus, j'ai les même problèmes avec la dernière condition qui écrase les 2 précédentes
1ère condition : si c'est google et que le mot start est trouvé, on calcule le N° de page
2ème condition : si c'est google et qu'il n'y a pas le mot start, c'est qu'on est en page 1
3ème condition : ce n'est pas google et je ne veux rien ou un espace
merci
 
WRInaute discret
kilik a dit:
if ($moteur != "google")
{
$page=" ";}


!= pour différent
== pour égal

je crois que c'est ca le probleme

Super !!! çà marche, j'arrive à voir si je suis en 1ère page sans avoir à cliquer sur le lien.
Merci Kilik
J'avais prévenu, je ne suis pas une bête en php et je croyais que = égal et == différent
encore merci
 
WRInaute discret
de nada, je suis moi meme passé par beaucoup de difficulté dans le php, etant vraiment un novice en programmation (j'ai pas fait d'etude dans ce domaine)

m'enfin , ca fait plaisir de rendre service (quand je peux :p)

bon courage pour la suite
 
Discussions similaires
Haut