У меня проблема с файлом, который включает в себя сессию в PHP.
У меня есть следующие два файла php:
confirm_save.php
<?php
include("confirm.php");
$_SESSION = array();
$token = $_SESSION['logout'];if ($token && $_POST['token']==$token) {
if(isset($_COOKIE["id"]) && isset($_COOKIE["user"]) && isset($_COOKIE["pass"])) {
setcookie("id", '', strtotime( '-5 days' ), '/');
setcookie("user", '', strtotime( '-5 days' ), '/');
setcookie("pass", '', strtotime( '-5 days' ), '/');
}
// Destroy the session variables
session_destroy();
/*// Double check to see if their sessions exists
if(isset($_SESSION['username'])){
header("location: message.php?msg=Error:_Logout_Failed");
} else {
header("location: index.php");
exit();
}*/
header("location: index.php");
}
else {
// log potential CSRF attack.
}
unset($_SESSION["logout"]);
?>
Тогда у меня есть confirm.php
<?php
session_start();
$token= md5(uniqid());
$_SESSION['logout'] = $token;
?>
<html>
<body>
<form method="post" action="confirm_save.php">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
Do you really want to log out?
<input type="submit" value=" Yes " />
<input type="button" value=" No " onclick="history.go(-1);" />
</form>
</body>
</html>
После нажатия «да» в файле verify.php я получаю следующую ошибку:
Неопределенный индекс: выход из системы в C: \ wamp \ www \ verify_save.php в строке 4
Строка 4
$token = $_SESSION['logout'];
Я действительно не знаю, в чем может быть ошибка.
Вы опустошаете свой $ _SESSION
$_SESSION = array();
а затем попробуйте заполнить токен $
$token = $_SESSION['logout'];
без значения.
Не должно быть причин для очистки $ _SESSION, а также для определения $ token, так как вы включаете verify.php, который также включает ваш $ token со значением
РЕДАКТИРОВАТЬ
Не включайте подтверждение.
Но сделайте:
<?php
session_start();
$token = $_SESSION['logout'];
if ($_POST['token']==$token) {
…
В строке 3 вы устанавливаете $_SESSION
в пустой массив, что означает, что $_SESSION['logout']
не существует;
$_SESSION = array();
$token = $_SESSION['logout'];
Я не вижу причины, по которой вы хотите очистить массив, чтобы вы могли удалить эту строку.
В любом случае вам не нужна вторая строка. $token
будет доступно, как указано в файле verify.php.