[Pregunta]: ¿Destruir sessiones?

Iniciado por Leguim, 12 Octubre 2019, 06:11 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Leguim

Hola, gracias por responder!

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


engel lex

oh sorry! XD tuve una crisis y no pude ver esta respuesta, aun no conseguiste?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

animanegra

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.

42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.

MinusFour

Cita de: 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.

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 (php) [Seleccionar]

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.