Browser erkennen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
agent
all
ausgangspunkt
bekannte browser
browser
code
genauere antwort
http
internet
komplett vergessen
ofen
opus
problem
safari
sucher
unbekannter browser
unterscheidung
url
vergessen
voreinstellung
-
Hallo LC,
Ich habe einen script um Browser zu erkennen:
if(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'MSIE')){ $browser = "Internet Explorer"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Firefox')){ $browser = "Firefox"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Opera')){ $browser = "Opera"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Safari')){ $browser = "Safari"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Chrome')){ $browser = "Chrome"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Konqueror')){ $browser = "Konqueror"; }else{ $browser = "Unbekannter Browser"; }
Aber irgendwie wird Google Chrome als Safari anerkannt. Wie kann man mein Problem lösen. Und habe ich noch bekannte Browser vergessen?
HELP
Chrissi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Diese Methode wird ein Schuss in den Ofen. Manche Browser schreiben den Namen eines anderen Browsers in diese "Beschreibung".
-
Schonmal PHPs get_browser versucht?
Übrigens: nimm die ganzen mysql_escape_string()s raus, die sind an der Stelle absolut unnötig.
Und damit du auch mal was lernst: Codestil! Desto kürzer und einfacher der Code, desto besser.
Aus:
if(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'MSIE')){ $browser = "Internet Explorer"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Firefox')){ $browser = "Firefox"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Opera')){ $browser = "Opera"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Safari')){ $browser = "Safari"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Chrome')){ $browser = "Chrome"; }elseif(stristr(mysql_escape_string($_SERVER['HTTP_USER_AGENT']), 'Konqueror')){ $browser = "Konqueror"; }else{ $browser = "Unbekannter Browser"; }
Wird:
$userAgents = array( 'MSIE' => 'Internet Explorer', 'Firefox' => 'Firefox', 'Opera' => 'Opera', 'Safari' => 'Safari', 'Chrome' => 'Chrome', 'Konqueror' => 'Konqueror', ); foreach ($userAgents as $pattern => $userAgent) { if (false !== strpos($_SERVER['HTTP_USER_AGENT'], $userAgent)) { break; } } // user agent ist jetzt in $userAgent...
Dadurch kannst du deinen Code dann viel einfacher anpassen, weil du eig. nur noch die Liste oben ändern musst.
Beitrag zuletzt geändert: 17.5.2010 21:17:46 von nikic -
Oder kann man das komplett vergessen?
unproblematisch war das nie! hier hast du einen ausgangspunkt. von da aus musst du natürlich viel viel weiter (z.b.: browser test, oder sucher strapazieren, in etwa so: "browserweiche javascript" und andere einfälle). also in endeffekt rennt alles dorthin, dass man browser nicht an den namen erkennt, sondern an vorhandenen oder nicht vorhandenen features [so wie: 'document.all' und co.]! namen sind - wie vor mir schon gesagt - wertlose angaben! du hast allerdings dein problem eigentlich nicht genannt: wozu brauchst du das ding? eine etwas genauere antwort ist davon abhängig.
Und habe ich noch bekannte Browser vergessen?
yo mey! jede menge ;o) [google schon wieder?] -
Chrome basiert auf dem WebKit von Safari - könnte ebenfalls Ursache für die o.g. Voreinstellung sein...))
D.h. zum Zwecke der Verhaltensanpassung, ist die Unterscheidung zwischen Chrome und Safari meistens nicht relevant (dies wird jedenfalls angestrebt)).
Beitrag zuletzt geändert: 18.5.2010 10:45:30 von nadobnykh -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage