Yo uso este
BASE DE DATOS
Código:
CREATE TABLE one_users_online (
ip varchar(16) NOT NULL default '',
time varchar(20) NOT NULL default '',
PRIMARY KEY (ip),
KEY time (time)
) TYPE=MyISAM;
ARCHIVO online.php
Código PHP:
<?php
$mysqlserver = "localhost";
$mysqluser = "user_bbdd";
$mysqlpass = "pass_bbdd";
$mysqldbname = "bbdd_name";
$prefix = "one_";
$minutes = 5;
$hours = 24;
########################
$db = mysql_connect($mysqlserver,$mysqluser,$mysqlpass) or die("Failed to connect to MySQL server");
if(mysql_select_db($mysqldbname)==false) { mysql_close($db); die("Failed to select database"); }
$secs = 60*$minutes;
$curtime = time();
$ip = $_SERVER['REMOTE_ADDR'];
$num1 = $num2 = "";
if($hours!=0) {
$secsFromHours = 60*60*$hours;
mysql_query("DELETE FROM ".$prefix."users_online WHERE time<'".$curtime."'-'".$secsFromHours."'");
} else {
mysql_query("DELETE FROM ".$prefix."users_online WHERE time<'".$curtime."'-'".$secs."'");
}
if(mysql_result(mysql_query("SELECT COUNT(ip) FROM ".$prefix."users_online WHERE ip='".$ip."'"),0)) {
mysql_query("UPDATE ".$prefix."users_online SET time='".$curtime."' WHERE ip='".$ip."'") or die("Update failed");
} else {
mysql_query("INSERT INTO ".$prefix."users_online VALUES ('".$ip."','".$curtime."')") or die("Insert failed");
}
if($hours!=0) {
$num1 = mysql_result(mysql_query("SELECT COUNT(ip) FROM ".$prefix."users_online WHERE time>'".$curtime."'-'".$secs."'"),0);
$num2 = mysql_result(mysql_query("SELECT COUNT(ip) FROM ".$prefix."users_online"),0);
} else {
$num1 = mysql_result(mysql_query("SELECT COUNT(ip) FROM ".$prefix."users_online WHERE time>'".$curtime."'-'".$secs."'"),0);
}
mysql_close($db);
?>
Y donde quieras mostrar los datos solamente coloca esto
Código PHP:
<?php
if($num1==1) { echo $num1." Usuario"; } else { echo $num1." Usuarios"; }
?>
SUERTE