How to Write Webbläsarevänlig särskild kod med PHP

Inlagd i php av ShortLikeAFox den 21 juli 2008

Så du vill skriva kod som endast visas i vissa webbläsare ... Det finns flera skäl att vilja göra detta. Första gången jag personligen som behövs för att göra detta inträffade när jag försökte bädda in en mp3 på en viss sida. Av någon anledning kunde jag inte skriva koden så att mp3 skulle spela på den webbläsare jag testa på (IE, Firefox och Opera) och kontrollera samtidigt. Om jag minns rätt, det var Internet Explorer som orsakar problemet. Den lösning som jag kom med var att använda lite PHP för att ta reda på när användaren använder IE och sedan bädda in mp3 i icke giltig kod om så var fallet.

Denna lösning ledde till mp3 alltid spela korrekt och sidan alltid validering, eftersom W3C Validator aldrig identifierar sig som IE. Detta kanske inte är de mest etiska sättet att nå W3C överensstämmelse, men det fungerar.

En annan gång jag kommer ihåg att behöva skriva webbläsare särskild kod när jag har ett problem med Internet Explorer 6 inte visar min. Png bilder korrekt. Jag googled runt och hittade ett par lösningar på problemet, men båda hamnade Messing upp den totala lager platser på mina sidor. Istället för att felsöka problemet gick jag med en snabb lösning och beslöt att visa. Gifs när användaren hade IE 6. Om användaren har en webbläsare som haft. Png problem jag trodde det var synd för honom.

Hur man gör det:

Först måste du skriva en liten rad i koden för att få reda på vilken webbläsare du användaren. Här är hur man gör det med PHP:

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

Här är tre exempel på vad $ visitorsOS kan se ut

  • 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

Den första användaren har Internet Explorer 6, den andra Opera 9.51, och den tredje Firefox.

Nu när vi vet mer än vi verkligen behöver om besökarens dator vi behovet av att få denna information till god användning. Säg att du vill skriva kod som visas endast om användaren kör någon version av Internet Explorer. I så fall skulle du göra detta:

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

Kod som endast visas om användaren har IE

)

else (

Kod som kommer att visas i alla andra fall

)

Jag använder eregi, en skiftlägesokänsligt vanliga uttrycket match i stället för ereg, en skiftlägeskänsliga vanligt uttryck match. Jag minns inte om jag gör detta av paranoia, eller om jag faktiskt hittat ett fall där Internet Explorer identifierade sig som MSIE. I båda fallen eregi kommer inte att skada något så det är vad jag använder. Vill skriva kod för särskilda versioner av IE skulle bara behöva en liten förändring. istället för ... (eregi ( "MSIE" ...) Jag skulle använda någonting som liknar (eregi ( "MSIE 6.0" ...) om jag ville ha kod som endast verkade för MSIE 6.0.