我正在尝试将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();初始化会话。