Denkanstoß für die Entwicklung einer ausführlichen Statistik benötigt

Despoiler

Erfahrenes Mitglied
Hallo,
ich versuche seit ein paar Tagen mir eine eigene Statistik zu bauen. Dabei sollen auch Browser und Betriebssystem ausgewertet werden.

Momentan mach ich es so:
Ich frag jede Browserkennung einzeln ab, was mir eine riesige if-Anweisung beschert.

Hier ein kleiner Auszug...

PHP:
#Browser ermitteln
$browser = getenv("HTTP_USER_AGENT");

# MSIE
} elseif (eregi("(compatible; MSIE)[ /]([0-9.]{1,10})", $browser, $version)) {
	$browserversion		= "Internet Explorer ".$version['2'];
	$browsername			= "Internet Explorer";
	$image						= "explorer.gif";
# Netscape
} elseif (eregi("(netscape)[0-9]?/([0-9.]{1,10})", $browser, $version) || eregi("(^mozilla)/([0-4]\.[0-9.]{1,10})", $browser, $version)|| eregi("(netscape)/([0-9]{1,10}.[0-9]{1,2})", $browser, $version)) {
	$browserversion		= "Netscape ".$version['2'];
	$browsername			= "Netscape";
	$image						= "netscape.gif";
# Mozilla
} elseif (eregi("(^mozilla)/[5-9]\.[0-9.]{1,10}.+rv:([0-9a-z.+]{1,10})", $browser, $version) || eregi("(^mozilla)/([5-9]\.[0-9a-z.]{1,10})", $browser, $version)) {
	$browserversion		= "Mozilla ".$version['2'];
	$browsername			= "Mozilla";
	$image						= "mozilla.gif";

Am Ende trag ich die Daten in die DB ein.

PHP:
#Abfragen der Daten
$result = mysql_query("SELECT * FROM stats_browser WHERE BrowserVersion = '" . addslashes($browserversion) . "'");
$row = mysql_fetch_array($result);
#Wenn Hits größer als NULL, Hits erhöhen, ansonsten neuer Eintrag
if ($row['BrowserHits'] > "0") {
	mysql_query("UPDATE stats_browser SET BrowserHits = BrowserHits + 1 WHERE BrowserVersion = '" . addslashes($browserversion)."'");
} else {
	mysql_query("INSERT INTO stats_browser (BrowserVersion, BrowserHits, BrowserName, BrowserImage) VALUES ('" . addslashes($browserversion) . "', '1', '" . $browsername . "', '" . $image . "')");
}

Das funktioniert soweit 1a.
Jetzt hab ich gesehen, dass man es auch mit Array's machen kann, was etwas eleganter ist. Hier ein Beispiel.

PHP:
$browser = array(
 "explorer" => array(
    "icon" => "explorer",
    "title" => "Explorer",
    "rule" => array(
      "\(compatible; MSIE[ /]([0-9.]{1,10})" => "\\1"
    )
  ),
  "netscape" => array(
    "icon" => "netscape",
    "title" => "Netscape",
    "rule" => array(
      "netscape[0-9]?/([0-9.]{1,10})" => "\\1",
      "^mozilla/([0-4]\.[0-9.]{1,10})" => "\\1"
    )
  ),
  "mozilla" => array(
    "icon" => "mozilla",
    "title" => "Mozilla",
    "rule" => array(
      "^mozilla/[5-9]\.[0-9.]{1,10}.+rv:([0-9a-z.+]{1,10})" => "\\1",
      "^mozilla/([5-9]\.[0-9a-z.]{1,10})" => "\\1"
    )
  ),
);

Ich bräuchte nen Denkanstoß, wie ich am besten auf die Array's zu greife, die Daten vergleiche und in die DB eintrage.
Ich hab ehrlich gesagt keinen Schimmer wie ich das machen soll.

Danke
 
Neben der PHP-eigenen, aber nicht sehr zuverlässigen get_browser()-Funktion gibt es bereits einige umfangreiche PHP-Klassen zur Identifizierung des Browsers anhand des so genannten User Agent Strings.
Such einfach mal bei der Suchmaschine deines Vertrauens mit den Stichwörtern „browser detection“ oder „browser identification“ zusammen mit „php script“ oder „browser class“.
 
Hi Gumbo, danke für die Antwort, aber ganau das ist das Problem. Ich möchte kein fertiges Script einbauen, sondern selbst eines für meine Bedürfnisse entwerfen.
Außerdem will ich mal durchsteigen und verstehen wie das funktioniert. :)
 
Zurück