Foros del Web » Programando para Internet » PHP »

Ayuda con script de usuarios online registrados y anonimos

Estas en el tema de Ayuda con script de usuarios online registrados y anonimos en el foro de PHP en Foros del Web. Hola, he estado buscando por estos foros y por internet un script que te diga los usuarios registrados y los anónimos diferenciandolos, la verdad no ...
  #1 (permalink)  
Antiguo 09/08/2004, 17:34
 
Fecha de Ingreso: diciembre-2003
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Pregunta Ayuda con script de usuarios online registrados y anonimos

Hola, he estado buscando por estos foros y por internet un script que te diga los usuarios registrados y los anónimos diferenciandolos, la verdad no se muy bien como hacerlo yo por eso lo estoy buscando.
Me podriais ayudar diciendo como hacerlo, o darme uno hecho para yo modificarlo??

Muchas gracias.
Un saludo. kec0
  #2 (permalink)  
Antiguo 09/08/2004, 17:49
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Yo saqué por ahí un script que sirve para saber cuantos usuarios activos hay en una página.Es este:

Código PHP:
<?
////////////////////////////////////////////
//USUARIOS ACTIVOS
//Calcula el numero de usuarios activos
////////////////////////////////////////////

function usuarios_activos()
{
   global 
$link;
   
//permitimos el uso de la variable portadora del numero ip en nuestra funcion
   
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
       
$ip $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    elseif (isset(
$_SERVER['HTTP_VIA'])) { 
       
$ip $_SERVER['HTTP_VIA']; 
    } 
    else (isset(
$_SERVER['REMOTE_ADDR'])) { 
       
$ip $_SERVER['REMOTE_ADDR']; 
    } 
    
   
//definimos el momento actual
   
$ahora time();


   
//actualizamos la tabla
   //borrando los registros de las ip inactivas (10 minutos)
   
$limite $ahora-10*60;
   
$ssql "delete from activeUser where timestamp < ".$limite;
   
mysql_query($ssql,$link);

   
//miramos si el ip del visitante existe en nuestra tabla
   
$ssql "select ip, timestamp from activeUser where ip = '$ip'";
   
$result mysql_query($ssql,$link);

   
//si existe actualizamos el campo timestamp
   
if (mysql_num_rows($result) != 0$ssql "update activeUser set timestamp = ".$ahora." where ip = '$ip'";
   
//si no existe insertamos el registro correspondiente a la nueva sesion
   
else $ssql "insert into activeUser (ip, timestamp) values ('$ip', $ahora)";

   
//ejecutamos la sentencia sql
   
mysql_query($ssql,$link);

   
//calculamos el numero de sesiones
   
$ssql "select ip from activeUser";
   
$result mysql_query($ssql,$link);
   
$usuarios mysql_num_rows($result);

   
//liberamos memoria
   
mysql_free_result($result);

   
//devolvemos el resultado
   
return $usuarios;
}
?>
Esto serviría para todos los usuarios. la base de datos (en este caso activeUser) utiliza dos campos, uno es el ip y otro es timestamp. Podrías poner otro campo de tipo booleano que indicase si es usuario o no y en vez de guardar su ip guardas su nombre de usuario (que podrás sacar de la session o de la cookie dependiendo de como se guardan los datos del usuario cuando se loguea). En vez de ip pon de nombre al campo el término "usuario" porque así quedará más claro.

Es resumen:

compruebas si es usuario........si lo es guardas en la base de datos su nombre de usuario, el timestamp y pones a 1 (por ejemplo) el campo donde indicas que es usuario.
Si no lo es guardas la ip , el timestamp y pones a cero el otro campo. El resto ya lo hace el script.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #3 (permalink)  
Antiguo 09/08/2004, 18:13
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
También puedes ver en este post:
http://www.forosdelweb.com/showthrea...ghlight=online

Saludos
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 11:00.