如何为会话设置无限制的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'];
}
答案 0 :(得分:4)
您必须添加到期日期,否则Cookie会像会话一样充当您离开网站时到期,
你所做的几乎是正确的,但你需要稍微改变一下;
您正在设置过期9999999999(您需要在将来指定UNIX TIMESTAMP),因此我使用以下内容:
$inTwoMonths = 60 * 60 * 24 * 60 + time();
setcookie('idcourse', 'CourseID', $inTwoMonths );
setcookie('namecourse', 'CourseName', $inTwoMonths );
setcookie('id', 'ID', $inTwoMonths );
将使cookie在2个月后到期,您可以相应地增加它。
答案 1 :(得分:0)
您不应将Cookie设置为无限时间。如果您需要存储更长时间的内容,请使用localStorage。它们不会过期。它们不是真正的cookie,但它也是在浏览器中设置信息的一种方式。你只需要使用JavaScript。
至于PHP,你可以做的是你可以依赖永久存储你的信息的数据库。您可以在本地存储中设置可用于加载会话信息的内容。但我的建议只是使用localStorage。