Un script para saber cuantos usuarios online hay en el sitio :)
Dejo la estructura de la tabla y el script, esta en una funcion, si tienes un archivo de funciones simplemente pones dentro la funcion y listo!
Despues solo habra que mandar a imprimir en pantalla "verOnline()" y terminamos ñ_ñ
Espero que les sea util ;)
--
-- Estructura de tabla para la tabla `usuarios`
--
CREATE TABLE IF NOT EXISTS `usuarios` (
`ip` varchar(15) NOT NULL,
`tiempo` timestamp NOT NULL default CURRENT_TIMESTAMP,
`online` tinyint(1) NOT NULL
)
<?php
function verOnline(){
/* Datos para conectar a base d edatos */
$on_minutos = 15; // intervalo en minutos
$on_host="localhost"; //Nombre del host
$on_user="r00t"; //Usuario en base de datos
$on_pass="contraseña"; //contraseña base de datos
$on_db="usonline"; //Base de datos
/* Conexion a base d edatos con una funcion y todo xD */
function c0nectar($host, $user, $pass, $database){
$conectar = @mysql_connect($host, $user, $pass);
@mysql_select_db($database,$conectar);
return $conectar;
}
$cOnline=c0nectar($on_host,$on_user,$on_pass,$on_db);
$bus_sql = "SELECT ip FROM usuarios WHERE ip='".$_SERVER['REMOTE_ADDR']."';";
$bus_qry = @mysql_query($bus_sql,$cOnline) or die(mysql_error());
$bus_dat = @mysql_fetch_array($bus_qry);
$ip = $bus_dat['ip'];
if($ip==''){
$ins_sql = "INSERT INTO usuarios (ip,tiempo,online) values ('".$_SERVER['REMOTE_ADDR']."',NOW(),'1');";
$inst_qry = @mysql_query($ins_sql,$cOnline);
}
$act_sql = "UPDATE usuarios SET `tiempo`=NOW() WHERE `ip`='".$_SERVER['REMOTE_ADDR']."';";
$act_qry = @mysql_query($act_sql,$cOnline);
$upd_sql = "UPDATE usuarios SET `online`='1' WHERE `tiempo`>=(DATE_SUB(NOW(), INTERVAL ".$on_minutos." MINUTE))";
$upd_qry = @mysql_query($upd_sql,$cOnline);
$upd0_sql = "UPDATE usuarios SET `online`='0' WHERE `tiempo`<(DATE_SUB(NOW(), INTERVAL ".$on_minutos." MINUTE))";
$upd0_qry = @mysql_query($upd0_sql,$cOnline);
$tot_sql = "SELECT COUNT(*) as t FROM `usuarios` WHERE `tiempo`>=(DATE_SUB(NOW(), INTERVAL ".$on_minutos." MINUTE))";
$tot_qry = @mysql_query($tot_sql,$cOnline);
$tot_dat = @mysql_fetch_array($tot_qry);
$us_online = $tot_dat['t'];
$del_sql = "DELETE FROM `usuarios` WHERE `online`=0;";
$del_qry = @mysql_query($del_sql,$cOnline);
return $us_online;
}
echo "Usuarios online: ".verOnline();
?>
0 comentarios:
Publicar un comentario