PHP detection navigateur IE6

[Résolu/Fermé]
Signaler
-
 SkouBida -
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

14 réponses

Messages postés
1219
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
15 mars 2016
187
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

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;
bonjour mais excuse moi comment je peut afficher selon le navigateur un feuille de style préférer??
> eagle83
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é ;-)

stripos() s'il vous plait car moi je récupère 'MSIE' et non pas 'msie'
Messages postés
1
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
6 septembre 2010
2
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. :)
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 :)

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 =)
Je vais essayer ca demain.
En tout cas merci et j'éspére que c'est aussi simple que ca! :D
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.
Proposes-en une autre alors !
Messages postés
1219
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
15 mars 2016
187
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
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 !"
?>
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).
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
"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.
comment différencier IE6 de IE7?
Messages postés
1219
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
15 mars 2016
187
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
>
Messages postés
1219
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
15 mars 2016

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
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 :)
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.
Messages postés
139
Date d'inscription
samedi 1 novembre 2008
Statut
Membre
Dernière intervention
13 octobre 2010
8
Salut
C cool ton up, mais au passage t'aurais pu dire comment connaitre le moteur... (en php ou/et en JS...)
+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. ;)
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.
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