usuarios de la Fuerza para desconectarse cuando salen de mi página web php?

StackOverflow https://stackoverflow.com/questions/2510839

  •  22-09-2019
  •  | 
  •  

Pregunta

En mi aplicación PHP, estoy usando $ _SESSION para realizar un seguimiento de si un usuario está conectado. Si un usuario hojas de cualquier página de mi sitio en http://mysite.com y va a http://someotherwebsite.com , me quieren que los registre de forma automática, de manera que si regresan a cualquier página de http://mysite.com , necesitan al inicio de sesión de nuevo.

¿Hay una manera fácil de hacer esto?

¿Fue útil?

Solución

No se puede decir de manera explícita cuando un usuario de hojas su sitio, lo mejor sería que para implementar un tiempo de espera en sus sesiones.

Como la mayoría de las respuestas han dicho, que podría comprobar con el evento de JavaScript onbeforeunload pero la lata usuario by-pass este deshabilitando JavaScript o, como BalusC habían señalado , usando un navegador web que no lo soporta, como Opera.

Por lo tanto, creo firmemente implementando un tiempo de espera en sus sesiones es la mejor manera de forzar un cierre de sesión.

Otros consejos

Se podría realizar una llamada AJAX en el onbeforeunload evento para una secuencia de comandos del lado del servidor que matará a la sesión.

A excepción de poner un tiempo de espera en sus sesiones - En realidad no. La única manera que viene a la mente es el caso onbeforeunload JavaScript que se activa cuando las hojas de los usuarios de la página actual, pero ese evento no sabe donde el usuario va. Usted podría sin embargo, si realmente quiere hacer esto, tal vez construir algo basado en la siguiente solución hacky (no probado):

  • establece un evento onbeforeunload que envía una llamada AJAX a su servidor. (Cómo hacer esto con éxito - lo que la llamada recibe a través de antes de la página se cierra -. Es un problema en sí mismo, una búsqueda de "onbeforeunload ajax" en SO debe producir algunos resultados

  • La llamada Ajax comenzará una cuenta atrás diciendo que la sesión de este usuario está a punto de morir en, digamos, quince segundos.

  • Si el usuario está dejando su sitio, se aplica la cuenta atrás.

  • Si el usuario va a otra página en su sitio, que se borre cualquier cuenta atrás "morir" cuando se sirve la página siguiente.

Esto es probable que sea inestable, ya que podría ocurrir que una petición Ajax a partir una cuenta atrás llega al servidor después de la siguiente página ya ha eliminado que cuenta regresiva. Pero si realmente necesita hacer esto, esto puede ser una dirección. Obras para los usuarios con JS permitido solamente, por supuesto.

Una segunda idea cómo implementar esta sería poner un tiempo de espera muy bajo en las sesiones (por ejemplo, 90 segundos), y para poner iframe en todas las páginas que sirven. Iframe que sería luego hacer una llamada a la página cada 60 segundos.

Esto funcionaría sin JavaScript, pero podría crear molestos ruidos de clic en las versiones antiguas de Internet Explorer (no sé si eso se detuvo en 6 o 7?)

Usted no puede (pero sus sesiones el tiempo de espera automáticamente después de un tiempo, por lo que podría establecer el tiempo de espera a un corto período de tiempo).

Por lo que sé acerca de PHP (que no es mucho) sería su aplicación cada vez saben que abandonaron el sitio? Si usted va a someotherwebsite.com, su código no se llama de nuevo hasta que regresen.

Por desgracia, no realmente, Este es uno de los grandes problemas con las aplicaciones web. Sus aplicaciones no tiene manera de saber que el navegador se ha trasladado a un sitio web diferente.

Como se menciona ChristohpeD se puede establecer el tiempo de espera de sesión. Sólo recuerde que su sitio sólo se actualizará el momento en que el servidor recieves un poste o una especie de mesa de ping Javascript.

Esperamos que ayuda

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top