3

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

}
4

2 回答 2

4

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

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

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

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

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

于 2012-09-10T16:39:59.413 回答
0

您不应将 cookie 设置为无限时间。如果您需要更长时间地存储某些东西,请使用localStorage。它们不会过期。它们不是真正的 cookie,但它也是在浏览器中设置信息的一种方式。你只需要使用 JavaScript。

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

于 2012-09-10T16:41:26.567 回答