PHP-Browserweiche anpassen
michel gelin
- php
Hallo zusammen,
ich habe mir bei http://www./article.php?aid=&pid=0 das folgende Script zur Browser-Detection heruntegeladen:
<?php
/**
* $browser will contain one of the following values:
* 'iewin' : IE 4+ for Windows
* 'iemac' : IE 4 for Macintosh
* 'ie5mac' : IE 5 Macintosh
* 'nswin' : Netscape 4.x Windows
* 'nsunix' : Netscape 4.x Unix
* 'nsmac' : Netscape 4.x Mac
* 'ns6' : Netscape 6 / Mozilla
*/
function inAgent($agent) {
global $HTTP_USER_AGENT;
$notAgent = strpos($HTTP_USER_AGENT,$agent) === false;
return !$notAgent;
}
/* Abfangen aller Microsoft-IE Browser egal welche Platform */
if ( inAgent('MSIE 4') or inAgent('MSIE 5') ) {
if ( inAgent('Mac') )
$browser = inAgent('MSIE 5') ? 'ie5mac' : 'ie4mac';
elseif ( inAgent('Win') ) $browser = 'iewin';
}
/* Abfangen von Netscape / Mozilla */
elseif ( !inAgent('MSIE') ) {
if ( inAgent('Mozilla/5') or inAgent('Mozilla/6') ) {
$browser = 'ns6';
} elseif ( inAgent('Mozilla/4') ) {
if ( inAgent('Mac') ) $browser = 'nsmac';
elseif ( inAgent('Win') ) $browser = 'nswin';
else $browser = 'nsunix';
}
} else $browser = "unknown";
?>
Dieses erkennt mir aber den IE 6 nicht, also wollte ich dies anpassen, jedoch verstehe ich die folgende Zeile nicht:
$browser = inAgent('MSIE 5') ? 'ie5mac' : 'ie4mac'
Dieser Syntax sagt mir einfach nichts.
Naja, ich habe dann diese Zeilen eingefügt, aber ohne Erfolg:
if ( inAgent('MSIE 4') or inAgent('MSIE 5') or inAgent('MSIE 6')) {
if ( inAgent('Mac') )
$browser = inAgent('MSIE 5') ? 'ie5mac' : 'ie4mac' : 'ie6mac' ;
elseif ( inAgent('Win') ) $browser = 'iewin';
}
-> Habe einfach analog der 4-er und 5-er Version ergänzt.
Kann mir vielleicht jemand von Euch sagen wie ich das Script richtig ergänze.
Bin Euch dankbar für Inputs!
Gruss & schönen Abend
michel gelin
Hi
ich habe mir bei http://www./article.php?aid=&pid=0 das folgende Script zur Browser-Detection heruntegeladen:
das scheint schon etwas älter zu sein. Und findet auch nur MSIE und Netscape Browser! Kein Opera, Konquerer, Mozilla... und was es noch so alles gibt...
Dieses erkennt mir aber den IE 6 nicht, also wollte ich dies anpassen, jedoch verstehe ich die folgende Zeile nicht:
$browser = inAgent('MSIE 5') ? 'ie5mac' : 'ie4mac'
Das ist ein Abkürzung für eine if-else-Bedingung. Es ist das selbe wie:
if(inAgent('MSIE 5')
$browser = 'ie5mac';
else
$browser = 'ie4mac';
-->
$var = (bedingung) ? wert1 : wert2;
wenn bedingung wahr ist, dann wird wert1 $var zugewiesen, anderfalls wert2.
if ( inAgent('MSIE 4') or inAgent('MSIE 5') or inAgent('MSIE 6'))
sieht in meinen Augen ganz ok aus. Aber da für die Windows-IEs nicht zwischen den Versionen unterschieden wird, kannste auch nur nach MSIE 4 und 5 abfragen bzw nur MSIE.
if ( inAgent('Mac') )
$browser = inAgent('MSIE 5') ? 'ie5mac' : 'ie4mac' : 'ie6mac' ;
hier wird es krachen! 2 mal der Doppelpunkt ist nicht erlaubt, außer du machst auch 2 Fragezeichen. also in die else-Bedingung, noch mal einen ganzen if-else-Block.
Außerdem gibt es für den Mac, soweit ich weiß (noch) keinen MSIE 6.
Gruß
Christian
Hi,
Danke für Deine Erklärung betr. Syntax.
das scheint schon etwas älter zu sein. Und findet auch nur MSIE und Netscape Browser! Kein Opera, Konquerer, Mozilla... und was es noch so alles gibt...
ja... ich weiss - Aber ich brauche das Script ja eh nur proforma ;-)
Es sieht zumindest auch einigermassen ergänzbar aus, wenn es denn sein müsste!
Gruss
michel gelin