PHP detection navigateur IE6

Résolu/Fermé
sisi - 16 mai 2008 à 21:50
 SkouBida - 14 nov. 2011 à 18:18
Bonjour,

Voilà je souhaiterai à l'aide du php detecter le navigateur IE6 afin de pourvoir suprimer un code php ne fonctionant pas sous cette version.
Est ce que une variable serveur existe pour ca?
Si oui laquel?

Merci
A voir également:

14 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
16 mai 2008 à 21:54
bonsoir,

sur mon site, j'affiche le navigateur utilisé par le code suivant:
<?php

if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== FALSE ) { echo " Firefox"; }
elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) !== FALSE ) { echo " Opera"; }
elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Safari' ) !== FALSE ) { echo "Safari"; }
elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== FALSE ) { echo "Internet Explorer"; }
else { echo "navigateur non reconnu"; }
	
?>

bonne soirée
24
Slt,


if (strpos($_SERVER['HTTP_USER_AGENT'], 'msie') !== false)
{
if (intval(substr($_SERVER['HTTP_USER_AGENT'], strpos($_SERVER['HTTP_USER_AGENT'], 'msie')+5)) > 6) $ie_version = 'Version IE > 6';
else $ie_version = 'Version IE <= 6';
}
echo $ie_version;
3
bonjour mais excuse moi comment je peut afficher selon le navigateur un feuille de style préférer??
0
SPX > eagle83
27 juil. 2009 à 23:56
Bonjour eagle.
Si j'ia bien compris, tu veux tout simplement changer le css d'une page par rapport au navigateur ?
Si c'est le cas, voici comment faire:
<?php
if(firefox est utilisé)
{?>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="firefox.css" />
<?php
}?>
elseif...

Voilà ! j'espère t'avoir aidé ;-)
0
accion mutante
16 mars 2010 à 15:38
stripos() s'il vous plait car moi je récupère 'MSIE' et non pas 'msie'
0
Nyromancer Messages postés 1 Date d'inscription lundi 6 septembre 2010 Statut Membre Dernière intervention 6 septembre 2010 2
Modifié par Nyromancer le 6/09/2010 à 11:54
Excellente solution gus !! Chapeau bas pour l'idee. :)
Au passage pour SPX :
Non on ne peut pas a ma connaissance ecrire un if (condition) {}.
En realite il faut faire un echo qui ecrira dans le html de la page (principe du php), tel que :

<HEAD><?php 
  
//on test si le navigateur est ie  
if (stripos($_SERVER['HTTP_USER_AGENT'], "msie"))  
{  

//on test si le navigateur est ie6 ou une version anterieure (oula xD)  
if (intval(substr($_SERVER['HTTP_USER_AGENT'], stripos($_SERVER['HTTP_USER_AGENT'], "msie")+5)) > 6)  
{  
echo "<link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" title=\"Design\" href=\"ie6.css\" />".PHP_EOL;  
}  
else   //sinon on charge le css pour les versions 7 ou plus de ie  
{  
echo "<link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" title=\"Design\" href=\"ie.css\" />".PHP_EOL;  
}  

}  
else   //sinon on charge le css pour les autres navigateurs moins chi**** que ie  
{  
echo "<link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" title=\"Design\" href=\"style.css\" />".PHP_EOL;  
} 

?></HEAD>


On remarquera les "stripos" que je prefere lorsqu'il suffit juste de matcher un nom et que la casse ne compte pas (ca evite les "MISE" de accion mutante par exemple).
On remarquera egalement les "PHP_EOL" qui, je trouve, font plus propre en rajoutant un saut de ligne normalise apres le "link". Et aussi les \" pour que les " soient AFFICHES et non traites par php.

J'espere avoir aide certains par ce post car moi ca m'a aide le post de gus. :)
2
Bonjour, ce que tu appel les \ sont des backslash soit dit en php des "echap" il te permettent effectivement de ne pas interpréter certain caractère pour le php, à savoir 2 chose si tu écrit :

$toto = "machin";
print "$toto";
// cela te retournera machin

print '$toto';
// la tu obtiendra $toto

il faut connaitre cette différence entre la simple et la double quote, de plus si tu fait:
print 'ceci est une string qui retourne "$toto"';
// tu aura ceci est une string qui retourne machin

pour en revenir au baskslash ils sont souvent utilisé dans le cadre de l'insertion html via le php, le fait d'utiliser des simple ou double quote à toute sont importance, je m'éxplique si tu fait :

print "<a href=\"le lien.tld\" title=\"titre lien\">lien</a>";
// tu aura un beau lien en html et en fesant
print '<a href="le lien.tld" title="titre lien">lien</a>';
// tu obtiendra exactement le même résultat

les backslash ne sont utile uniquement lorsque les quote de départ et de fin sont les même utiliser dans la chaine de caractère.

Voila j'espère en avoir aider plus d'un, certe remonter un vieux poste n'est pas top, mais tous le monde à le droit de se tenir informer :)
0
NéoMan'sLand
17 nov. 2010 à 09:26
Salut et merci à tous pour vos contributions.

Je tiens néanmoins à noter que chez moi le coup de la détection de la version d'IE a marché à l'envers. Voici un bout de code testé sur IE Tester (versions 5.5 à 8), Chrome et Firefox, et tout marche très bien en local :

if (stripos($_SERVER['HTTP_USER_AGENT'],'msie'))
{
if (stripos($_SERVER['HTTP_USER_AGENT'],'msie 7'))
{
echo 'IE7 <br />';
}
elseif (intval(substr($_SERVER['HTTP_USER_AGENT'], stripos($_SERVER['HTTP_USER_AGENT'], "msie")+5)) <= 6) {
echo 'IE6 ou inférieur';
} else {
echo 'IE8 ou supérieur <br />';
}
}
elseif (stripos($_SERVER['HTTP_USER_AGENT'],'chrome')) {
echo 'Chrome';
}
elseif (stripos($_SERVER['HTTP_USER_AGENT'],'firefox'))
{
echo 'Firefox';
}
//(...continuer pour identifier d'autres navigateurs)

Par contre, si on met ça dans le head pour inclure des feuilles de style (i.e. faire un grand echo avec plein de html dedans), perso je préfère faire comme suit :

<?php if (condition): ?>
<link type="text/css" href="path_to/mon_css.css" rel="stylesheet" />
<?php elseif (condition): ?>
<link type="text/css" href="path_to/mon_css.css" rel="stylesheet" />
<?php endif; ?>

Ca permet à l'IDE de reconnaître le code et de le colorer comme il se doit, du coup c'est plus facile pour nous, etc... enfin bref : ce n'est qu'une question de gout : les deux solutions marchent, c'est comme on veut =)
0
Je vais essayer ca demain.
En tout cas merci et j'éspére que c'est aussi simple que ca! :D
0

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

Posez votre question
Sauf que maintnant, il y a IE 8, donc il faut rajouter

elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8' ) !== FALSE ) { echo "Internet Explorer V8"; }
Et il faudra ensuite le faire pour IE 9, etc...

Méthode bancale.
0
Proposes-en une autre alors !
0
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
13 nov. 2009 à 14:36
bonjour,
pour répondre a ta question !== https://www.php.net/manual/fr/language.operators.comparison.php
et c'est strops() qui indique d'utiliser === https://www.php.net/manual/fr/function.strpos.php
bonne journée
0
Désoler de REmonter le post, depuis le temps la réponse à du être trouver mais pour ceux qui se pose toujours la question la différence entre "!=" ou "==" et "!==" ou "===" est là :

!= veut dire est différent de == est égal à mais !== ou === veut dire est strictement différent de ou strictement égal à, ce qui veut dire qu'il vérifie la valeur ET le type de la valeur c'est à dire :

<?php
$titi = 0,1;
$toto = "0,1";

// si tu fait le résultat sera égal a TRUE
if($titi == $toto)
print "bravo !";

// hors si tu fait le résultat sera à FALSE car le type est différent $titi est numérique et $toto est une string !
if($titi === $toto)
print "bravo !"
?>
0
Pour te faciliter la tâche, étant donnée que tous les navigateur sauf IE sont relativement égaux niveau technologie, tu peut faire :

if(!strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8' ) !== TRUE) { condition }

remarque juste le ! devant strpos, en gros et tous simplement tu vérifie que le navigateur N'EST PAS IE alors tu fait ce que tu souhaite.

*(PS: pour le booléen je ne suis pas sur je l'ai écrit rapidement avant de retourner bosser, donc a tester. Sinon mettre FALSE).
0
Et j'oubliai, étant donnée que je suppose que c'est pour de la CSS, au lieu de te prendre la tête à faire un script puis créer les page de style différente pour les navigateurs ... sache juste que la seul différence entre les navigateur est les tailles par défaut (margin et padding).

Tu peut donc tous simplement utiliser :
* { margin: 0; padding: 0; }

pour remettre à zero toute ces valleur, dans le cas ou tu est encore blocker, penche toi du coter des hack css, très éfficace et généralement tu n'as que 2 ou 3 valleur à modifier

du genre pour IE6 tu peut faire:

* html #id { color: red; }
cette propriété ne sera valide que sous IE6 il en éxiste d'autre renseigne toi

et bon courage pour tes projet ^^ un peu de soutient ne fais jamais de mal
0
"Voilà je souhaiterai à l'aide du php detecter le navigateur IE6 afin de pourvoir suprimer un code php ne fonctionant pas sous cette version. "

Le PHP est généré par le serveur. Donc peut importe la version des navigateurs des utilisateurs.
0
comment différencier IE6 de IE7?
-1
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
16 mai 2008 à 22:20
IE7
elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7' ) !== FALSE ) { echo "Internet Explorer V7"; }
IE6
elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6' ) !== FALSE ) { echo "Internet Explorer V6"; }

Bonne soirée
0
dens37 > Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016
2 févr. 2009 à 20:13
Bonjour,
Merci beaucoup !
si tu savais comme tu m'enlèves une épine du pied!
@+ dens37
"ils ne savaient pas que c’étaient impossible, alors ils l’ont fait."
http://mairie.reugny37.free.fr
0
Désolé du up d'un an mais quand je lis tout ça je rigole bien, ce qu'il faut checker c'est pas le navigateur mais le moteur qu'il utilise...

Chrome, safari utilisent AppleWebKit
Firefox utilise Gecko
Opera utilise Presto
IE utilise Trident

Si c'est pas un de ceux là tu vires le visiteur, y a de fortes chances que ça soit un bot, si c'est un de ceux là tu appelles tes fichiers css dans le dossier du nom du moteur.

Faut savoir que selon le moteur ya un rendu différent, mais pour safari et chrome c'est le même affichage, c'est stupide de checker le navigateur, autant checker le moteur c'est plus simple à gérer.

Au moins si firefox opte pour Trident (oui je craque pour l'exemple xd) ça ira prendre directement les feuilles css de trident sans avoir a te prendre la tête a tout refaire :)

Vouala, c'est on avis, c'est peut être pas la meilleure solution mais elle a le mérite d'être meilleure que celle qui à été suggéré plus haut :)
-1
Moi aussi je rigole bien : (..) le navigateur IE6 afin de pourvoir suprimer un code php ne fonctionant pas sous cette version(..)

PHP est executé sur le serveur et non sur le navigateur.
0
OConell Messages postés 139 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 13 octobre 2010 8
30 juil. 2010 à 14:32
Salut
C cool ton up, mais au passage t'aurais pu dire comment connaitre le moteur... (en php ou/et en JS...)
0
+1 OConell. Mais y faut avouer que c'est tout bete. ^^
if (stripos($_SERVER['HTTP_USER_AGENT'], "trident"))
echo "trident<br/>";

Pour tester pour le moteur d'IE
Ce qui revient au MEME puisqu'on pioche le type du moteur dans la MEME variable que pour le navigateur. Donc au final, c'est reculer pour...mal sauter, vu qu'on recupere pas la version du navigateur tres aisement avec cette methode. Et heuuu cool y'a UN moteur qui est utiliser par DEUX navigateurs.... Donc rigoler la-dessus...ca ME fait rire, c'est vraiment histoire d'etre sarcastique comme Redmine.

Apres il est possible qu'il y ait une autre solution que je connais pas, je ne suis pas expert dans le domaine loin de la. ;)
0
Bonjour,
sur le code qu'a proposé Nico ça veut dire quoi "!==", de plus en php (différent de) s'écrit avec un seul signe d'égalité ie "!=".
en fait je voulais faire sur mon site:
si c'est != ie6 afficher les ombres (PNG avec transparence).
est-ce possible ? et merci pour vos réponses.
-2
Alors non nightmare, les 2 s'ecrivent et ont leur utilite. "!=" signifie "different de" et "!==" signifie "STRICTEMENT different de", c'est a dire que la valeur ET le type de valeur sont differents, ainsi
if (0 != FALSE) echo "rien";
else echo "qque chose";

affichera "qquechose", en revanche
if (0 !== FALSE) echo "rien";
else echo "qque chose";

affichera "rien".
Va te renseigner un minimum sur internet avant de poster une reponse comme ca.
P.S.: OUI je suis a la bourre d'un an, ET ALORS ? xD
0