Foros del Web » Programando para Internet » PHP »

Detectar cierre del explorador

Estas en el tema de Detectar cierre del explorador en el foro de PHP en Foros del Web. Como detecto el cierre del explorador con php?.Cual es la manera mas efectiva de evitar el acceso a varias paginas?. Lo que pienso hacer es ...
  #1 (permalink)  
Antiguo 12/01/2004, 12:52
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Detectar cierre del explorador

Como detecto el cierre del explorador con php?.Cual es la manera mas efectiva de evitar el acceso a varias paginas?. Lo que pienso hacer es crear un archivo acceso.txt que cuando este en uno se pueda acceder a todas las paginas y cuando este en cero no.El archivo se pone en uno desde cuando ingresa al sistema el usuario.Por eso necesito detectar el cierre.

Gracias de antemano.
  #2 (permalink)  
Antiguo 12/01/2004, 17:22
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
No puedes detectar el cierre del navegador con PHP.

¿POR QUÉ NO?

PHP genera un código HTML (o lo que sea) y lo manda al cliente (navegador). Una vez ha mandado el código, PHP no tiene noticias del usuario hasta que este hace otra nueva petición. Si el usuario cierra el navegador, o si está mucho rato quieto mirando una página, PHP no lo sabe.

La única "solución" que se me ocurre, es ir recargando la página cada X tiempo.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 12/01/2004, 17:29
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
No puedes detectar el cierre del navegador con PHP.

¿POR QUÉ NO?

PHP genera un código HTML (o lo que sea) y lo manda al cliente (navegador). Una vez ha mandado el código, PHP no tiene noticias del usuario hasta que este hace otra nueva petición. Si el usuario cierra el navegador, o si está mucho rato quieto mirando una página, PHP no lo sabe.

La única "solución" que se me ocurre, es ir recargando la página cada X tiempo.
__________________
M a l d i t o F r i k i
  #4 (permalink)  
Antiguo 12/01/2004, 17:47
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
No hay otra opción?

Esta claro que php no se entera de nada, pero si al cerrar la ventana envio alguna señal(alguna pagina que se encargue de cerrar la sesión) estaría resuelto el problema. Eso es lo que pregunto, hay alguna forma??
  #5 (permalink)  
Antiguo 12/01/2004, 21:02
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 14 años, 3 meses
Puntos: 0
Yo lo haria así

Si declaras una galleta y no le definis cuanto tipo queres que este en ese equipo la misma se borra apenas el explorer se cierre entonces podes ir perguntando por esa galleta y si no esta sabes que el cliente te cerro el explorador.

Te sirvio???
era eso?
Saludos
  #6 (permalink)  
Antiguo 13/01/2004, 02:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El unico que puede detectar que se cierra el navegador es el propio navegador. Y el lenguaje del navegador es javascript. Creo que hay eventos para detectarlo, pero no estoy seguro.

Otra cosa es que en ese evento te las apañes para cargar un script para notificar a PHP del hecho.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 13/01/2004, 07:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en javascirpt está el evento OnUnload() (no sé como andará de compatibilidad entre navegadores) .. así que si lo ejecutas en el <body> y ahí mandas a llamar a tu código que haga un redireccionamiento/carge otra pàgina en el navegador (window.location .. o similar) podrías mandar a ejecutar algún scirpt/página ante dicho evento.

Pero, .. de esto y más detalles de uso que te lo detallen en el foro de Javacript. PHP como ya te han comentado no gestiona directamente ese proceso que se realice en una ventana de un navegador .. eso es cosa del "cliente" . .no del "servidor".

Por lo demas .. sin uso de "detectar el cierre de un navegador" . .Para esos problemas de "concurrencia" se usan registros de tiempos en el que un usuario entra a tu sistema (hace logín) y se actualiza ese tiempo a cada interacción con el servidor, a su vez se determina un tiempo máximo de sesión . .es decir; cuanto tiempo consideras que un usuario pasa a inactivo si no ha pedido ninguna página al servidor (pedir página= recargar página . .pinchar un link, ejecutar un formulario .. etc). Si ese tiempo es mayor al que recoges en cada carga de una página para ese usuario .. es que "expirò". Para los casos en que los usuarios no "salen por la puerta" (es decir .. que no usan tu "logout" que sería donde "resetarias" ese campo de tiempo o flag que indique "en uso archivo o usuario activo" ... ) se tienen rutinas que revisan esos tiempos de "ultima interacción con el servidor" y determinan si expiró borrando esa entrada en ese regitro. Ese proceso lo puedes ejecutar bajo un "cron job" (taréa programada a intervalos de tiempo) o bien en una de las pàginas de tu aplicación que sepas que tiene suficientes ejecuciones).

Esto es básicamente como funciona un sistema de "usuarios activos" .. que es perfectamente aplicable otros tipos de sistemas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:41.