hola , nose muxo del tema ,pero esto te puede orientar un poco.
creas una tabla : ENlinea
filas: usuario,ip,fecha.
este codigo lo eh sacado de un sistema que se llama pfusers 3.2
<?php
/* Funciones */
if(!function_exists("pf_Stats")){
function pf_Stats(){
global $pagina, $get;
echo STATS_."<br>";
$query_tot=mysql_query("SELECT * FROM usuarios");
$total = mysql_num_rows($query_tot);
echo _TOTAL_USUARIOS . " " . $total."<br>";
$query_ult=mysql_query("SELECT * FROM usuarios ORDER BY id DESC LIMIT 1");
$ultim=mysql_fetch_array($query_ult);
if(!$pagina or !$get){ echo"NO HAY VARS"; }
echo _ULTIMO_USUARIO . " <a href='" . $pagina . "?" . $get ."=registrados&u=".$ultim[id]."'>" . $ultim[nick] . "</a><br>";
}
}
/* La variable de pfUsers es $userinfo[ + nombre del campo + ]; */
if($_COOKIE[nick] && $_COOKIE[contrasena] && $_COOKIE[id]){
$query = mysql_query("SELECT * FROM usuarios WHERE nick='$_COOKIE[nick]' and contrasena='$_COOKIE[contrasena]' and id='$_COOKIE[id]'");
$count = mysql_num_rows($query);
if($count != 1){
exit("Sesión erronea. Finalizando página...");
}
$userinfo = mysql_fetch_array($query);
$userinfo[ult_conexion] = $userinfo[conectado];
if($info[sexo] == 0){ $userinfo[sexo_txt] ="Masculino"; } else { $userinfo[sexo_txt]="Femenino"; }
$userinfo[contrasena] = "encriptada";
$userinfo[fecha_nac] = $info[n_dia] . "/" . $info[n_mes] . "/" . $info[n_ano];
$userinfo[fecha_txt] = date("d/m/y",$unserinfo[fecha]);
$userinfo[ult_conexion_txt] = date("d/m/y",$unserinfo[conectado]);
}
esta es la parte que contiene la funcion de usuarios_enlinea
Código PHP:
if(!function_exists("pf_Online")){
function pf_Online(){
global $pagina, $get;
$fecha = time() ;
$tiempo = 10 ;
$tiempo = $fecha-$tiempo*60 ;
$ip = $REMOTE_ADDR ;
$usuario = $_COOKIE[nick] ;
mysql_query("DELETE FROM enlinea WHERE fecha < $tiempo") ;
$query = mysql_query("SELECT ip FROM enlinea WHERE ip='$ip'") ;
if(mysql_num_rows($query) == 0) {
mysql_query("INSERT INTO enlinea VALUES ('$ip','anonimo','$fecha','anonimo')") ;
}
else {
mysql_query("UPDATE enlinea SET fecha='$fecha' WHERE ip='$ip'") ;
}
if($_COOKIE[nick]) {
$query = mysql_query("SELECT * FROM enlinea WHERE usuario='$usuario'") ;
if(mysql_num_rows($query) == 0) {
mysql_query("INSERT INTO enlinea VALUES ('$ip','$usuario','$fecha','usuario')") ;
}
else {
mysql_query("UPDATE enlinea SET fecha='$fecha' WHERE usuario='$usuario'") ;
}
}
/* Usuarios en linea */
$query=mysql_query("SELECT * FROM enlinea WHERE tipo = 'usuario'");
$usuarios =mysql_num_rows($query);
/* Anónimos */
$query = mysql_query("select * from enlinea where usuario = 'anonimo'") ;
$anonimos = mysql_num_rows($query) ;
/* total */
$query=mysql_query("select * from enlinea");
$total = mysql_num_rows($query);
echo ONLINE_."<br>";
echo TOTAL_ONLINE . " " . $total . "<br>";
echo TOTAL_ANONIMOS . " " . $anonimos . "<br>";
echo TOTAL_USUARIOS . " " . $usuarios;
echo"<br>";
echo"<marquee>";
$query=mysql_query("SELECT * FROM enlinea WHERE tipo = 'usuario'");
while($datos = mysql_fetch_array($query)){
$query=mysql_query("SELECT * FROM usuarios WHERE nick = '$datos[usuario]')");
$userdata = mysql_fetch_array($query);
echo "| <a href='".$pagina."?".$get."=registrados&u=".$userdata[id]."'>".$datos[usuario]."</a> | ";
}
echo"</marquee>";
}
}
?>
en este codigo se definen las variables con los datos que necesitas para renovar la lista de usuarios conectados:
$fecha = time() ;
$tiempo = 10 ;
$tiempo = $fecha-$tiempo*60 ;
$ip = $REMOTE_ADDR ;
$usuario = $_COOKIE[nick] ;
mysql_query("DELETE FROM enlinea WHERE fecha < $tiempo") ;
con este codigo cuando el usuario lleve 10 min inactivo se le eliminara de la lista.
creo que basicamente seria insertar los datos recogidos cuando el usuario este conectado :
Código PHP:
$query = mysql_query("SELECT * FROM ENlinea WHERE usuario='$usuario'") ;
if(mysql_num_rows($query) == 0) {
mysql_query("INSERT INTO enlinea VALUES ('$ip','$usuario','$fecha','usuario')") ;
y cuando se desconecta en el archivo salir.php los borras:
Código PHP:
mysql_query("DELETE FROM ENlinea WHERE usuario='$_SESSION[usuario]'");
luego creas un archivo online.php y los muestras.
con algo asi:
Código PHP:
<?php
if (isset($_REQUEST['listar']))
$inicio=$_REQUEST['listar'];
else
$inicio=0;
?>
<div id="tabla-usuarios-online">
<?php
$conexion=mysql_connect("localhost","usuario_db","clave") or
die("Problemas en la conexion");
mysql_select_db("basededatos",$conexion) or
die("Problemas en la selección de la base de datos");
$registros=mysql_query("select usuario from ENlinea limit $inicio,6",$conexion) or
die("Problemas en el select:".mysql_error());
echo '<br><a href="index.php">volver al index</a>';
echo '<table border="1">';
echo '<tr><td>Nombre de usuario</td></tr>';
$impresos=0;
while ($reg=mysql_fetch_array($registros))
{
$impresos++;
if ($impresos==6)
break;
echo '<tr>usuarios online</tr>';
echo '<td><b>'.$reg['usuario'].'</b></td>';
echo '</tr>';
}
echo '</table>';
mysql_close($conexion);
if ($inicio==0)
echo "anteriores ";
else
{
$anterior=$inicio-5;
echo "<a href=\"?listar=$anterior\">Atras </a>";
}
if ($impresos==6)
{
$proximo=$inicio+5;
echo "<a href=\"?listar=$proximo\">Siguiente</a>";
}
else
echo "siguientes";
?>
</div>
espero que te sirva de ayuda.
saludos