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(); ?>