Insérer une Variable javascript dans MySQL

Bonjour,
J’ai trouvé sur plusieurs sites des lignes de code qui permettent de récupérer une variable javascript dans du PHP. Le code qui revient toujours est le suivant (adapté à ma situation) :

$_NAV['NavName'] = '<script langage="javascript">var browser=navigator.appName; document.write(browser);</script>'; 

Ceci fonctionne… pour l’affichage simple du client.
c’est à dire que lors d’un affichage méchant

echo $_NAV['NavName'];

, ça me retounera “FireFox 3”. Par contre, lors de l’insertion dans ma table MySQL, ce n’est pas “FireFox 3” qui sera enregistré, mais tout le contenu des balises . Du coup, quand j’essaye d’afficher ma liste de visiteurs sur mon site, la seule valeur réaffiché à chaque ligne est toujours le même; la vertion de LEUR navigateur, et pas celle de tout les monde.

2 de ces gens se sont co d’un mac et firefox

boulets 127.0.0.1 11:15:00 2008-07-22 Microsoft Internet Explorer Win32 
boulets 132.147.162.137 11:15:00 2008-07-22 Microsoft Internet Explorer Win32 
boulets 132.147.162.137 11:15:00 2008-07-22 Microsoft Internet Explorer Win32 

Pour quer vous compreniez; voici un exemple d’enregistrement dans la colonne correspondant à “Microsoft Internet Explorer Win32” :

<script langage="javascript">var browser=navigator.appName; document.write(browser);</script>

Comment vous pourrez l’imaginer, à chaque fois que PHP trouvera cette valeur dans la table, il ordonnera l’affichage dans le navigateur du client, et ce dernier récupérera son propre info…

Configuration: Windows Vista
Firefox 3.0.1, IE7, Safari
MySQL, PHP5

Mon problème est bien évidemment d’insérer dans la base le navigateur du visiteur, et non un code js…

Logique hein. Javascript = langage client.

Et même, tu t’attendais à quoi? que le serveur analyse le script javascript? donc le browser serait le serveur, et pas ce que tu veux.

Essaye $_SERVER[“HTTP_USER_AGENT”]

C’est la même chose mais uniquement serveur.

www.toutestfacile.com…

c’est pas faux, j’avais oublié cet aspect du PHP… :sweet:
Je connaissait $_SERVER[“HTTP_USER_AGENT”] (et ça marchait), mais il renvoie plein de trucs chiantes aussi, et c’est lourd a lire, ou a trier dessus… (j’ai quand même gardé cette solution en cas d’echec…)

Mais logiquement, comme au début de ma page, je récupère la variable js et je l’affiche en php, ça marche (la var php devrai donc contenir FF3, non?). Après , je l’insère dans ma table plus loin dans la page… :peur:

Non.

PHP = langage serveur
Javascript = langage client

Plus concrètement, javascript ne peut communiquer avec php que via les variables GET, POST et les cookies.

Si tu affiche un code javascript, php ne fait que l’afficher, c’est à dire envoyer N bytes de données à ton client qui lui les interprète, et éventuellement les exécute.

Fin de l’histoire.

Si tu veux faire un truc qui marche en utilisant JS, et dans ton cas c’est le mieux, c’est d’écrire du code html pour insérer une image PHP de 1x1 pixel, qui aura des variables GET, ce qui te permettra de faire le pont entre les deux langages.

Je suis obligé d’avouer mon ignorance sur ce sujet; je ne sais pas faire ce que tu proposes… TU peux développer le code que tu proposes please?

La première ligne est tout de même plus jolie et lisible…

welcome  	127.0.0.1  	12:14:00  	2008-07-22  	Netscape V5.0 (Windows; fr)  	Win32
welcome 	127.0.0.1 	12:15:00 	2008-07-22 	Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 	

Genre, une page php:

image.php :

<?php
// crée l'image
header('Content-Type: image/gif');
$im = imagecreatetruecolor(1, 1);
imagecolortransparent($im);
imagepng($im);

// récup. des paramètres
$navName = isset($_GET['navName']) ? $_GET['navName']:null;

// insertion en base
....
?>

et pour “l’appeler”:

<script type="text/javascript">
document.write('<img src="image.php?navName=' + escape(navigator.appName) + '" alt="" width="1" height="1" />');
</script>

Inspire toi de ce qui est fait pour les codes type Xiti (pour monitorer les visites sur un site).


Note que perso je préfère l'user agent de $_SERVER["HTTP_USER_AGENT"] , car ça évite une variable GET superflue et ça permet de rendre transparent pour les visiteurs le log de leur visite.

Ok,
j’essairai ce que tu proposes.
Mais dans l’immédiat, je vais laisser ma page avec le "$_SERVER[“HTTP_USER_AGENT”] "…

Merci bien, “sans nom”…