Foros del Web » Programando para Internet » ASP Clásico »

como mostrar usuarios registrados en linea

Estas en el tema de como mostrar usuarios registrados en linea en el foro de ASP Clásico en Foros del Web. Saludos Estoy programando una pagina web y los usuarios registrados entran correctamente, muestro el nombre de usuario en base a la session que inicio, la ...
  #1 (permalink)  
Antiguo 25/05/2006, 16:55
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 8 meses
Puntos: 0
como mostrar usuarios registrados en linea

Saludos

Estoy programando una pagina web y los usuarios registrados entran correctamente, muestro el nombre de usuario en base a la session que inicio, la session caduca en 10 min o cuando cierran la pagina web que estan viendo.

La pagina muestra los usuarios on line, las visitas de cada usuario por IP, y la cantidad de visitas que lleva la pagina, todo esto lo guardo en una db MySQL.

Necesito mostrar los nombres de los Usuarios que entran a traves del login, mostrar los nombres (nicks) de cada usuario como en una lista:

ej.

Usuarios Activos
Jack
Lucy
Samy
Steve
Jorge

Hay 5 Usuarios regsitrados viendo
este sitio web

Hay 3 usuarios no registrados viendo
este sitio web

Hay 8 usuarios On Line

Mas o menos esta es la idea, si alguien me puede ayudar
se los agradeceria muchisimo, me urge para insertarlo en la pagian web
de la empresa, gracias.
__________________
México no es México sin su gente, y la democracia no es de algunas personas, es de todos. Hagamos valer nuestros derechos.
  #2 (permalink)  
Antiguo 26/05/2006, 03:16
Avatar de Softdesigner  
Fecha de Ingreso: noviembre-2005
Ubicación: Gijón - Asturias - España
Mensajes: 240
Antigüedad: 18 años, 5 meses
Puntos: 0
Nunca lo hice pero se me ocurre que quizas se pueda metiendo los logins o nombres de cada usuario en un objeto aplication cada vez que se conecte uno. Para listarlos pones el contenido de ese aplication capturando todos los logins que tenga y listo, trabajando con cadenas de texto. Seguro que hay otra forma mas facil pero ahora no se me ocurre.
__________________

  #3 (permalink)  
Antiguo 26/05/2006, 15:45
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 19 años, 7 meses
Puntos: 1
http://www.maestrosdelweb.com/editorial/aspcount/
__________________
3S-CRM
  #4 (permalink)  
Antiguo 31/05/2006, 16:47
Avatar de Boxmaster  
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo capturar las sessiones en el objeto Aplication

gracias por tu respuesta

tengo ese codigo (mostrar numero de sesiones activas) funcionando en mi web en el Global.asa pero no es lo que necesito, tengo la idea...

capturar en el obejeto aplication cada ID de usuario a traves del login y password de el usuario, ya que la web esta protegida. solo que no se como hacerlo. Si se puede hacer ese ID lo compararía con la db de usuarios del sitio y mostraría en la web page los usuarios registrados que estan en linea.

cualquier ayuda será bienvendida
__________________
México no es México sin su gente, y la democracia no es de algunas personas, es de todos. Hagamos valer nuestros derechos.
  #5 (permalink)  
Antiguo 15/03/2009, 17:15
Avatar de polin2bclan  
Fecha de Ingreso: julio-2008
Mensajes: 73
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: como mostrar usuarios registrados en linea

Hola amigo en mi Web tengo un sistema que yo desarrolle.

Empesemos:
ajax.js
Código PHP:
function receiveUserOnline(){
    var 
campoadduseronline document.getElementById('UserList');
    
    
//campoadduseronline.innerHTML = "<div align='center'><img src='pw-includes/imagenes/cargando2.gif' /></div>";
    
httpReceiveUserOnline.open("GET""php_ajax_usuariosonline.php",true);
    
httpReceiveUserOnline.onreadystatechange=function() {
        if (
httpReceiveUserOnline.readyState==4) {
            
campoadduseronline.innerHTML "";
            
campoadduseronline.innerHTML httpReceiveUserOnline.responseText;
            
        }
    }
    
httpReceiveUserOnline.send(null)
    
setTimeout('receiveUserOnline();',5000);

php_ajax_usuariosonline.php
Código PHP:
<?
session_start
();
include(
"./chek_login.php");
Mostrar_Nick_de_usuarios_en_Linea();
function 
Mostrar_Nick_de_usuarios_en_Linea()
{
    include(
"../configuracion.php");
    if (
getenv(HTTP_X_FORWARDED_FOR)=="")
        {
        
$ip getenv(REMOTE_ADDR);
        }
        else
            {
            
$ip getenv(HTTP_X_FORWARDED_FOR);
            }
    
$timeoutseconds 5//5 segundos
    
$timestamp=time();                                                                                            
    
$timeout=$timestamp-$timeoutseconds
    
/*===================================================
    = ADD / AÑADIMOS
    ====================================================*/
    
if(CheckNivel())
        {
        
$consulta mysql_query("select * FROM ".$tb_enlineareg." WHERE usuario='".$_SESSION['usuario_en_login']."'") or die ("Error1");
        
$num_resultados=mysql_num_rows($consulta);
        
$sql=mysql_fetch_array($consulta);
        
$laid=stripslashes($sql["id"]);
        if(
$num_resultados !=0)
            {
            
mysql_query("update ".$tb_enlineareg." set timestamp='".$timestamp."' WHERE id='".$laid."'") or die ("Error2") ;
            }
            else
                {
                
mysql_query("insert into ".$tb_enlineareg." values ('','".$_SESSION['usuario_en_login']."','".$timestamp."')") or die ("Error3") ;
                }
        }
        else
            {
            
$consu_noreg=mysql_query("select * FROM ".$tb_enlineano." WHERE ip='".$ip."'") or die ("Error4");
            
$num_noreg=mysql_num_rows($consu_noreg);
            
$sql_noreg=mysql_fetch_array($consu_noreg);
            
$idnoreg=stripslashes($sql_noreg["id"]);
            if(
$num_noreg !=0)
                {
                
mysql_query("update ".$tb_enlineano." set timestamp='".$timestamp."' WHERE id='".$idnoreg."'") or die ("Error5") ;
                }
                else
                    {
                    
mysql_query("insert into ".$tb_enlineano." values ('','".$ip."','".$timestamp."')") or die ("Error6") ;
                    }
            }
    
/*===================================================
    = ELIMINAMOS / CLEANING
    ====================================================*/
    
mysql_query("DELETE FROM ".$tb_enlineano." WHERE timestamp < ".$timeout."") or die("Useronline Database DELETE Error");
    
mysql_query("DELETE FROM ".$tb_enlineareg." WHERE timestamp < ".$timeout."") or die("Useronline Database DELETE Error");

    
/*===================================================
    = MOSTRAMOS LOS DATOS OBTENIDOS
    ====================================================*/
    
$consulta2 mysql_query("SELECT * FROM ".$tb_enlineareg."") or die ("Erro de consulta en DB") ;
    
$num_resultados2=mysql_num_rows($consulta2);
    if(
$num_resultados2 <> 0)
        {
        for(
$i=0$i<$num_resultados2$i++)
            {
            
$sql2=mysql_fetch_array($consulta2);
            
$useronlinenick=stripslashes($sql2["usuario"]);
            
//Consultamos los datos del usuario segun su nick
            
$consulta3=mysql_query("SELECT id,tipo FROM ".$tb_usuarios." WHERE nick='".$useronlinenick."'") or die ("Error7");    
            
$sql3=mysql_fetch_array($consulta3);
            
$idnick=stripslashes($sql3["id"]);
            
$tiponick=stripslashes($sql3["tipo"]);
            
//echo "UO".$idnick."---".$useronlinenick."---".$tiponick."---";
            
echo "<span class=\"".$tiponick."\" onclick=\"popup_perfil_user(event,'".$useronlinenick."')\" >".$useronlinenick."</span>, ";
            }        
        }
        else
            {
            echo 
"<div align=\"center\">No hay usuarios en linea en este momento.</div>";
            }

}
?>
chek_login.php
Código PHP:
<?
function CheckNivel()
{
include(
"../configuracion.php");
if(!empty(
$_SESSION['usuario_en_login']) && !empty($_SESSION['token']))
    {
       
//quitamos el posible SQLInjection del user y password
       
$_SESSION['usuario_en_login'] = mysql_real_escape_string($_SESSION['usuario_en_login']);
    
$_SESSION['token'] = mysql_real_escape_string($_SESSION['token']);
    
//checamos que exista
    
$consultaChek mysql_query("SELECT * FROM ".$tb_usuarios." WHERE nick = '".$_SESSION['usuario_en_login']."' && token = '".$_SESSION['token']."' ") or die("Error de reconocimiento de usuario");
    if(
mysql_num_rows($consultaChek) == 1)
        {
        
//volvemos a calcular un token
           
$_SESSION['token'] = md5(rand().$_SESSION['usuario_en_login']);
        
mysql_query("UPDATE ".$tb_usuarios." SET token = '".$_SESSION['token']."' WHERE nick = '".$_SESSION['usuario_en_login']."'") or die("Error al actualizar la info de session");
        return 
true;
        }
        else
            {
            return 
false;
            }
    
mysql_free_result($consultaChek);
    
    }
}
?>
configuracion.php
Código PHP:
<?
/*TABLAS DE LA BASE DE DATOS*/
$tb_usuarios="warez_usuarios";
$tb_enlineano="warez_enlineano";
$tb_enlineareg="warez_enlineareg";
/*CONEXION A LA BASE DE DATOS*/
$db mysql_pconnect("localhost","user","password");
if(!
$db)
    {
    echo 
"No se ha podido conectar a la base de datos - Error de conexion";
    exit;
    }
mysql_select_db    ("basededatos");
?>
Solo cambia el nombre al de tu sesión y crea las tablas en tu base de datos. Espero te sirva, en todo caso me puedes escribir por privado. Saludos
  #6 (permalink)  
Antiguo 15/03/2009, 22:31
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 2 meses
Puntos: 88
Respuesta: como mostrar usuarios registrados en linea

Buen apunte, pero creo que por el tiempo original, este ya debio de haber solucionado este detallito...
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 24/05/2010, 22:45
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 14 años
Puntos: 1
Respuesta: como mostrar usuarios registrados en linea

menn una pregunta que vaa enn configuracion.php en las lineas

$tb_enlineano="warez_enlineano";
$tb_enlineareg="warez_enlineareg";

como creo esas tablas? Gracias de ante mano
  #8 (permalink)  
Antiguo 25/05/2010, 14:30
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: como mostrar usuarios registrados en linea

Rescatan un post mil años después y encima es para pegar código PHP xD

Para mi la mejor forma de mostrar usuarios online es seguir el método empleado en foros phpBB.

Cuando el usuario se loguea actualiza un campo DATETIME de la tabla.
Después solo tenemos que generar una consulta para encontrar a los usuarios cuyo DATETIME > FECHA ACTUAL - x minutos.

saludos
__________________
Foro Punk
  #9 (permalink)  
Antiguo 26/05/2010, 07:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 15 años
Puntos: 9
Respuesta: como mostrar usuarios registrados en linea

jaja, sencillisima aproximación la que haces, codelikesdesign. la verdad es que es muy sencilla. Que pasa si en vez de ejecutarlo al hacer el login, lo ejecuto cada vez que cambia de pagina? así sería más precisa la lista.
Lo único es si será tonto cargar la ejecución con ese esfuerzo extra. como lo veis vosotros?
  #10 (permalink)  
Antiguo 26/05/2010, 08:29
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: como mostrar usuarios registrados en linea

Claro, después del login tienes que seguir controlando el CAMPO_DATETIME, pero procurando hacer los menos UPDATES posibles.

Yo utilizo este método con un rango de tiempo de 10 minutos.

En la hoja que contiene los datos de conexión y los datos de sesión del usuario, que está incluida en todas las páginas del sitio hago lo siguiente.

IF CAMPO_DATETIME < DATE THEN
CAMPO_DATETIME = DATE + 10 minutos *Fecha y hora actual + 10 minutos
UPDATE
END IF

De esta manera solo se actualiza como máximo una vez cada 10 minutos por usuario.
Es posible que, en el "peor" de los casos, el usuario abandone la página justo después de actualizar el campo CAMPO_DATETIME, pero solo seguirá mostrádose online durante 10 minutos más... una ridiculez :)

Para mostrar los usuarios online, lo único que tienes que hacer después es generar una consulta a la tabla USUARIOS cuyos valores de la variable CAMPO_DATETIME sean mayores que la fecha y hora actual.

Como ya dije en el post anterior, esto es una adaptación del método empleado en los foros de código abierto phpBB en su versión 2. Si te bajas uno de ellos puedes ver mejor su funcionamiento.
La única diferencia es que en esos foros utilizan un intervalo de 5 minutos, y además, cuando el usuario realiza el UPDATE actualiza un campo de texto con la página actual, que luego utilizan para saber por donde está navegando cada usuario.

saludos :)
__________________
Foro Punk
  #11 (permalink)  
Antiguo 16/08/2013, 19:29
(Desactivado)
 
Fecha de Ingreso: abril-2013
Mensajes: 11
Antigüedad: 11 años
Puntos: 0
Respuesta: como mostrar usuarios registrados en linea

Dejare esto por aqui:

[URL="http://www.maestrosdelweb.com/editorial/aspcount/"]http://www.maestrosdelweb.com/editorial/aspcount/[/URL]
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 05:16.