Pister le parcours du visiteur et sauvegarder dans une base MySQL

Résolu
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014 - 24 déc. 2008 à 17:14
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014 - 25 déc. 2008 à 22:04
Bonjour à toutezéatous,

Je souhaiterai pister le parcours de mes visiteurs.

L'accès à mon site se fait après authentification => j'ai l'identifiant du visiteur
Je souhaiterai intercepter le clic du visiteur sur certaines balises HTML type ou <href>.
Je pensais pouvoir mettre dans les balises concernées quelque chose dans le genre onMouseUp...

Au final, je souhaiterai insérer un enregistrement dans une table Mysql qui contiendrait les informations suivantes : id_visiteur, date_heure_clic, reference_lien.

Mais c'est là que ça se corse ;o))

Je ne sais pas comment faire pour faire communiquer l'instruction javascript (onMouseUp) et mon traitement PHP.
Le onMouseUp lance une fonction javascript... comment lui dire à javascript d'exécuter du PHP ?

J'espère avoir été assez claire !

En attendant vos réponses, je pense que vous avez des choses à faire aujourd'hui ;o)), je vous souhaite un excellent réveillon à toutezéatous avec champagne et chocolats sans modération !!

A bientôt

5 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 déc. 2008 à 16:39
Re,

Comme tu le dis, c'est une question de contexte. Si ton site contient des liens qui n'occasionnent pas un appel au serveur, comme par exemple une navigation par onglets qui seraient préchargés, le seul moyen reste l'utilisation d'Ajax.
Dans l'extrême majorité des cas le fait de cliquer sur un lien effectue une nouvelle requête au serveur, donc autant tout traiter côté php.

Toi ce que tu me proposes c'est non pas d'intercepter l'évènement onMouseUp, mais d'intercepter l'arrivée dans la page...
=> quelle différence cela fait il ? on ne récupère pas moins d'infos en faisant comme cela :o)

je ne sais pas comment javascript veut envoyer une requete SQL, ni même si c'est possible... Tu sais si c'est possible ?
=> Ajax obligatoirement

Si je prends un exemple précis :
dans la page x.php tu as le lien vers la page y

Que tu fasses :
[y.php y]

où [machin] est une fonction javascript qui appelle un script php via les XMLHTTPREQUEST en passant en paramètres l'id du lien et la page vers laquelle il pointe. Ce script enregistre ensuite les valeurs dans la table.

ou :
[y.php?id_lien=2135 y]

et puis, côté serveur, sur la page y.php :
session_start();
$id_lien = $_GET['id_lien'];
/* tu peux également ajouter le HTTP_REFERER, les valeurs envoyées en POST, etc ...) */

INSERT INTO jetracelesvisiteurs (id_visiteur, date_heure_clic,
reference_lien) VALUES ('$_SESSION['id']','date("Y-m-d H:i:s")',
'$id_lien'<var class="varname">);
</var>
Je ne vois pas où peut se trouver la différence en terme de résultat. En terme de développement et de perf par contre il y en a de sacrées !!

En ce qui concerne le onmouseup je ne vois non plus pourquoi il serait mieux que onclick. Au contraire, c'est une source certaine de bugs, on peut très bien le déclencher alors que le lien n'a pas été cliqué, et donc envoyer de fausses informations.

Cordialement,

Kohntark-
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 déc. 2008 à 18:51
Salut,

Je souhaiterai pister le parcours de mes visiteurs.
= > c'est pas bien !!! :o)

Si j'interprète "[...] sur certaines balises HTML type ou <href>" == dès qu'un visiteur clique sur un lien c'est très simple à gérer, il suffit d'insérer les données à chaque appel de page, du style :

INSERT INTO jetracelesvisiteurs (id_visiteur, date_heure_clic, reference_lien) VALUES ('$_SESSION['id']','date("Y-m-d H:i:s")', '$_SERVER['<var class="varname">REQUEST_URI']);
</var>
Maintenant si mon interprétation n'est pas bonne et que tu souhaites tracer comment le visiteur utilise sa souris il faudra passer par Ajax et les XMLHTTPREQUEST

A propos, l'utilisation de onMouseUp correspond à l'action de relachement du bouton de la souris, ce qui n'est pas la même chose qu'un clique (onclick)

Cordialement,

kohntark-
0
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014
25 déc. 2008 à 14:39
Comme on se retrouve !


Ce que je veux faire, c'est bien "pister le click" mais pas n'importe quel click dans la page (après tout, mon visiteur a de droit de faire ce qu'il veut avec sa souris ;o)). L'idée est de pouvoir analyser finement par la suite pour chaque
visiteur quels sont les liens qu'il a cliqués pour en déduire ses
centres d'intérêt. Dans la plupart des softs c'est le onMouseUp qui déclenche l'action... Si "les grands" font ça, je suppose qu'il doit y avoir une raison, voire même qu'ils y ont réfléchi avant... Sans aucune originalité de ma part, je voudrais faire comme eux ;o)) d'où mon idée d'intercepter l'évènement au niveau de la balise html (à la source)...

Toi ce que tu me proposes c'est non pas d'intercepter l'évènement onMouseUp, mais d'intercepter l'arrivée dans la page... Je crains qu'avec cette solution, l'information récupérée soit un peu trop "macro" pour ce que je souhaite faire... Par ailleurs, ce que je vois dans un premier temps c'est que dans $_SERVER['<var class="varname">REQUEST_URI']</var><var class="varname"></var><var class="varname"></var>
je vais récupérer tous les $_GET


<var class="varname">
</var>
qu'il faudra que j'interpréte par la suite pour connaitre la demande effectuée en amont, alors qu'en interceptant le click à la source, je pourrais "normaliser" les liens et envoyer comme paramètre l'identifiant du lien à une fonction qui ferait l'insertion dans Mysql...
Tout ça me semble "conceptuellement" très simple (mais n'oublions pas que je ne suis qu'une fille ;o) En revanche, lorsqu'il s'agit de passer à la réalisation, je ne sais pas comment javascript veut envoyer une requete SQL, ni même si c'est possible... Tu sais si c'est possible ?

Peut-être qu'il faudrait passer par Ajax... mais Ajax, c'est comme mon niveau d'anglais ;o)




Sinon il faudra que j'adopte ta solution... En attendant, je vais réfléchir à la mise en place de ta solution voir si elle pourrait convenir dans mon contexte.

Merci pour cette réponse et à bientôt.
0
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014
25 déc. 2008 à 14:39
Comme on se retrouve !


Ce que je veux faire, c'est bien "pister le click" mais pas n'importe quel click dans la page (après tout, mon visiteur a de droit de faire ce qu'il veut avec sa souris ;o)). L'idée est de pouvoir analyser finement par la suite pour chaque
visiteur quels sont les liens qu'il a cliqués pour en déduire ses
centres d'intérêt. Dans la plupart des softs c'est le onMouseUp qui déclenche l'action... Si "les grands" font ça, je suppose qu'il doit y avoir une raison, voire même qu'ils y ont réfléchi avant... Sans aucune originalité de ma part, je voudrais faire comme eux ;o)) d'où mon idée d'intercepter l'évènement au niveau de la balise html (à la source)...

Toi ce que tu me proposes c'est non pas d'intercepter l'évènement onMouseUp, mais d'intercepter l'arrivée dans la page... Je crains qu'avec cette solution, l'information récupérée soit un peu trop "macro" pour ce que je souhaite faire... Par ailleurs, ce que je vois dans un premier temps c'est que dans $_SERVER['<var class="varname">REQUEST_URI']</var><var class="varname"></var><var class="varname"></var>
je vais récupérer tous les $_GET


<var class="varname">
</var>
qu'il faudra que j'interpréte par la suite pour connaitre la demande effectuée en amont, alors qu'en interceptant le click à la source, je pourrais "normaliser" les liens et envoyer comme paramètre l'identifiant du lien à une fonction qui ferait l'insertion dans Mysql...
Tout ça me semble "conceptuellement" très simple (mais n'oublions pas que je ne suis qu'une fille ;o) En revanche, lorsqu'il s'agit de passer à la réalisation, je ne sais pas comment javascript veut envoyer une requete SQL, ni même si c'est possible... Tu sais si c'est possible ?

Peut-être qu'il faudrait passer par Ajax... mais Ajax, c'est comme mon niveau d'anglais ;o)




Sinon il faudra que j'adopte ta solution... En attendant, je vais réfléchir à la mise en place de ta solution voir si elle pourrait convenir dans mon contexte.

Merci pour cette réponse et à bientôt.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014
25 déc. 2008 à 22:04
Merci pour ta réponse...

Après réflexion (si, si ça m'arrive aussi.. pas souvent, mais ça m'arrive ;o)) je crois que tu as raison !

Le plus simple va être de concevoir mon appli ce cette façon là : intercepter l'arrivée sur la page plutôt que l'appel de la page...

Quant au mouseMachin, c'était juste intuitif, tu sais, le truc de filles ;o)

C'est vrai que lorsque l'on réfléchit tout seul, on tourne vite en rond, alors qu'un avis extérieur, de surcroît pertinent (si, si, je parle de toi ;o)) ça fait toujours avancer le chimili-glubs-truc. ça y est, on a encore  -1 sur notre crédit d'échanges .

Bon et bien j'essaie de mettre ça en place et je reviendrai si je galère de trop...

Encore un grand MERCI et à bientôt !!
0
Rejoignez-nous