Browser aus $_SERVER['HTTP_USER_AGENT'] ermitteln und ausgeben

Johnnii360

Erfahrenes Mitglied
Servus!

Ich steh schon seit einiger Zeit vor einem Problem, das ich nicht lösen kann. So sehr ich mich auch angestrengt habe, es ging nicht. -_-
Deshalb bitte ich euch um Hilfe. Wäre super wenn mir jemand einen Codeschnipsel geben kann.

Also... Ich habe hier ein Besucherstatistikenscript selber gebastelt. Zumindest das was ich an Infos eintragen will habe ich schon. Ich ermittle u.a. mittels $_SERVER['HTTP_USER_AGENT'] die Infos über das OS und den Browser des Besuchers. Da der Useragent aber je nach installierten Extras unterschiedlich aussehen kann, kann ich den Useragent nicht einfach mit "GROUP BY agent ORDER BY agent" gruppieren und sortieren.

Ich möchte bei der Anzeige der Besucherdaten einmal die Browser im zusammengefassten und einmal im aufgeschlüsseltem Zustand auflisten. Das selbe beim OS.
Ich bereits zwei functions erstellt, mittels der ich ggf. z.B. MSIE in Internet Explorer und NT 5.1 in Windows XP umwandle.

Ich habe aber keine Ahnung wie ich die Auflistung machen kann.

Ich würde mich über eure Hilfe sehr freuen.
Vielen Dank bereits im Voraus!
 
Hallo.

Hast Du die Daten schon in der Datenbank?
Wenn ja, dann würden ich mir 2 Wege einfallen.

1. Du spiecherst nicht den Kompletten Datensatz in einer Spalte.
Beispiel:
Betriebsystem: Windows NT 5.1

sonder Du teilst Das beim Speichern auf in 2 Spalten
Betribsystem: Windows XP
Spezifikation: 5.1
usw.

Die 2. Möglichkeit wäre eine LIKE Abfrage zu machen.
Also zum Beispiel:
Code:
SELECT * FROM tabelle WHERE browser LIKE 'Internet Explorer'

Dadurch bekommst Du dann alle Datensätze die im Feld "browser" den Text "Internet Explorer" stehen haben.
 
PHP:
<?php
function list_array ($array) {
    while (list ($key, $value) = each ($array)) {
        $str .= "<b>$key:</b> $value<br>\n";
    }
    return $str;
}
echo "$HTTP_USER_AGENT<hr>\n";
$browser = get_browser();
echo list_array ((array) $browser);
?>

Diese Funktion sollte dir eine Liste ausgeben, die so aussehen könnte
HTML:
Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr>
<b>browser_name_pattern:</b> Mozilla/4\.5.*<br>
<b>parent:</b> Netscape 4.0<br>
<b>platform:</b> Unknown<br>
<b>majorver:</b> 4<br>
<b>minorver:</b> 5<br>
<b>browser:</b> Netscape<br>
<b>version:</b> 4<br>
<b>frames:</b> 1<br>
<b>tables:</b> 1<br>
<b>cookies:</b> 1<br>
<b>backgroundsounds:</b> <br>
<b>vbscript:</b> <br>
<b>javascript:</b> 1<br>
<b>javaapplets:</b> 1<br>
<b>activexcontrols:</b> <br>
<b>beta:</b> <br>
<b>crawler:</b> <br>
<b>authenticodeupdate:</b> <br>
<b>msn:</b> <br>

Wenn du dir das bissi umbaust und den ersten Ratschlag von ali_f befolgst, sollte das alles kein Problem mehr sein...
 
Hallo.

Hast Du die Daten schon in der Datenbank?
Wenn ja, dann würden ich mir 2 Wege einfallen.

1. Du spiecherst nicht den Kompletten Datensatz in einer Spalte.
Beispiel:
Betriebsystem: Windows NT 5.1

sonder Du teilst Das beim Speichern auf in 2 Spalten
Betribsystem: Windows XP
Spezifikation: 5.1
usw.

Die 2. Möglichkeit wäre eine LIKE Abfrage zu machen.
Also zum Beispiel:
Code:
SELECT * FROM tabelle WHERE browser LIKE 'Internet Explorer'

Dadurch bekommst Du dann alle Datensätze die im Feld "browser" den Text "Internet Explorer" stehen haben.

Stimmt schon. Wäre der einfachste Weg das OS und die Version sowie den Browser und die Versionsnummer jeweils in einzelne Felder zu setzen.

Ist das "LIKE" nicht so in der Art wie "WHERE browser='IE'"?
 
Ohne die Platzhalterzeichen „_“ (ein beliebiges Zeichen) und „%“ (beliebig viele beliebige Zeichen) arbeitet ein LIKE-Vergleich wie ein Vergleich mit Gleichheitszeichen.
 
Verstehe!
Weiß jemand von euch wie man in einem preg_match() mehrere Suchwörter wie z.B. Firefox, MSIE, Opera usw. verwendet? Ich probier schon dauernd rum, bring aber nichts zustande.
 
Zurück