Ошибка с объявлением сессии PHP

У меня проблема с файлом, который включает в себя сессию в 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'];

Я действительно не знаю, в чем может быть ошибка.

2

Решение

Вы опустошаете свой $ _SESSION

$_SESSION = array();

а затем попробуйте заполнить токен $

$token = $_SESSION['logout'];

без значения.

Не должно быть причин для очистки $ _SESSION, а также для определения $ token, так как вы включаете verify.php, который также включает ваш $ token со значением

РЕДАКТИРОВАТЬ

Не включайте подтверждение.

Но сделайте:

<?php

session_start();
$token = $_SESSION['logout'];
if ($_POST['token']==$token) {

3

Другие решения

В строке 3 вы устанавливаете $_SESSION в пустой массив, что означает, что $_SESSION['logout'] не существует;

$_SESSION = array();
$token = $_SESSION['logout'];

Я не вижу причины, по которой вы хотите очистить массив, чтобы вы могли удалить эту строку.

В любом случае вам не нужна вторая строка. $token будет доступно, как указано в файле verify.php.

3

По вопросам рекламы [email protected]