Ho scritto gli script di accesso / disconnessione della mia pagina Web e quando l'utente accede memorizzo nella variabile $_SESSION
l'agente utente. Ora ogni volta che una pagina viene caricata, controllo se l'utente è connesso o meno e se è loggato, controllo se l'agente utente è cambiato o è sempre lo stesso per prevenire il dirottamento. Se è cambiato, chiamo la mia funzione 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();
}
Ora il problema è che l'utente giusto può ancora navigare nel mio sito web come connesso mentre vorrei che si disconnettesse. Quale potrebbe essere il problema?
Per testare il mio codice ho effettuato l'accesso utilizzando Mozilla Firefox e ho copiato il valore del cookie in Chrome e ricaricato la home page e come previsto non riesco ad accedere con Chrome ma se ricarico la pagina in Mozilla è ancora connesso. Se rimuovo il controllo di user-agent, sono in grado di accedere alla pagina come effettuato l'accesso in Chrome, quindi il mio codice funziona a metà.