Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/01/2013, 12h16   #1
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Par défaut Detecter navigateur et sa version

Bonjour !
Je souhaite pour mon site détecter le navigateur client et sa version grâce à PHP.
Mes connaissances étant un peu limitées dans ce domaine, j'ai trouvé après quelques recherches ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
		function browser_info($agent=null) {
 $known = array('msie', 'firefox', 'safari', 'webkit', 'opera', 'netscape',
 'konqueror', 'gecko');
 $agent = strtolower($agent? $agent: $_SERVER['HTTP_USER_AGENT']);
 $pattern = '#(?'. join('|', $known) .
 ')[/ ]+(?[0–9]+(?:\.[0–9]+)?)#';
 
 if (!preg_match_all($pattern, $agent, $matches)) return array();
 $i = count($matches['browser'])-1;
 return array($matches['browser'][$i], $matches['version'][$i]);
}
 
$res = browser_info();
print_r($res);
?>
Cela me retourne le message d'erreur :
Citation:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: unrecognized character after (? or (?- at offset 5 in C:\Users\Julien\Work\EasyPHP-5.3.9\www\Portfolio\OSdetect.php on line 9
Array ( )
Quelqu'un saurait m'expliquer le problème ? Voire même m'expliquer le fonctionnement de ce script ? Merci d'avance !
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2013, 12h55   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 467
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 467
Points : 21 274
Points : 21 274
L'expression est toute mal écrite
Code :
$pattern = '#(?P<browser>'. join('|', $known) .  ')/(?P<version>[0-9]+\.[0-9]+)#';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2013, 14h02   #3
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Merci à toi pour ton aide aussi rapide !
Ayant changé la ligne que tu m'as indiqué, voila maintenant ce que Firefox me retourne :
"Array ( ) "

...

Ça a l'air de progresser mais ce n'est toujours pas au point
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2013, 19h52   #4
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Personne ne peut m'aider ? ou pour me proposer d'autres scripts ?
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2013, 21h15   #5
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 585
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 585
Points : 6 029
Points : 6 029
Envoyer un message via Skype™ à rawsrc
Salut,

PHP le fait nativement avec get_browser() et bien plus.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/01/2013, 21h26   #6
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Merci de ta réponse !
J'avais déjà entendu parler de get_browser() mais l'histoire de php_browscap ne me semblait pas très clair ...
En fait, quand je regarde dans mon php.ini (de EasyPHP 5.3.9), je trouve :
Code :
1
2
3
[browscap]
; http://php.net/browscap
;browscap = extra/browscap.ini
Et quand je vais sur le lien que tu m'as donné, il s'agit de php_browscap.ini et non browscap.ini. C'est même précisé "Do not use with PHP!"

Où et comment dois je stipuler l'emplacement de php_browscap.ini dans php.ini ?
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2013, 22h44   #7
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 585
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 585
Points : 6 029
Points : 6 029
Envoyer un message via Skype™ à rawsrc
Salut,

il faut t'assurer qu'au moment de déployer tu auras accès au php_browscap.ini si non, tu peux toujours utiliser cette classe qui fait exactement la même chose en version entièrement autonome : ici

Une fois que tu as téléchargé php_browscap.ini, tu le loges dans le répertoire extras (par exemple) de PHP et tu décommentes dans le php.ini
Code :
browscap = extras/php_browscap.ini
Redémarre le serveur et n'oublie pas que cette directive est flaggée système et ne peut être modifiée par ini_set()
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 16h59   #8
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Merci beaucoup rawsrc ! La classe browscap marche nickel, et sans fichier externe !

Je me demandais quelque chose.. Est ce possible de faire une condition avec les valeurs que browscap retourne genre :
Code :
1
2
3
if($current_browser->Parent == "Firefox") {
...
}
et en instruction de charger un fichier CSS existant sur serveur ? Afin d'optimiser la compatibilité du site !
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 17h18   #9
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 585
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 585
Points : 6 029
Points : 6 029
Envoyer un message via Skype™ à rawsrc
Le mieux c'est que tu essayes, non ?
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 18h33   #10
Osef_
Invité de passage
 
Graphiste
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations professionnelles :
Activité : Graphiste

Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 4
Points : 4
Bien sûr j'avais déjà essayé ! Mais je n'ai trouvé que des méthodes que je ne connaissais pas comme mélanger les deux langages, PHP et CSS !
Ne trouvant rien de ce que je cherchais exactement, je me demandais si une fonction d'appel d'un fichier css (un peu comme un include) existait.
En tout cas, merci pour ton aide ! Je vais maintenant me tourner vers les ... "styles.php "
Osef_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h32.


 
 
 
 
Partenaires

Hébergement Web