Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mit PHP den User-Agent parsen (https://www.delphipraxis.net/75268-mit-php-den-user-agent-parsen.html)

Matze 16. Aug 2006 22:19


Mit PHP den User-Agent parsen
 
Hallo zusammen,

ich habe nun schon eine Ewigkeit gesucht und finde leider keine Möglichkeit, mit PHP den Browser, die Browserversion und das Betriebssystem auszulesen. Es gibt die Funktion get_browser(), die all diese Informationen enthält, doch ist der Zugriff auf die browscap.ini, die die nötigen Informationen enthält (das sind sehr viele), gesperrt.

Dann dachte ich mir, man müsste alle drei Daten, die ich erhalten möchte, aus dem User-Agent ($_SERVER['HTTP_USER_AGENT']) auslesen können, doch weiß ich absolut nicht, wie man das am besten macht. Um reguläre Ausdrücke werde ich nicht herumkommen und selbst wenn ich diese hätte, brauche ich weitere Infos, wie was "übersetzt" werden muss.

Mein User-Agent sieht folgendermaßen aus:

Code:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1a2) Gecko/20060512 BonEcho/2.0a2
Nun muss ich ja wissen, dass "Windows NT 5.1" Windows XP und dass "BonEcho" Firefox ist mit der Version 2.0a2. Das sind eine Hülle von Infos, denn es gibt Zahlreiche Browser und somit auch Browserversionen und natürlich gibt es auch einige Betriebssysteme und ihre Versionen.

Ob die User-Agents der verschiedenen Browser alle gleich aufgebaut sind, ist dann auch noch die andere Frage ...

Wisst ihr wie man das löst oder wie man das angehen kann?

Niko 16. Aug 2006 23:14

Re: Mit PHP den User-Agent parsen
 
Hi,

hast du keine Möglichkeit, den Eintrag browscap in der php.ini zu ändern?

Wenn nicht musst du wohl die Funktion get_browser() nachprogrammieren. Dazu kannst du dir ja eine browscap.ini z.B. hier herunterladen. In deiner Funktion vergleichst du dann die regulären Ausdrücken in der browscap.ini der Reihe nach mit dem User-Agent String. Allerdings bin ich mir nicht sicher, ob diese ganzen Vergleiche bei einer großen browscap.ini nicht etwas lange dauern. Eventuell müsste man die ini-Datei auf die wichtigsten Einträge kürzen.

Matze 17. Aug 2006 11:57

Re: Mit PHP den User-Agent parsen
 
Hallo Nico

Zitat:

Zitat von Niko
hast du keine Möglichkeit, den Eintrag browscap in der php.ini zu ändern?

Nein, diese Enstellung kann ich leider nicht ändern. Ich habe keinen Root-Server und auch keine direkten Rechte für die php.ini, sondern nur eingeschränkte, mit denen ich register_globals & Co beeinflussen kann.

Zitat:

Zitat von Niko
Wenn nicht musst du wohl die Funktion get_browser() nachprogrammieren. [...] In deiner Funktion vergleichst du dann die regulären Ausdrücken in der browscap.ini der Reihe nach mit dem User-Agent String. Allerdings bin ich mir nicht sicher, ob diese ganzen Vergleiche bei einer großen browscap.ini nicht etwas lange dauern. Eventuell müsste man die ini-Datei auf die wichtigsten Einträge kürzen.

Eine browscap.ini habe ich hier lokal, da ich da XAMPP drauf habe. Ich kann mir jedoch auch nicht vorstellen, dass das sonderlich schnell sein wird.

Eine andere Möglichkeit, außer alle User-Agents durchzugehen und auf eine Übereinstimmung zu testen gibt es definitiv nicht?

Nachtrag: Dieses Script läuft sogar, nur würde ich aufgrund lizenztechnischer Gründe lieber alles selbst machen.

vlees91 17. Aug 2006 13:18

Re: Mit PHP den User-Agent parsen
 
dein Nachtrag funktioniert glaube ich, indem es den User Agent zerlegt.

Matze 17. Aug 2006 13:33

Re: Mit PHP den User-Agent parsen
 
Ja, so sieht es aus.

Ich mache es nun so, dass ich die wichtigen User Agents nehme und auf diese vergleiche. Den IE 1.0 wird beispielsweise heute kaum einer mehr nutzen, da reicht es die Agents ab Version 5 zu nehmen. Dann sind es auch nicht so viele. :)

Aber es ist schon etwas blöd, dass es da keinen geregelten Standard gibt, der vorschreibt, wie so ein User Agent auszusehen hat.

Flocke 17. Aug 2006 13:37

Re: Mit PHP den User-Agent parsen
 
Zitat:

Zitat von Matze
Nachtrag: Dieses Script läuft sogar, nur würde ich aufgrund lizenztechnischer Gründe lieber alles selbst machen.

Hier steht, dass du bei PEAR eine fast freie Auswahl an Lizenzmöglichkeiten hast, auch für Closed Source und kommerzielle Anwendungen.

chaosben 17. Aug 2006 13:46

Re: Mit PHP den User-Agent parsen
 
Hi Matze!

Die ganze Sache wird wohl etwas umfangreicher werden.
Hier findest du aber einige nützliche Infos, mit deren Hilfe du ein wenig System in die Sache bringen kannst.

//edit: Hier gibts einen (schaurigen) Überblick über das Thema.

Matze 17. Aug 2006 14:45

Re: Mit PHP den User-Agent parsen
 
@Flocke: Ah, danke.
@chaosben: Oha, das sind ja wahnsinnig viele. Ich gebe mich jedoch mit einer Auswahl von Wikipedia zufrieden. Alles andere wäre übertrieben, denke ich. ;)

Daniel 17. Aug 2006 14:52

Re: Mit PHP den User-Agent parsen
 
Sonst schaue Dir doch mal Software wie AWstats an. Dort werden alle von Dir gewünschten Informationen auch aus dem User-Agent ausgelesen. Vielleicht kann man sich da ja eine Anregung holen, ist zwar kein PHP, aber die Idee sollte ja die gleiche sein.

Matze 17. Aug 2006 15:11

Re: Mit PHP den User-Agent parsen
 
Zitat:

Zitat von Daniel
Sonst schaue Dir doch mal Software wie AWstats an. Dort werden alle von Dir gewünschten Informationen auch aus dem User-Agent ausgelesen. Vielleicht kann man sich da ja eine Anregung holen, ist zwar kein PHP, aber die Idee sollte ja die gleiche sein.

Ich habe mir bereits einige Statistik-Module, die in PHP geschrieben sind, angesehen und entweder sind diese sehr überladen und ich sehe da nicht ganz durch oder sie sind simpel und dafür relativ ungenau.

Ich teste mal meine jetzige Lösung und falls diese nichts ist, muss ich mich nach einer anderen umsehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz