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

时间:2012-09-10 16:37:21

标签: php session cookies session-cookies

如何为会话设置无限制的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'];

}

2 个答案:

答案 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。