Я знаю, что это общий вопрос, но, похоже, он не может работать.
Пользователь регистрируется и сеанс добавляется переменная.
Затем пользователь выходит из системы и запускается скрипт php, и сеанс уничтожается.
Я распечатываю сеанс на странице index.php после выхода из системы и пуст.
Но пользователь все еще может видеть страницу входа в систему, если они отжимают ???
Для уничтожения сеанса я использую следующий код:
session_start(); session_unset(); session_destroy(); session_write_close(); setcookie(session_name(),'',0,'/'); session_regenerate_id(true); unset($_SESSION["username"]); header("Location: index.php");
используя это, чтобы проверить, был ли сеанс уничтожен на странице index.php:
print_r("session".$_SESSION);
Каждая страница также имеет этот код для предотвращения кеширования:
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header ("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); <meta http-equiv="expires" content="WED, 01 JUL 2009 05:00:00 GMT" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="pragma" content="no-cache" />
Я могу успешно запретить пользователю вводить URL-адрес веб-адреса и получать доступ к защищенным страницам, используя следующий код:
if(!isset($_SESSION['user'])) { echo 'no session in here'; session_start(); session_unset(); session_destroy(); session_write_close(); setcookie(session_name(),'',0,'/'); session_regenerate_id(true); $_SESSION['username'] = ''; header("Location: index.php"); die("Redirecting to: index.php"); }
сессия должна начинаться с первой строки скрипта
<?php session_start(); if(!isset($_SESSION['user'])) { echo 'no session in here'; session_unset(); session_destroy(); session_write_close(); setcookie(session_name(),'',0,'/'); session_regenerate_id(true); $_SESSION['username'] = ''; header("Location: index.php"); die("Redirecting to: index.php"); }