Le navigateur

Mammouth du PHP | 725 Messages

04 août 2012, 17:55

Bonjour,

Je recupere les informations des utilisateurs, pour des raisons statistiques, je recois ca:

Code : Tout sélectionner

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.7 (KHTML, like Gecko) RockMelt/0.16.91.483 Chrome/16.0.912.77 Safari/535.7
Quel est l'editeur utilise ici: RockMelt, Chrome ou bien Safari

Merci a vous

ViPHP
ViPHP | 4039 Messages

05 août 2012, 00:11

Je penche pour RockMelt: c'est le seul inconnu du lot, et le seul qui aurait un intérêt à intégrer les autres. Je ne vois pas mozilla ou google intégrer RockMelt dans leur UA.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 725 Messages

05 août 2012, 15:58

dans ce cas si j'ai 2 a 3 nom de navigateurs comme l'exemple ci-dessus, comment puis je assurer une bonne maitrise de mes statistiques avec preg_match + le nom du navigateur

ViPHP
ViPHP | 4039 Messages

05 août 2012, 17:19

Si tu veux prévoir tous les cas, des sites répertorient les UA:
http://www.useragentstring.com/pages/us ... string.php

Il n'y a plus qu'à prévoir une place pour chaque bot, navigateur (mobile, console, ...) , vérificateur de liens, client email, validateur, bibliothèque et autre outil naviguant sur internet.

Ou base-toi uniquement sur les navigateurs les plus répandus, ceux que tu désires suivre, et classe le reste sous "autre".
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 725 Messages

06 août 2012, 03:26

Voila j'ai presque 335 useragent dans ma table:
Showing rows 0 - 29 (335 total, Query took 0.0050 sec)
dans le cas precedent, il est mentionne 3 navigateurs, comment puis je savoir lequel etait utilise?

ViPHP
ViPHP | 4039 Messages

06 août 2012, 11:30

Il en mentionne 3 pour le UA précédent ? Lesquels ? Comment est-ce que ton script arrive à 3 solutions ? Il n'y a que rockmelt pour mentionner rockmelt dans son UA.

Il faut comparer l'entièreté du UA, pas des petits bouts (sinon, c'est clair que le cas spécifique ici va valider safari, rockmelt et chrome, puisqu'ils en font partie).
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 725 Messages

07 août 2012, 10:03

Voici mon petit bout de code:
<?php
//$browser = $_SERVER['HTTP_USER_AGENT'].'<br>';
if (preg_match('#MSIE#', $_SERVER['HTTP_USER_AGENT'])) 
{
	$browser = 'Internet Explorer';
}
elseif (preg_match('#Firefox#', $_SERVER['HTTP_USER_AGENT']))
{
	$browser = 'Firefox';
}
elseif (preg_match('#Opera#', $_SERVER['HTTP_USER_AGENT']))
{
	$browser = 'Opera';
}
elseif (preg_match('#Safari#', $_SERVER['HTTP_USER_AGENT']))
{
	$browser = 'Safari';
}
elseif (preg_match('#Netscape#', $_SERVER['HTTP_USER_AGENT']))
{
	$browser = 'Netscape';
}
else
{
	$browser = 'Unknown';
}

?>
pour l'exemple ci-dessus, il me retourne Safari, alors que c'est Rockmelt qui a ete utilise

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 août 2012, 10:24

Actuellement ton code regarde si le user agent contient la chaine "MSIE". Si oui, il s'arrête et ne va pas plus loin. Sinon, il test alors la présence de la chaine "Firefox" et s'il la trouve, là encore il s'arrête. Dans ton cas il trouve Safari en premier, et il n'a aucune raison d'aller plus loin pour te dire qu'il ne connait pas Rockmelt puisqu'il a trouvé un résultat.

Si tu veux quelque chose de précis, comme te l'a dit Berzemus, il te faut comparer entièrement le User Agent envoyé par le navigateur/utilisateur et pas regarder si un bout de celui-ci correspond à quelque chose que tu connais...

A défaut, il faut ordonner tes test du plus fin au plus large, voire de celui que tu veux comptabiliser en priorité. Si Rockmelt se présente comme Rockmelt/Safari/Chrome et puisque les 2 autres ne mentionnent par Rockmelt, il faut d'abord tester s'il s'agit de ce dernier avant de l'exclure et de vérifier s'il s'agit de Safari ou Chrome.

A noter que si c'est pour effectuer des stats sur tes visiteurs, il y a des outils particulièrement adaptés tels qu'AWStats qui peuvent analyser le fichier de log apache pour te dire quels navigateurs, quels os, l'origine des visites, ... Tu as également la solution adwords de google qui permet un suivi du trafic (je ne sais plus s'il y a les navigateurs, mais il me semble)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 725 Messages

07 août 2012, 11:45

A noter que si c'est pour effectuer des stats sur tes visiteurs, il y a des outils particulièrement adaptés tels qu'AWStats qui peuvent analyser le fichier de log apache pour te dire quels navigateurs, quels os, l'origine des visites, ... Tu as également la solution adwords de google qui permet un suivi du trafic (je ne sais plus s'il y a les navigateurs, mais il me semble)
C'est quoi le nom du log: access.log? sachant que j'ai la main sur le serveur

ViPHP
ViPHP | 2577 Messages

07 août 2012, 11:49

Les fichiers de log sont définis dans le paramétrage d'apache ainsi que le format.

Mammouth du PHP | 725 Messages

07 août 2012, 11:54

celui-ci avec chromium:

Code : Tout sélectionner

127.0.0.1 - - [07/Aug/2012:10:52:58 +0100] "GET /favicon.ico HTTP/1.1" 404 430 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19"

ViPHP
ViPHP | 2577 Messages

07 août 2012, 13:54

Tout simplement : http://php.net/manual/fr/function.get-browser.php ?

Ca donne ce genre de chose :

Code : Tout sélectionner

Array ( [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 [cssversion] => 2 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [backgroundsounds] => [vbscript] => [javascript] => 1 [javaapplets] => 1 [activexcontrols] => [cdf] => [aol] => [beta] => 1 [win16] => [crawler] => [stripper] => [wap] => [netclr] => )
Edit : Il y a un fichier à télécharger qui semble mis à jour (cf lien dans la doc : http://browsers.garykeith.com/downloads.asp)

Mammouth du PHP | 725 Messages

08 août 2012, 03:30

et cette fonction est elle sure des resultats, je vois qu'on doit toujours utiliser un preg_match

ViPHP
xTG
ViPHP | 7331 Messages

08 août 2012, 06:57

Il existe des librairies ou des webservices si tu veux un truc à jour.
C'est pas ce qui manque les scrips de stats.

ViPHP
ViPHP | 2577 Messages

08 août 2012, 09:00

et cette fonction est elle sure des resultats, je vois qu'on doit toujours utiliser un preg_match
A priori, cette fonction est mieux que ce que peut faire quelqu'un seul dans son coin. Le fichier de paramétrage semble maintenu, la version disponible est récente. La mise à jour est certainement le problème crucial puisqu'il faut régulièrement se tenir au courant des évolutions et de leur implication.
Vu la charge de travail pour cette mise à jour, je préfère me reposer sur un travail collectif, surtout que je ne pense pas qu'il y ait un grand intérêt à suivre les navigateurs utilisés par les visiteurs à par de la curiosité. De manière général, je préfère utilisé une application de statistique.