Hvordan skrive nettleser-spesifikk kode med PHP
Så du ønsker å skrive kode som bare vises på enkelte nettlesere ... Det er flere grunner til å ønske å gjøre dette. Første gang jeg selv trengte å gjøre dette skjedde da jeg prøvde å legge ned en mp3 på en bestemt side. Av en eller annen grunn fikk jeg ikke skrive koden slik at mp3 ville spille på nettlesere jeg teste på (IE, Firefox og Opera), og validere på samme tid. Hvis jeg husker riktig, var det Internet Explorer som var årsak til problemet. Løsningen jeg kom opp med var å bruke litt PHP for å finne ut når brukeren bruker IE, og så legge ned i mp3 i ikke-gyldig kode hvis det var tilfelle.
Denne løsningen førte til mp3 spiller alltid riktig, og siden alltid validere, fordi W3C validator aldri identifiserer seg som IE. Dette kunne ikke være det mest etisk måte å nå W3C etterlevelse, men det fungerer.
En annen gang jeg husker å måtte skrive nettleser-spesifikk kode er når jeg hadde et problem med IE 6 ikke vis mine. PNG-bilder på riktig måte. Jeg googled rundt og funnet et par løsninger på problemet, men begge endte opp med å rote til det totale lag steder på sidene mine. I stedet for feilsøking som problem, gikk jeg med den raske løsningen, og bestemte seg for å vise GIF-filer. Når brukeren har IE 6. Hvis brukeren har en annen nettleser som hadde. PNG problemer jeg skjønte at var for dårlig for ham.
Hvordan gjøre det:
Først må du skrive en liten linje med kode for å finne ut hva din nettleser brukeren har. Her er hvordan du gjør det med PHP:
- 'HTTP_USER_AGENT' ]; $ VisitorsOS = $ _SERVER ['HTTP_USER_AGENT'];
Her er tre eksempler på hva $ 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ørste brukeren har Internet Explorer 6, den andre 9,51 Opera, og den tredje Firefox.
Nå som vi vet mer informasjon enn vi egentlig trenger om besøkendes datamaskin må vi legge denne informasjonen til god bruk. Si du ønsker å skrive kode som bare vises hvis brukeren kjører en versjon av Internet Explorer. I så fall vil du gjøre dette:
('MSIE',$visitorsOS)){ if (eregi ('MSIE', visitorsOS $)) (
Kode som bare vises hvis brukeren har IE
)
else (
Kode som vises i alle andre tilfeller
)
Jeg bruker eregi, en sak ufølsom regulært uttrykk kamp i stedet for ereg, en sak sensitiv vanlig uttrykk kamp. Jeg husker ikke om jeg gjør dette ut av paranoia, eller om jeg faktisk funnet en sak der Internet Explorer identifisert seg som MSIE. I begge tilfeller eregi skader det ikke slik at det er hva jeg bruker. Ønsker å skrive koden for spesifikke versjoner av IE vil bare kreve en liten endring. i stedet for ... (eregi ('MSIE' ...) Jeg ville bruke noe sånt som (eregi ('MSIE 6.0' ...) om jeg ville kode som bare dukket opp for MSIE 6.0.








































