Opera auslesen
-
Unregistriert -
23. Mai 2009 um 16:41
-
-
Code
[COLOR=#000000][COLOR=#0000cc]$os [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000cc]$_SERVER[/COLOR][COLOR=#006600][[/COLOR][COLOR=#cc0000]'HTTP_USER_AGENT'[/COLOR][COLOR=#006600]]; if ([/COLOR][COLOR=#0000cc]strpos[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]$os[/COLOR][COLOR=#006600], '[/COLOR][COLOR=#0000cc]Opera[/COLOR][COLOR=#006600]')) { echo [/COLOR][COLOR=#cc0000]"Opera detected"[/COLOR][COLOR=#006600]; } [/COLOR][/COLOR]
-
Oder gleich get_browser() verwenden.
Wozu willst du ermitteln ober der Browser Opera ist? -
[littlebitspam]
Er ist zu blöd ein Design zu Coden das auf allen Browser gleich aussieht , deswegen muss er den Browser ermittelnOder er will ne tolle Seite machen , das wenn man drauf geht er jeden zeigen kann wie toll er ist und was er alles auslesen kann
Oder er macht eine Analyse
[/littlebitspam]
-
Hehe, genau das habe ich gedacht. Darum fragte ich, damit ich es ihm ausreden kann
-
Ich brauche es für die Statistik.
-
Ok, dann nehm ich das zurück.
Wobei du, wenn du dich mit PHP nicht gut auskennst, besser ein fertiges Statistik Modul verwendest (wie google analytics oder ähnliches).Gruss
-
Ich kenne mich mit PHP gut aus und deine Methode mit den Anführungszeichen klappt ebenfalls nicht.
Mit dem selben Code wie in meinem ersten Beitrag kann ich Linux, Firefox, MSIE, Windows uvm. auslesen. Nur halt eben Opera nicht.
-
Ich kenne mich mit PHP gut aus und deine Methode mit den Anführungszeichen klappt ebenfalls nicht.
Damit meinte ich Pion, sorry. -
Wobei gut auskennen ein variabler Begriff ist nicht wahr
Was bekommst du denn für Werte wenn du mit Opera ein get_browser() ausgibst?
Poste mir mal den ganzen Output dann schauen wir mal wie wir an den Wert rankommen. Hab da leider kein Opera am Start. -
Ich habe es jetzt nicht mit get_browser() getestet, da ich mir dazu noch erst mal die Datei browscap ini zulegen muß. Aber wenn ich $_SERVER['HTTP_USER_AGENT'] verwende, bekomme ich folgende Ausgabe:
ZitatOpera/9.64 (X11; Linux i686; U; de) Presto/2.1.1
-
Ah, interessante Situation *g*
ist äquivalent zu
In diesem Fall ist die strpos aber eben 0
Richtig wäre es so: -
Hmm ... das Problem wäre somit dann wohl gelöst aber das Rätsel bleibt nach wie vor offen:
Warum hat Opera als einziger Browser den Wert 0 und all die anderen Begriefe haben einen höhren Wert als 0?
Firefox hat z.B. den Wert 93. Linux hat den Wert 21. Was haben diese Zahlen denn überhaupt an sich?
-
Wenn du dir mal auf php.net die strpos Funktion anschauen würdest, wäre das Rätsel auch für dich gelöst. Sie liefert dir nämlich die Position einer Zeichenkette in einer anderen Zeichenkette zurück. Also ein strpos() nach "Opera" bei dieser Zeichenkette "blablablaOpera" ergäbe 9 (fängt immer bei 0 an). Und bei "Operablablabla" ergäbe sie eben 0, weil Opera an erster Stelle ist.
Das wurde bei deinem Script natürlich zum Verhängnis, da 0 false ist, und somit interpretiert dein Script den Rückgabewert der strpos() Funktion als false.
-
Hinweis:
Manche Browserkennungen enthalten z.B. das Wort "Mozilla" oder "Firefox", auch wenn sie ganz andere Browser sind.
Mein Konqueror hat z.B.: "Mozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.87 (like Gecko) SUSE" (wenn ich es nicht umstelle *g*)Daher solltest du get_browser verwenden oder bei PHPClasses nach der Browser-Klasse suchen. Die achten sicherlich auf solche Dinge.
-
Der IE stellt sich auch gerne als Mozilla dar.
Ich finde nur doof das man sich diese *.ini besorgen muss. -
Es gibt so viele ordentliche Scripts dafür:
http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI (INI-Datei, wirklich riesig, wohl die beste Wahl)
http://www.phpclasses.org/browse/file/11551.html
http://www.phpclasses.org/browse/file/6481.html (kein Chrome, aber mächtig)
http://www.phpclasses.org/browse/file/12369.html (genaue Variante, kein Chrome)
http://de3.php.net/get_browser (lauter Links)