elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [SOLUCIONADO] Como detecto cuando el usuario abandone la pagina ??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Como detecto cuando el usuario abandone la pagina ??  (Leído 5,442 veces)
SirLanceCC


Desconectado Desconectado

Mensajes: 1.093


Ver Perfil WWW
Re: Como detecto cuando el usuario abandone la pagina ??
« Respuesta #10 en: 16 Julio 2008, 22:39 pm »

Citar
vaya, si el tiempo (10+5) se queda por abajo del tiempo actual entonces se supone que esta aparte debemos detectar si esta aun o no existente su session
Tu quieres hacer un método que averigue si aun está en la página. Ya te comentamos que eso no se puede por las desventajas que ya describimos. Esto no detecta nada, sólo supone que ya no está, que pasaron 5 minutos y ya se fue.

Por ejemplo en el foro siempre estoy loggueado. La cookie de mi sesión caducará como en mil años. Sin embargo si no accedo a la página después de un rato aparezco como desconectado.



En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como detecto cuando el usuario abandone la pagina ??
« Respuesta #11 en: 16 Julio 2008, 22:41 pm »

Citar
vaya, si el tiempo (10+5) se queda por abajo del tiempo actual entonces se supone que esta aparte debemos detectar si esta aun o no existente su session
Tu quieres hacer un método que averigue si aun está en la página. Ya te comentamos que eso no se puede por las desventajas que ya describimos. Esto no detecta nada, sólo supone que ya no está, que pasaron 5 minutos y ya se fue.

Por ejemplo en el foro siempre estoy loggueado. La cookie de mi sesión caducará como en mil años. Sin embargo si no accedo a la página después de un rato aparezco como desconectado.



Ok si ya veo, solo que me estuve empenando en hacerlo de otra forma... pero ya veo que es mejor hacerlo directamente con un temporizados FIJO...

Por otra parte... si el usuario cierra la ventana ya no podre comprobar su hora actual con la hora limite maximo, entonces tendria que comprobar todos los usuarios que esten en la tabla LOG y tengan el campo fehc_logout vacio...


« Última modificación: 16 Julio 2008, 22:58 pm por Diabliyo » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Como detecto cuando el usuario abandone la pagina ??
« Respuesta #12 en: 16 Julio 2008, 23:36 pm »

Listo... Ya pude hacer que la sesion se cierre en un tiempo determinado, pero tambien tomando en cuenta que el usuario NO este activo en la pagina, en el caso que este activo pues le actualiza el tiempo y le agrega tiempo extra. Fue simple:

Código:
<?php
function deamon_logd()
{
$ip= $_SERVER['REMOTE_ADDR'];
$nav= get_browser();

//Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

$log_cons= consultar_con( "LOG", "SESION='". session_id(). "'" );

if( mysql_num_rows($log_cons)==0 ) //no existe la SESION, esta entrando nuevo usuario
{
//recolectamos informacion
while (list($key, $val)=each($nav))
{
if( !strcmp($key, "parent" ) )
$navegador= $val;
else if( !strcmp($key, "platform" ) )
$so= $val;
}

$trama= array(
"nick"=>"'Visitante'",
"ip"=>"'". $ip. "'",
"so"=>"'". $so. "'",
"navegador"=>"'". $navegador. "'",
"sesion"=>"'". session_id(). "'",
"fecha_login"=>"'". time(). "'"
);

insertar_bdd( "LOG", $trama );
}
else //la SESION ya existe
{
if( usuario_legitimo() )
{
$trama= array(
"sesion"=>"'". session_id(). "'",
"nick"=>"'". $_SESSION["log_usr"]. "'"
);

actualizar_bdd( "LOG", $trama );
}
}

unset($log_cons);

//establece los cierres de sesion
temporizador_de_sesiones();
}

function temporizador_de_sesiones()
{
$log_cons= consultar_con( "LOG", "FECHA_LOGOUT=''" ); //consultamos sesiones abiertas
$flag=0; //bandera para saber si debemos cerrar la sesion o dejarla abierta

while( $buf= mysql_fetch_array($log_cons) )
{
//si la SESION es igual, aun esta activo en la web
if( !strcmp( session_id(), $buf["SESION"] ) )
$flag=1; //bandera activada

//si la no esta activada, entonces posiblemente no este conectado
if( $flag==0 )
{
if( ($buf["FECHA_LOGIN"]+(10*60)) < time() ) //si el tiempo se vencio se cierra la sesion
{
$trama= array(
"ID"=>"'". $buf["ID"]. "'",
"FECHA_LOGOUT"=>"'". time(). "'"
);

actualizar_bdd( "LOG", $trama );
}
}
else //entonces esta conectado, se actualiza el tiempo de sesion
{
$trama= array(
"ID"=>"'". $buf["ID"]. "'",
"FECHA_LOGIN"=>"'". time(). "'"
);

actualizar_bdd( "LOG", $trama );
}

unset($trama);
$flag=0; //desactivamos bandera
}

unset($buf);
unset($log_cons);
}
?>
« Última modificación: 17 Julio 2008, 00:34 am por Diabliyo » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines