El uso de sessions es una buena forma de hacerlo, y es un método muy común para controlar la autenticación.
El flujo general se ve algo como esto: visitas sitio
- usuario y session_start() se llama. Se establece un identificador de sesión único para ese visitante (es decir, una cookie).
- El usuario envía sus credenciales de acceso a un formulario de acceso
- credenciales de acceso se verifican, y este hecho se almacena en los datos de la sesión con
$_SESSION['logged_in'] = true
, o algo similar
- Para el resto del tiempo del usuario en el sitio, puede comprobar
$_SESSION['logged_in']
para ver si el usuario ha iniciado sesión.
con el fin de controlar los inicios de sesión de un usuario, simplemente podría tener un campo de una base de datos (users
mesa está muy bien) que indica lo que el id de sesión actual es (recuperada con session_id()
) para el usuario, y si no coincide con el valor de la cookie que jus t recibido, inmediatamente llama al session_destroy()
para esa identificación y considera que el usuario ha cerrado la sesión.
El uso de $_SESSION
significa que no tiene que preocuparse por generar sus propios tokens, y le da la potencia de los superglobales incorporados para facilitar el almacenamiento de información sobre el estado de autenticación del usuario.
Personalmente, permitiría que varias sesiones estén activas para un usuario en la mayoría de los sitios web, ya que generalmente no hay una buena razón para no hacerlo, pero obviamente depende de la naturaleza del sitio. Sin embargo, almacenar la identificación de la sesión activa actual como se mencionó anteriormente es una forma bastante simple de lograr esto.
El almacenamiento de la ID de sesión en la base de datos es incluso mejor. – TravisO
Eso también funcionaría, TravisO :) – Sampson