Delphi-PRAXiS

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.

Matze 18. Aug 2006 10:37

Re: Mit PHP den User-Agent parsen
 
Schnell musste ich feststellen, dass es mit den wichtigsten User Agents nicht geht, da pro User Agent zig Sprachen auftreten können (de, De-AT, en, en-US, fr, fr-FR, es, ...). Also ohne reguläre Ausdrücke wird man das nicht schaffen. Nur falls jemand das gleiche mal basteln möchte.

Meflin 18. Aug 2006 13:26

Re: Mit PHP den User-Agent parsen
 
Zitat:

Zitat von Matze
Schnell musste ich feststellen, dass es mit den wichtigsten User Agents nicht geht, da pro User Agent zig Sprachen auftreten können (de, De-AT, en, en-US, fr, fr-FR, es, ...). Also ohne reguläre Ausdrücke wird man das nicht schaffen. Nur falls jemand das gleiche mal basteln möchte.

wer sollte das noch wollen, nachdem du uns dann deine fertige Funktion großzügigerweise zur Verfügung gestellt hast :zwinker:


Matze 18. Aug 2006 16:11

Re: Mit PHP den User-Agent parsen
 
Zitat:

Zitat von Meflin
wer sollte das noch wollen, nachdem du uns dann deine fertige Funktion großzügigerweise zur Verfügung gestellt hast :zwinker:

:roll:

omata 18. Aug 2006 18:41

Re: Mit PHP den User-Agent parsen
 
Hallo Matze,

Zitat:

Zitat von Matze
Also ohne reguläre Ausdrücke wird man das nicht schaffen. Nur falls jemand das gleiche mal basteln möchte.

was sprach gegen folgenden Link?

Gruss
Thorsten

Matze 19. Aug 2006 10:07

Re: Mit PHP den User-Agent parsen
 
Hi Thorben

Zitat:

Zitat von omata
was sprach gegen folgenden Link

Den kannte ich gar nicht. Das wäre auch gegangen, stimmt. Naja, nun scheint es auch so zu klappen, auch wenn ich nun nicht jeden Browser erkennen kann, da ich nur die gängigsten eingebunden habe.

Thorben77 19. Aug 2006 11:46

Re: Mit PHP den User-Agent parsen
 
Zitat:

Zitat von Matze
Hi Thorben

Ich hab doch gar nix geschrieben, aber trotzdem moin :wink: .
Zitat:

Zitat von omata
Gruss Thorsten



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 Uhr.

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