Comment écrire du code avec les navigateurs spécifiques PHP

Posté dans PHP par ShortLikeAFox sur Juillet 21, 2008

Donc, vous voulez écrire du code qui ne s'affiche que sur certains navigateurs ... Il ya un certain nombre de raisons de vouloir le faire. La première fois que j'ai personnellement besoin de faire cela s'est produit lorsque je tente d'incorporer un mp3 sur une page. Pour une raison quelconque, je ne pouvais pas écrire le code de sorte que le mp3 se jouer sur les navigateurs, je test sur (IE, Firefox et Opera), et de valider en même temps. Si je me souviens bien, c'était Internet Explorer qui a été la cause du problème. La solution m'est venue à l'est d'utiliser un peu de PHP pour savoir quand l'utilisateur en utilisant IE, puis incorporer le mp3 non valide que si le code a été le cas.

Cette solution conduit à la lecture de mp3 toujours correctement et toujours la validation de la page, parce que le validateur W3C ne s'identifie comme IE. Ce n'est peut-être pas la plus éthique d'atteindre la conformité W3C, mais ça marche.

Une autre fois, je me souviens avoir à écrire de code spécifique du navigateur, c'est quand j'ai eu un problème avec IE 6 ne pas afficher mes. Png images correctement. Je googled environ, et a trouvé un couple de solutions au problème, mais deux d'entre eux a fini par gâcher la couche d'endroits sur mes pages. Au lieu de dépannage de ce problème, je suis allé à la solution rapide et décidé à afficher. Gifs lorsque l'utilisateur a IE 6. Si l'utilisateur a un autre navigateur qui avait. Png, j'ai des problèmes qui a été trop mauvais pour lui.

Comment faire:

Vous devez d'abord écrire une petite ligne de code pour comprendre ce que votre navigateur utilisateur. Voici comment le faire avec PHP:

  • 'HTTP_USER_AGENT' ]; visitorsOS $ = $ _SERVER [ 'HTTP_USER_AGENT'];

Voici trois exemples de ce que $ visitorsOS peuvent ressembler à

  • Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;. NET CLR 1.0.3705;. NET
  • Opera/9.51 (Windows NT 5.1; U; pl)
  • Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9) Gecko/2008052906 Firefox

Le premier utilisateur d'Internet Explorer 6, Opera 9.51 de la deuxième et la troisième Firefox.

Maintenant que nous savons que plus d'informations que nous avons réellement besoin, sur l'ordinateur du visiteur dont nous avons besoin de mettre cette information à la bonne utilisation. Disons que vous voulez écrire du code qui ne s'affiche que si l'utilisateur exécute une version de Internet Explorer. Dans ce cas, vous devez faire ceci:

(’MSIE’,$visitorsOS)){ if (eregi ( "MSIE", $ visitorsOS)) (

Code qui ne s'affiche que si UTILISATEUR A IE

)

else (

CODE QUI APPARAISSENT DANS LES AUTRES CAS

)

Eregi-je utiliser une expression régulière insensible à la casse au lieu de ereg match, une affaire délicate expression régulière match. Je ne me souviens pas si je le fais de la paranoïa, ou si j'ai effectivement trouvé un cas où Internet Explorer lui-même identifié comme msie. Dans les deux cas eregi ne fait pas mal et il est donc tout ce que j'utilise. Vouloir écrire le code pour les versions d'IE ne nécessiterait qu'une faible variation. au lieu de ... (eregi ( "MSIE" ...) Je voudrais utiliser quelque chose comme (eregi ( "MSIE 6.0" ...) si je voulais que le code ne semble pour MSIE 6.0.