Foros del Web » Programando para Internet » PHP »

Saber que usuario esta conectado, no cuantos sino quien!

Estas en el tema de Saber que usuario esta conectado, no cuantos sino quien! en el foro de PHP en Foros del Web. Hola amigos, tngo el siguiente problema: en mi pagina web tengo sesiones de usuario, se cuantos usuarus estan visitando la pagina en el actual momento ...
  #1 (permalink)  
Antiguo 02/07/2009, 10:29
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Saber que usuario esta conectado, no cuantos sino quien!

Hola amigos,

tngo el siguiente problema: en mi pagina web tengo sesiones de usuario, se cuantos usuarus estan visitando la pagina en el actual momento y todo, pero lo que quiero saber es que usuarios de los que estan registrados en mi pagina estan conectados, es decir, que cuando un usuario inicia su sesion la pagina me muestre algo asi:


Usuarios conectados:


joel
maria
jose
will
ana


yo tengo a funcion que los cuanta, osea en este caso me diria:

Usuarios visitando la pagina: 5


ya busque por todos los rincones de google pero solo me salen funciones para contarlos pero no me muestran el nombre de los que estn conectados!

Todo lo que me han ayudado solo me dan la funcion de contar y no quiero contarlos sino que me muestre el nombre de ellos!


Gracias!
  #2 (permalink)  
Antiguo 02/07/2009, 15:58
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 5 meses
Puntos: 1
De acuerdo Respuesta: Saber que usuario esta conectado, no cuantos sino quien!

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
  #3 (permalink)  
Antiguo 02/07/2009, 17:20
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Saber que usuario esta conectado, no cuantos sino quien!

Ok gracias amigo voy a porbarlo!

He intentando de todo pero nada. Gracias!
  #4 (permalink)  
Antiguo 02/07/2009, 18:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 62
Antigüedad: 15 años
Puntos: 2
Respuesta: Saber que usuario esta conectado, no cuantos sino quien!

Oye, está excelente ese código, gracias por el post, voy a jugar un poco con él
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:51.