是否可以为会话变量设置cookie的无限时间


is it possible to set unlimited time for a cookie to a session variable?

如何为会话的cookie设置无限制时间?我尝试了以下操作,但一天后我的会话中仍然会收到未定义的索引通知:

setcookie('idcourse', 'CourseID', 9999999999);
setcookie('namecourse', 'CourseName', 9999999999);
setcookie('id', 'ID', 9999999999);
if (isset($_POST['idcourse'])) {
$_SESSION['idcourse'] = $_POST['idcourse'];
}
if (isset($_POST['namecourse'])) {
$_SESSION['namecourse'] = $_POST['namecourse'];
}
if (isset($_POST['id'])) {
$_SESSION['id'] = $_POST['id'];
}

您必须添加一个到期日,否则cookie将像会话一样在您离开网站时到期,

你所做的几乎是正确的,但你需要稍微改变一下;

您正在设置过期9999999999(将来需要指定一个UNIX TIMESTAMP),所以我使用以下内容:

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

将使cookie在2个月后过期,您可以相应地增加此值。

您不应该将cookie设置为无限时间。如果您需要存储更长时间的内容,请使用localStorage。它们不会过期。它们不是真正的cookie,但这也是在浏览器中设置信息的一种方式。你只需要使用JavaScript就可以了。

至于PHP,您可以做的是,您可以依赖于将永久存储您的信息的数据库。您可以在本地存储中设置可用于加载会话信息的内容。但我的建议是使用localStorage。