Codeschnipsel - MySQL User Online Counter Funktion


Wie man einen User Online Counter via MySQL realisiert:

Zunächst einmal die Datenbankverbindung (falls noch nicht vorhanden) :

Code:
<? $host = "localhost"; $username = ""; $passwort = ""; $datenbank = "";   @MYSQL_CONNECT($host, $username, $passwort) or die ("MySQL-Login fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); @MYSQL_SELECT_DB($datenbank) or die ("Verbindung zur Datenbank fehlgeschlagen,<br /> MySQL Error: <strong>".mysql_error()."</strong>"); ?>

Nun der SQL-Dump des User Online Counters:

Code:
CREATE TABLE `useronlinepas` ( `IP` varchar(40) NOT NULL default '', `LAST` int(12) NOT NULL default '0', PRIMARY KEY (`IP`) ) ENGINE=MyISAM;

Die User Online Counter Funktion:

Code:
<? ########################################################################################################################### # User Online Counter Funktion by PA-S.de ########################################################################################################################### # User Online Counter Funktion V.1.0 by PA-S.de # Copyright 2003-2007 PA-S.de # Script Url: www.pa-s.de ########################################################################################################################### // Hier ggf. noch die Datenbankverbindung, falls nicht vorhanden.   function useronlinepas($ausgabe = false) { /* Aufruf: useronlinepas() -> false = Keine Ausgabe useronlinepas(true) -> true = Ausgabe */   // ~ Einstellungen ~ // Gültigkeit (5 Min empfohlen) // Stunden $s = "0"; // Minuten $m = "5"; // Sekunden $i = "10"; // ------------------   // ~ Ende Einstellungen ~ $pas = $s * 3600 + $m * 60 + $i; $zeit = time(); $last = $zeit - $pas; $ip = $_SERVER['REMOTE_ADDR']; // Alte Einträge löschen mysql_query("DELETE FROM `useronlinepas` WHERE `LAST` < '$last';") or die ("MySQL-QUERY fehlgeschlagen,<br /> MySQL Error: <strong>" . mysql_error() . "</strong>"); // Eintrag erstellen ggf. aktualisieren $result = mysql_query("SELECT `IP` FROM `useronlinepas` WHERE `IP`='$ip' LIMIT 1;") or die ("MySQL-QUERY fehlgeschlagen,<br /> MySQL Error: <strong>" . mysql_error() . "</strong>"); // IP schon vorhanden -> Update if (mysql_num_rows($result)) { mysql_query("UPDATE `useronlinepas` SET `LAST`='$zeit' WHERE `IP`='$ip' LIMIT 1;") or die ("MySQL-QUERY fehlgeschlagen,<br /> MySQL Error: <strong>" . mysql_error() . "</strong>"); } else { // IP nicht vorhanden -> Insert mysql_query("INSERT INTO `useronlinepas` (`IP`, `LAST`) VALUES ('$ip', '$zeit')") or die ("MySQL-INSERT fehlgeschlagen,<br /> MySQL Error: <strong>" . mysql_error() . "</strong>"); } // User Online? if ($ausgabe == true) { $result = mysql_query("SELECT count(`IP`) AS `ANZAHL` FROM `useronlinepas`;") or die ("MySQL-QUERY fehlgeschlagen,<br /> MySQL Error: <strong>" . mysql_error() . "</strong>"); $fetch = mysql_fetch_assoc($result); return $fetch["ANZAHL"]; } else { return true; } } ?>

Einfaches Ausgabebeispiel:

Code:
<?php // GGF. Funktion einbinden echo 'Momentan sind: ' . useronlinepas(true) . ' User Online!';   // Alternativ ohne Anzeige useronlinepas(); ?>

Beachten Sie: Wir übernehmen keinerlei Haftung für irgendwelche Schäden, Ausfälle oder sonstigen Geschehnissen.
Alle Angaben sind ohne Gewähr, Sie handeln auf eigenes Risiko!
Alle genannten Soft- und Hardwarebezeichnungen sowie Markennamen sind Eigentum ihrer jeweiligen Inhaber und unterliegen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz.
Alle Rechte vorbehalten