Admin
 
 
Logo DIPLOX
Mostrar el número de usuarios online con php
Volver Por sereno
  
Sábado, 19/03/2011
Mostrar el número de usuarios online con php
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¨); ?>


Volver Por sereno