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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como hacer algo cuando se desconecte??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Como hacer algo cuando se desconecte??  (Leído 7,401 veces)
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Como hacer algo cuando se desconecte??
« Respuesta #10 en: 21 Marzo 2009, 07:12 am »

Parte del ajax esta en el Servidor, no Importa si lo cierres, te cae una casa en el pc, el contador que incluso podria estar en php llamado por ajax, ese php esta en el servidor, lo cual salva de cualquier problema por parte del cliente. (browser).

No, ni parte ni nada, lo que está en el servidor es PHP, pero fuera de eso, puedes utilizar como te dijeron bases de datos son sesiones, guardar IP en sesion (en caso de desconexión), identificador de browser (en caso de distinto browser), o tiempo límite de respuesta en caso que no coincida ninguno de los anteriores...

S2


En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Como hacer algo cuando se desconecte??
« Respuesta #11 en: 21 Marzo 2009, 15:31 pm »

Mediante ajax haz que el usuario realice peticiones constantemente (cada 10/30/60 segundos), en el momento en el que en un periodo del tiempo, fijado anteriormente, no se reciba ninguna petición significará que el usuario se habrá desconectado (cerrado el navegador, apagado el ordenador, sin conexión a internet, etc, etc).

Esta es la respuesta más acertada creo yo, pero tengo una duda. Como compruebas que no has recibido ninguna petición? Quiero decir yo entro en la página y se registra mi sesión y ahora me voy, por lo tanto, qué proceso es el que analizaría cada 20 o 30 segundos si sigo o no online? si ya no estoy ejecutando ninguna página? No sé si me explico, si alguien me entiende que por favor conteste, sino diganmelo y me explico un poco mejor xD


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Como hacer algo cuando se desconecte??
« Respuesta #12 en: 21 Marzo 2009, 15:52 pm »

Insisto en bases de datos  :xD aca tengo un script php para usuarios en linea y ese lo puedes adaptar para lo que quieres hacer:

Código
  1. <?php
  2. $dbhost = "localhost";
  3. $dbuser = "root";
  4. $dbpass = "a";
  5. $dbname = "test";
  6. $contime = 60;
  7.  
  8. $con = mysql_connect($dbhost, $dbuser, $dbpass);
  9. mysql_select_db($dbname, $con);
  10.  
  11. $fecha = time();
  12. $ip = $_SERVER['REMOTE_ADDR'];
  13. $tiempo = ($fecha+$contime);
  14.  
  15. mysql_query("DELETE FROM gente_enlinea WHERE fecha < '$fecha'");
  16. $query = mysql_query("SELECT * FROM gente_enlinea WHERE ip = '$ip'");
  17.  
  18. if(mysql_num_rows($query)){
  19. mysql_query("UPDATE TABLE gente_enlinea SET fecha = '$tiempo' WHERE ip = '$ip'");
  20. }else {
  21. mysql_query("INSERT INTO gente_enlinea(fecha, ip) VALUES('$tiempo', '$ip')");
  22. }
  23.  
  24. $on = mysql_num_rows(mysql_query("SELECT * FROM gente_enlinea"));
  25. echo $on;
  26. ?>
  27.  

La tabla gente_enlinea tiene 2 campos ip y fecha nada mas
« Última modificación: 21 Marzo 2009, 16:00 pm por naderST » En línea

yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
Re: Como hacer algo cuando se desconecte??
« Respuesta #13 en: 21 Marzo 2009, 17:08 pm »

Mediante ajax haz que el usuario realice peticiones constantemente (cada 10/30/60 segundos), en el momento en el que en un periodo del tiempo, fijado anteriormente, no se reciba ninguna petición significará que el usuario se habrá desconectado (cerrado el navegador, apagado el ordenador, sin conexión a internet, etc, etc).

Esta es la respuesta más acertada creo yo, pero tengo una duda. Como compruebas que no has recibido ninguna petición? Quiero decir yo entro en la página y se registra mi sesión y ahora me voy, por lo tanto, qué proceso es el que analizaría cada 20 o 30 segundos si sigo o no online? si ya no estoy ejecutando ninguna página? No sé si me explico, si alguien me entiende que por favor conteste, sino diganmelo y me explico un poco mejor xD

Imaginen que encerramos una mariposa en una caja transparente, cerrada al vacio, la tapamos con una manta y la dejamos ahí durante 1 día...

¿Cuando sabremos si la mariposa sigue viva? Cuando destapemos la manta.

Ahora la mariposa es el usuario, que siga viva significa que sigue conectado, la caja es la página Web y la acción de quitar la manta es cuando nosotros visitamos la página Web administrativa para saber quien sigue conectado.

La página Web que visita el usuario es simple; cada vez que el usuario haga una petición cada X segundos se actualizará en la base de datos la fecha y hora exacta (timestamp) en la que realizó la petición. A este valor lo llamaremos Y.

Ahora nosotros visitamos la página Web administrativa (destapamos la manta) y hacemos la siguiente consulta para saber aquellos usuarios que no se encuentran conectados:

timestamp - valor Y del usuario > X

Si la diferencia entre la fecha actual y la fecha del usuario es mayor que X deducimos que el usuario no se encuentra activo, ya que cada X segundos el usuario tubo que actualizar el valor de Y, y si no lo hizo fue por que se desconectó...

¿Por qué os he metido el cuento de la mariposa? Porque en este caso, hasta que nosotros no visitamos la página Web administrativa no somos conscientes de la realidad, al igual que hasta que no destapamos la manta no sabemos si la mariposa sigue viva...

Existe otro método... que seria como quitarle la manta a la caja o quitársela en periodos de Z segundos y observarla continuamente. Para ello habría que ejecutar una aplicación en el servidor para que esté alerta todo el tiempo en busca de usuarios desconectados, en base a la consulta de arriba.

Y he ahí la cuestión, ¿queremos ser nosotros quien avisa o queremos que nos avisen?
En línea

OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Re: Como hacer algo cuando se desconecte??
« Respuesta #14 en: 21 Marzo 2009, 20:24 pm »

Parte del ajax esta en el Servidor, no Importa si lo cierres, te cae una casa en el pc, el contador que incluso podria estar en php llamado por ajax, ese php esta en el servidor, lo cual salva de cualquier problema por parte del cliente. (browser).

No, ni parte ni nada, lo que está en el servidor es PHP, pero fuera de eso, puedes utilizar como te dijeron bases de datos son sesiones, guardar IP en sesion (en caso de desconexión), identificador de browser (en caso de distinto browser), o tiempo límite de respuesta en caso que no coincida ninguno de los anteriores...

S2

a?
Insisto en lo de ajax, ahorras mucho mas codigo. y tambien optimizacion ¡ lo que es fundamental, te puedes crear un sistema completa en php y mysql pero si lo puedes hacer en ajax, mucho mejor ¡.

insito en la nocion de yeikos

Saludos¡
En línea

Undersecurity.net
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Como hacer algo cuando se desconecte??
« Respuesta #15 en: 22 Marzo 2009, 09:58 am »

Gracias yeikos. Buena explicación mediante el principio de incertidumbre de Heisenberg, eso sí, cambiando el gato por una mariposa xD

Ya entendí como hacerlo, el momento de comprobar quien está online será cuando yo me conecte al panel de adminstración. Gracias por la explicación.

Saludos!
En línea

yeikos


Desconectado Desconectado

Mensajes: 1.424



Ver Perfil
Re: Como hacer algo cuando se desconecte??
« Respuesta #16 en: 22 Marzo 2009, 16:50 pm »

jaja, la verdad es que cambié el gato por la mariposa porque me parecía muy cruel xd

saludos!
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