Mostrar el número de usuarios online con PHP

1 - , - 26/01/2009 16:00:00

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

Comentarios

Rodrigo18/05/2012 14:24:20

1
Había probado otros códigos y no me habían funcionado. Este agarró a la primera. Muchas Gracias.

Deja tu comentario

  • El comentario debe estar relacionado con el contenido de la entrada.
  • Comentarios ofensivos, con spam o con lenguaje inapropiado serán eliminados.

captcha