会话变量上的未定义索引,即使我设置了cookie


undefined index on a session variable even though I have set a cookie

我正在尝试将cookie设置为php会话变量,以便会话在2个月内不会过期。然而,我遇到的问题是,大约3个小时后,当我刷新页面时,我在第30行得到了一个未定义的$_SESSION['id']索引。但是在第20-23行之间,我没有得到$_SESSION['id']的未定义索引。

为什么我已经为这个会话变量设置了cookie,但仍然得到未定义的索引?

$inTwoMonths = 60 * 60 * 24 * 60 + time();
    setcookie('id', 'ID', $inTwoMonths);

    //line 20-23
    if (isset($_POST['id'])) {
    $_SESSION['id'] = $_POST['id'];
    }
    //line 30
    <?php echo $_SESSION['id'] ?>

SESSION!=饼干。

您必须在php.ini中设置SESSION TTL(默认值为20分钟)。

在第20-23行,你没有得到未定义的索引,因为你设置了变量。但在第30行,你试图读取未定义的变量(因为你以前没有设置它。)

试试这样的东西:

$_SESSION['id'] = $_COOKIE['id'];

您还需要使用session_start();初始化会话。