Escribí los scripts de inicio / cierre de sesión de mi página web y cuando el usuario inicia sesión almaceno en la variable $_SESSION
el agente de usuario. Ahora, cada vez que se carga una página, compruebo si el usuario ha iniciado sesión o no, y si ha iniciado sesión, compruebo si el agente de usuario ha cambiado o sigue siendo el mismo para evitar el secuestro. En caso de que haya cambiado, llamo a mi función logOut()
:
function logOut($conn)
{
$sql = "UPDATE Users SET logged='no' WHERE username='" . $_SESSION['username'] ."'";
$conn->query($sql);
// Unset all session values
$_SESSION = array();
// get session parameters
$params = session_get_cookie_params();
// Delete the actual cookie.
setcookie(session_name(), '', time() - 42000,
$params["path"],
$params["domain"],
$params["secure"],
$params["httponly"]);
// Destroy session
session_destroy();
}
Ahora, el problema es que el usuario correcto todavía puede navegar por mi sitio web cuando haya iniciado sesión, mientras que me gustaría tenerlo desconectado. ¿Cuál podría ser el problema?
Para probar mi código, inicié sesión con Mozilla Firefox y copié el valor de la cookie en Chrome, volví a cargar la página de inicio y, como era de esperar, no puedo iniciar sesión con Chrome, pero si vuelvo a cargar la página en Mozilla, sigue siendo conectado. Si elimino la verificación de agente de usuario, puedo acceder a la página cuando inicié sesión en Chrome para que mi código funcione a medias.