Я написал сценарии входа/выхода из системы на моей веб-странице, и когда пользователь входит в систему, я храню в переменной $_SESSION
пользовательский агент. Теперь каждый раз, когда страница загружается, я проверяю, зарегистрирован ли пользователь или нет, и если он зарегистрирован, я проверяю, изменился ли пользовательский агент или все тот же, чтобы предотвратить угон. В случае, если оно изменилось Звоню logOut()
функцию:Предотвращение захвата сеанса в PHP
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();
}
Теперь проблема заключается в том, что право пользователь все еще может перейти мой сайт, как вошли в то время как я хотел бы, чтобы он вышел из системы. В чем может быть проблема?
Для проверки этого кода я вошел в систему через Mozilla Firefox, и я скопировал значение cookie в Chrome и перезагрузил домашнюю страницу, и, как и ожидалось, я не могу войти в систему с Chrome, но если я перезагружу страницу в Mozilla, это до сих пор вошли в систему.
'$ _SESSION = array();' ничего не удаляет. Он только отключает переменную '$ _SESSION'. –