Yo, que se poco de PHP, he realizado la primera parte de este código. Es bastante regular, y seguro que todos me podríais ayudar a mejorarlo. Ahí va el codigo para crear tabla:
DROP TABLE IF EXISTS usuarios_activos_advance;
CREATE TABLE usuarios_activos_advance (
ip varchar(20) NOT NULL default '',
usuario varchar(50) NOT NULL default '',
fecha int(14) unsigned NOT NULL default '0',
PRIMARY KEY (ip)
) TYPE=MyISAM;
Y ahi va el código en PHP. No me ha funcionado, pero no he encontrado fallos. A ver si lo mejoramos y lo hacemos de libre distribución. Por cierto, por ahora sólo muestra el número de usuarios activos. Más tarde seguiré haciéndolo y mostrará además los nombres de las personas conectadas (aunque para ello habrá que diseñar un sistema de autentificación y una nueva tabla en MYSQL llamada "miembros". Ahí va el código:
Código PHP:
<?php
#Variables
$cookie_usuario = $_COOKIE['cookie_usuario'];
#Ponemos el tiempo actual
$tiempo = time();
#Tiempo minimo para poder saber si el usuario ha desconectado (5 minutos)
$tiempo_minimo = $tiempo-5*60;
#Averiguamos la ip de dos metodos distintos si uno u otro metodo no funciona
$ip = $HTTP_X_FORWARED_FOR;
if ($ip=="") {
$ip = $REMOTE_ADDR;
} else {
}
/////////////
//Conectamos a la bd
$link=mysql_connect("localhost","root","root");
mysql_select_db("skatextreme",$link);
//Borramos los usuarios que esten inactivos 5 minutos
$sql = "delete from usuarios_activos_advance where fecha < ".$tiempo_minimo;
mysql_query($sql);
/////////////
if (! $cookie_usuario) {
//Si no hay cookie_usuario asignamos al visitante como anonimo
$usuario = "Anonimo";
//Miramos si el usuario se habia metido en la pagina
$sql = "select ip from usuarios_activos_advance where ip = '$ip' and usuario = '$usuario'";
$result = mysql_query($sql);
if (mysql_num_rows($result) != 0) {
$sql = "update usuarios_activos_advance set fecha = ".$tiempo." where ip = '$ip' and usuario = '$usuario'";
mysql_query($sql);
} else {
//Si no existe insertamos el usuario en la base de datos
$sql = "insert into usuarios_activos_advance (ip, usuario, fecha) values ('$ip', '$usuario', $time)";
mysql_query($sql);
}
mysql_free_result($result);
} else {
//Ahora conocemos al usuario
$usuario = $cookie_usuario;
//Miramos si el usuario se habia metido en la pagina
$sql = "select ip from usuarios_activos_advance where ip = '$ip' and usuario = '$usuario'";
$result = mysql_query($sql);
if (mysql_num_rows($result) != 0) {
$sql = "update usuarios_activos_advance set fecha = ".$tiempo." where ip = '$ip' and usuario = '$usuario'";
mysql_query($sql);
} else {
//Si no existe insertamos el usuario en la base de datos
$sql = "insert into usuarios_activos_advance (ip, usuario, fecha) values ('$ip', '$usuario', $time)";
mysql_query($sql);
}
mysql_free_result($result);
}
$sql = "select ip, usuario from usuarios_activos_advance";
$result = mysql_query($sql);
$usuarios = mysql_num_rows($result);
//devolvemos el resultado
return $usuarios;
//liberamos memoria
mysql_free_result($result);
?>