У меня есть простой логин в системе, где есть 2 типа пользователей (роль: 0,1). Если пользователь имеет роль 0, то пользователь перенаправляется на поиск. php, иначе роль 1, перенаправляется на обзор. php.
if ($role == 0){
session_regenerate_id();
$_SESSION['loggedin'] = TRUE;
$_SESSION['name'] = $_POST['email'];
$_SESSION['id'] = $id;
header('Location: search.php');
} elseif ($role == 1) {
session_regenerate_id();
$_SESSION['loggedin'] = TRUE;
$_SESSION['user'] = $name;
$_SESSION['name'] = $_POST['email'];
$_SESSION['id'] = $id;
header('Location: overview.php');
}
Я могу выйти из системы и уничтожить сеанс, но если оба Пользователь вошел в систему и один пользователь выйдет из системы, он завершит сеанс для обоих пользователей. Вот мой выход из системы. php:
<?php
// Initialize the session
session_start();
// Destroy the session.
session_destroy();
header('Location: login.php');
exit;
?>
Тогда я нашел это решение source . Я не был уверен, как получить to_destroy_id ($ des), поэтому я установил для него идентификатор текущей сессии. Вот мой обновленный выход из системы. php:
<?php
$des = session_id();
// 1. commit session if it's started.
if (session_id()) {
session_commit();
}
// 2. store current session id
session_start();
$current_session_id = session_id();
session_commit();
// 3. hijack then destroy session specified.
session_id($des);
session_start();
session_destroy();
session_commit();
// 4. restore current session id. If don't restore it, your current session will refer to the session you just destroyed!
session_id($current_session_id);
session_start();
session_commit();
// Redirect to the login page:
header('Location: restTablet.php');
?>
Это сработало в первый раз, затем снова перестало работать. Все выходят из системы, если один пользователь выходит из системы. Я просто хотел бы уничтожить сеанс пользователя, если он нажал кнопку «Выйти», а другие пользователи остались в системе. Любая идея, как я могу это реализовать?
ОБНОВЛЕНИЕ: внесение следующих изменений в выход из системы. php Я смог оставьте других вошедших в систему, если один пользователь вышел из системы, но как только пользователь выйдет из системы и попытается go назад, пользователь сможет снова получить к нему доступ без входа в систему. Вот выход из системы. php:
<?php
$des = session_id();
// 1. commit session if it's started.
if (session_id()) {
session_commit();
}
// 2. store current session id
session_start();
$current_session_id = session_id();
session_commit();
// 3. hijack then destroy session specified.
session_id($des);
session_start();
session_destroy();
session_commit();
// Redirect to the login page:
header('Location: gabLogin.php');
?>