Pregunta

Actualmente, en mi script php, después de que un usuario inició sesión, almacené session_login = 1. Pero tengo un problema. Tengo la costumbre de usar Firefox, pestañas múltiples (creo que la mayoría de las personas y todas las aplicaciones de navegadores web actuales tienen la función de pestañas múltiples). Cerré la pestaña que tiene la sesión, pero no cerré el navegador. Después de unas horas, vuelvo a la misma página que requiere que inicie sesión, pero no es así. No requiere que inicie sesión nuevamente (creo que se llama " Sesión "). ¿Hay alguna forma de cerrar la sesión del usuario si cierra la pestaña en lugar de cerrar el navegador?

Tengo 1 solución en este momento, tiempo de inactividad. Pero, tengo un conocimiento muy limitado en fecha / hora en php, por lo que esta sería la última opción. Quería saber, ¿hay algo más que pueda hacer, además de usar el tiempo inactivo?

¿Fue útil?

Solución

PHP tiene una manera fácil de establecer cuánto durará una sesión antes de que se agote el tiempo de espera:

session_set_cookie_params(3600); // make it expire after 1 hour

Simplemente páselo la cantidad de segundos que desea que dure la sesión (en el ejemplo, 1 hora = 60 minutos = 3600 segundos).

http://us2.php.net /manual/en/function.session-set-cookie-params.php

Otros consejos

Una cookie de sesión solo se borra del navegador cuando la sesión del navegador está cerrada (es decir, cuando el navegador está cerrado): de ahí el nombre. Si desea que la sesión se borre poco después de que se cierre la pestaña, puede establecer un tiempo de vencimiento muy corto en la cookie (alrededor de 5 minutos) y almacenarla en la base de datos. Luego, tenga una función de JavaScript en la página web que llama a un archivo de su servidor cada minuto: este archivo luego se actualiza. la entrada de cookie / base de datos para los próximos cinco minutos. Si luego abandonan su sitio durante más de cinco minutos, la sesión se invalida.

También puede agregar un Javascript " onunload " función que detecta si han cerrado la página web o se han ido a otra página: puede agregar un enlace a esto para llamar a " destroycookie " función: sin embargo, tendrá que comprobar que no hayan ido a otra página de su sitio y que en realidad no tengan dos páginas de su sitio abiertas en dos pestañas.

Creo que la opción que está buscando es la configuración para la caducidad de la cookie de sesión. No recuerdo el comando PHP para él, pero debería poder configurar la cookie para que caduque cuando se cierre la ventana.

Aquí está la documentación de la sesión PHP: http: //us2.php. net / manual / es / book.session.php

¿Quizás podrías usar session_write_close ()?

Hay un comentario sobre la documentación de PHP para la función session_destroy que podría serle útil: http://us2.php.net/manual/en/function.session-destroy.php#71889

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