AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mit PHP den User-Agent parsen

Ein Thema von Matze · begonnen am 16. Aug 2006 · letzter Beitrag vom 19. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Mit PHP den User-Agent parsen

  Alt 16. Aug 2006, 22:19
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?
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mit PHP den User-Agent parsen

  Alt 16. Aug 2006, 23:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 11:57
Hallo Nico

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 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.
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 13:18
dein Nachtrag funktioniert glaube ich, indem es den User Agent zerlegt.
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 13:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 13:37
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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 13:46
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.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 14:45
@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.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 14:52
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Mit PHP den User-Agent parsen

  Alt 17. Aug 2006, 15:11
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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