Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 12 Octubre 2019, 06:11 am



Título: [Pregunta]: ¿Destruir sessiones?
Publicado por: Leguim en 12 Octubre 2019, 06:11 am
Buenas noches,
Quería sabes como podría destruir una session de un usuario en todos los navegadores/clientes...
Por ejemplo en un sistema en el cual cambio mi contraseña voy a querer que mi session se cierre en todos los navegadores...


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: engel lex en 12 Octubre 2019, 09:32 am
para esto tienes que manejar las sesiones un poco mas manualmente, hacer tu propia base de datos y salvar los id de sesion, en ese caso, destruir sesion es solo cosa de eliminar de esa base de datos los registros de las sesiones activas


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: Leguim en 12 Octubre 2019, 18:52 pm
Hola, gracias por responder!

Te pude entender un poco aunque no me quedo muy claro...
¿Como dirias?


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: Leguim en 17 Octubre 2019, 15:03 pm
Revivo


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: engel lex en 1 Noviembre 2019, 04:13 am
oh sorry! XD tuve una crisis y no pude ver esta respuesta, aun no conseguiste?


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: animanegra en 1 Noviembre 2019, 11:09 am
Hay un método mas laxo que no requiere hacer un storing de todas sesiones y realizar un destroy de las sesiones. Puedes utilizar un timestamp. En la sesion guardas que hora es cuando hace login y en la base de datos poner en la base de datos almacenas que hora es cuando cambie la password (poniendo solo en los datos de esa sesion el timestamp).
Si alguien entra, existe sesion y es mas vieja que el timestamp pues le quitas la información de la sesion y que tenga que volver a hacer login. No se si se entiende.


Título: Re: [Pregunta]: ¿Destruir sessiones?
Publicado por: MinusFour en 1 Noviembre 2019, 13:13 pm
Hay un método mas laxo que no requiere hacer un storing de todas sesiones y realizar un destroy de las sesiones. Puedes utilizar un timestamp. En la sesion guardas que hora es cuando hace login y en la base de datos poner en la base de datos almacenas que hora es cuando cambie la password (poniendo solo en los datos de esa sesion el timestamp).
Si alguien entra, existe sesion y es mas vieja que el timestamp pues le quitas la información de la sesion y que tenga que volver a hacer login. No se si se entiende.

No hace falta guardar un campo extra, si vas a estar haciendo una query constantemente, puedes simplemente guardar el hash del pass del usuario en la sesión. Si el hash cambia en la base de datos (porque cambió la contraseña) la verificación debería fallar:

Código
  1. if($_SESSION['hash'] !== $hashUsuarioBD) session_destroy();

Esto también te permitiría por ejemplo no destruir la sessión, sino permitirle al usuario que actualize el hash de la session para que no pierda todo lo que ha hecho ya en esa sesión.