En esta entrada se muestra como podemos mostrar el número de usuarios online que se encuentran conectados a nuestro sitio web. El valor es aproximado puesto que dependerá en gran medida del valor que le demos a la variable $tiempo_conexion. Una buena forma de establecer el valor es viendo, en Google Analytics, el tiempo medio que pasan los visitantes de nuestra web. En cualquier caso, valores entre 100 y 200 suelen ser los más adecuados.
Lo primero que tendremos que hacer es crear una tabla en nuestra base de datos:
CREATE TABLE `useronline` ( `timestamp` int(15) NOT NULL default '0', `ip` varchar(40) NOT NULL default '', PRIMARY KEY (`timestamp`,`ip`), KEY `ip` (`ip`) ) ENGINE=MyISAM DEFAULT CHARSET=utf-8;
A continuación deberemos crear el fichero que mostrará el número de usuarios online. Lo llamaremos usuariosonline.php :
<?
//Variables de conexion
$dbhost = "servidor";
$dbuser = "usuario";
$dbpassword = "password";
$dbname = "nombre_base_datos";
// El tiempo en segundos que ha de pasar
// para que un usuario se elimine
$tiempo_conexion = 200;
$timestamp=time();
$desconexion=$timestamp-$tiempo_conexion;
//Insertamos el valor para el usuario
$db = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error());
mysql_select_db($dbname) or die("Error al conectar a la base de datos.");
$Sql ="INSERT INTO useronline VALUES('$timestamp','$_SERVER[REMOTE_ADDR]')";
$result = mysql_query( $Sql ) or die("No se puede ejecutar la consulta: ".mysql_error());
//Borramos los usuarios cuyo $tiempo_conexion han sobrepasado.
$Sql ="DELETE FROM useronline WHERE timestamp<$desconexion";
$result = mysql_query( $Sql ) or die("No se puede ejecutar la consulta: ".mysql_error());
//Seleccionamos los usuarios que hay online en este momento
$Sql ="SELECT DISTINCT ip FROM useronline";
$result = mysql_query( $Sql ) or die("No se puede ejecutar la consulta: ".mysql_error())
$Usuarios = mysql_num_rows($result);
if ($Usuarios==1) {
echo $Usuarios." usuario online";
} else {
echo $Usuarios." usuarios online.";
}?>
Ahora tan sólo tenemos que incluirlo en nuestra web donde deseemos mostrar el número de usuarios online:
<?php
include("usuariosonline.php");
?>




