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...
Am Ende trag ich die Daten in die DB ein.
Das funktioniert soweit 1a.
Jetzt hab ich gesehen, dass man es auch mit Array's machen kann, was etwas eleganter ist. Hier ein Beispiel.
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
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