PHP会话声明出错

时间:2014-10-21 01:54:15

标签: php session sessionid

我遇到涉及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>

点击&#34;是&#34;在confirm.php中,我收到以下错误:

  

未定义的索引:在第4行的C:\ wamp \ www \ confirm_save.php中注销

第4行

$token = $_SESSION['logout'];

我真的不知道错误是什么。

2 个答案:

答案 0 :(得分:3)

您通过

清空$ _SESSION
$_SESSION = array();

然后尝试填充$ token

$token = $_SESSION['logout'];

没有价值。

没有理由清空$ _SESSION,也不应该定义$ token,因为你包含confirm.php,其中还包含带值的$ token

修改

不要包含confirm.php

但是:

<?php

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

...

答案 1 :(得分:3)

在第3行,您将$_SESSION设置为空数组,这意味着$_SESSION['logout']不存在;

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

我无法找到您想要清空数组的原因,因此您可以删除该行。

无论如何你不需要第二行。 $token将在confirm.php中设置。