0

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

为什么即使我为此会话变量设置了 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'] ?>
4

1 回答 1

0

会话!= 饼干。

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

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

尝试这样的事情:

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

您还需要使用 session_start(); 启动会话。

于 2012-09-11T17:29:49.910 回答