Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: isseu en 21 Marzo 2009, 00:45 am



Título: Como hacer algo cuando se desconecte??
Publicado por: isseu en 21 Marzo 2009, 00:45 am
Me explico,
Estoy haciendo un pagina en php, en donde se cargan archivos, pero estos archivos la idea no es almacernarlos sino sacar info de ellos, entonces necesito que mientras la persona X este conectada los archivos esten en el servidor pero solo cuando ella se salga o cierre la pagina estos archivos se borren, ¿como hago esto?
gracias de antemano


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: дٳŦ٭ en 21 Marzo 2009, 02:13 am
Me explico,
Estoy haciendo un pagina en php, en donde se cargan archivos, pero estos archivos la idea no es almacernarlos sino sacar info de ellos, entonces necesito que mientras la persona X este conectada los archivos esten en el servidor pero solo cuando ella se salga o cierre la pagina estos archivos se borren, ¿como hago esto?
gracias de antemano

Con ajax, en el evento de cierre desencadena una peticion a un php que lo unico que haga es borrar los archivos.

Saludos


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: isseu en 21 Marzo 2009, 02:17 am
Si pero si el navegador se cierra de golpe (se apaga el pc, nose), no habria comunicacion ajax ¿o no?


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: дٳŦ٭ en 21 Marzo 2009, 02:33 am
Si pero si el navegador se cierra de golpe (se apaga el pc, nose), no habria comunicacion ajax ¿o no?

Asi es.


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: naderST en 21 Marzo 2009, 02:54 am
Usa una base de datos.


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: yeikos en 21 Marzo 2009, 04:18 am
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).


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: Mr. Crowley en 21 Marzo 2009, 05:05 am
Creo que ninguna de las soluciones es la correcta! (estoy un poco borracho, pero puedo contestar jejejejeje)

En realidad me he preguntado mucho por eso... y he llegado a la conclusion (sin investigar mcuho)... Lo que hay que hacer es una base de datos para registrar las sesiones (pienso yo)... Luego, crear una aplicacion e instalarla en el servidor, y que verifique que usuarios estan Online, y si no lo estan... entonces eliminarlos y eliminar todos los rastros del mismo (llamese archivos subidos, pedidos, lo que sea)...

Disculpen la embriaguez!  :silbar:


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: OzX en 21 Marzo 2009, 05:25 am
Creo que ninguna de las soluciones es la correcta! (estoy un poco borracho, pero puedo contestar jejejejeje)

En realidad me he preguntado mucho por eso... y he llegado a la conclusion (sin investigar mcuho)... Lo que hay que hacer es una base de datos para registrar las sesiones (pienso yo)... Luego, crear una aplicacion e instalarla en el servidor, y que verifique que usuarios estan Online, y si no lo estan... entonces eliminarlos y eliminar todos los rastros del mismo (llamese archivos subidos, pedidos, lo que sea)...

Disculpen la embriaguez!  :silbar:

ehmmm para k complicarse la vida?

La opcion de yeikos  me parece la mas acertada, incluso con algun framework, jquery es muxisimo mas facil.
Saludos¡


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: Mr. Crowley en 21 Marzo 2009, 05:48 am
Creo que ninguna de las soluciones es la correcta! (estoy un poco borracho, pero puedo contestar jejejejeje)

En realidad me he preguntado mucho por eso... y he llegado a la conclusion (sin investigar mcuho)... Lo que hay que hacer es una base de datos para registrar las sesiones (pienso yo)... Luego, crear una aplicacion e instalarla en el servidor, y que verifique que usuarios estan Online, y si no lo estan... entonces eliminarlos y eliminar todos los rastros del mismo (llamese archivos subidos, pedidos, lo que sea)...

Disculpen la embriaguez!  :silbar:

ehmmm para k complicarse la vida?

La opcion de yeikos  me parece la mas acertada, incluso con algun framework, jquery es muxisimo mas facil.
Saludos¡


Si, pero... que pasa si el usuario cierra el navegador en un momento X... donde Ajax no haga la verificacion?? Seguiriamos en las mismas  ;D


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: OzX en 21 Marzo 2009, 06:18 am
Creo que ninguna de las soluciones es la correcta! (estoy un poco borracho, pero puedo contestar jejejejeje)

En realidad me he preguntado mucho por eso... y he llegado a la conclusion (sin investigar mcuho)... Lo que hay que hacer es una base de datos para registrar las sesiones (pienso yo)... Luego, crear una aplicacion e instalarla en el servidor, y que verifique que usuarios estan Online, y si no lo estan... entonces eliminarlos y eliminar todos los rastros del mismo (llamese archivos subidos, pedidos, lo que sea)...

Disculpen la embriaguez!  :silbar:

ehmmm para k complicarse la vida?

La opcion de yeikos  me parece la mas acertada, incluso con algun framework, jquery es muxisimo mas facil.
Saludos¡


Si, pero... que pasa si el usuario cierra el navegador en un momento X... donde Ajax no haga la verificacion?? Seguiriamos en las mismas  ;D

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).

Saludos¡


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: Karman 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


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: Spider-Net 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


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: naderST 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


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: yeikos 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?


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: OzX 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¡


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: Spider-Net 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!


Título: Re: Como hacer algo cuando se desconecte??
Publicado por: yeikos 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!