כיצד לכתוב דפדפן קוד ספציפי עם PHP

פורסם ב PHP על ידי ShortLikeAFox ב 21 יולי 2008

אז אתה רוצה לכתוב קוד זה מופיע רק בדפדפנים מסוימים ... יש מספר סיבות לרצות לעשות את זה. בפעם הראשונה אני באופן אישי צריך לעשות זה קרה כשהייתי מנסה להטביע mp3 על מקור מסוים. מסיבה כלשהי לא יכולתי לכתוב את הקוד כך mp3 ישחק על הדפדפנים אני הבדיקה ב (IE, פיירפוקס, אופרה ו), וכן לאמת ב באותו זמן. אם אני זוכר נכון, זה היה ב-Internet Explorer, כי היה הגורם לבעיה. הפתרון בא לי היה להשתמש PHP הקטנה כדי לגלות כאשר המשתמש היה משתמש ב-IE, ואז להטביע את mp3 בקוד לא חוקי אם זה היה המקרה.

פתרון זה הוביל את MP3 תמיד לשחק בצורה נכונה את מקור תמיד תוקף, משום validator W3C לא מזהה את עצמה IE. זה לא יכול להיות הדרך האתית ביותר להגיע תאימות W3C, אבל זה עובד.

בפעם אחרת אני זוכרת צורך לכתוב קוד ספציפי הדפדפן כשהייתי בעיה עם IE 6 לא מציג שלי. PNG תמונות כראוי. אני בגוגל ומצאתי סביב כמה פתרונות לבעיה, אך שניהם בסופו של דבר להרוס את המיקומים שכבת הכולל בדפים שלי. במקום לפתרון הבעיה, הלכתי עם פתרון מהיר החליטו להציג. Gifs כאשר המשתמש היה IE 6. אם המשתמש היה דפדפן אחר כך היה. בעיות png הבנתי כי היה רע בשבילו.

איך עושים זאת:

ראשית, עליך לכתוב שורה קטנה של קוד כדי להבין מה בדפדפן המשתמש שלך. הנה איך לעשות את זה עם PHP:

  • 'HTTP_USER_AGENT' ]; VisitorsOS $ = $ _SERVER ['HTTP_USER_AGENT "];

להלן שלוש דוגמאות של מה $ visitorsOS יכולה להיראות

  • Mozilla/4.0 (תואם; 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 אתר

המשתמש הראשון ב-Internet Explorer 6, השני אופרה 9.51, ואת אתר שלישי.

עכשיו אנחנו יודעים פרטים יותר ממה שאנחנו באמת צריכים על המחשב של המבקר אנחנו צריכים לשים את זה מידע מועיל. נניח שאתה רוצה לכתוב קוד זה יופיע רק אם המשתמש הוא פועל בכל גירסה של Internet Explorer. במקרה זה היית עושה את זה:

('MSIE',$visitorsOS)){ אם (eregi ("MSIE", $ visitorsOS)) (

הקוד יופיע רק אם למשתמש יש אינטרנט אקספלורר

)

אחר (

הקוד יופיע בכל המקרים האחרים

)

אני משתמש eregi, מקרה ביטוי רגיל רגישות התאמה במקום ereg, מקרה ביטוי רגיש במשחק רגיל. אני לא זוכר אם אני עושה את זה מתוך פרנויה, או אם אני באמת נמצא מקרה שבו Internet Explorer זיהה את עצמו בתור msie. באחת eregi מקרה לא יזיק כלום אז זה מה שאני משתמש. רציתי לכתוב את הקוד של גרסאות ספציפיות של IE רק דורש שינוי קטן. במקום ... (eregi ("MSIE" ...) אני אשתמש משהו כזה (eregi ("MSIE 6.0 ...) אם אני רוצה קוד רק הופיע MSIE 6.0.