Как я могу закодировать аккаунт, выйти из моей системы. Я использовал header (), чтобы вернуть его обратно на страницу индекса и уничтожить все существующие переменные сеанса. Он уничтожает сеанс, но возвращает на предыдущую страницу без переменных сеанса (таких как имя пользователя). Каков наилучший способ сделать этот модуль выхода из моего веб-сайта?
Вы можете просто очистить $_SESSION
Это более или менее то, что я делаю:
Каждая страница, для которой требуется действительный вход в систему перед ее отображением, проверяется на наличие действительных переменных сеанса, а также соответствующей записи активного сеанса входа в базу данных. Если эти условия не выполняются, пользователь перенаправляется с предупреждением об ошибке.
<a href='logout.php'>Logout</a>
В logout.php:
function deleteSessionCookie() {
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
}
function deleteSessionIfExists() {
if (session_id() != "") {
$_SESSION = array();
deleteSessionCookie();
session_unset();
session_destroy();
}
}
session_start();
// record logout dateTime in db
// Update existing record using $_SESSION["loginCode"] set during login.
deleteSessionIfExists();
// redirect to index page of website
РЕДАКТИРОВАТЬ: В верхней части страниц, требующих входа в систему, у меня будет что-то вроде этого:
session_start();
if (empty($_SESSION["loginCode"]) || empty($_SESSION["userCode"]))
header('index.php?alert=Invalid session');
В моем случае я также проверяю наличие многих других переменных сеанса, которые я создал во время входа в систему, и я также проверяю значения сеанса на согласованность с базой данных. (Я поместил все тесты в функцию, например isValidSession()
который возвращает true или false, который я могу легко включить на каждой странице, где это необходимо.)