Ususarios online

martes, 8 de abril de 2008 by Azielito

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();



?>


Filed under having  

0 comentarios: