1

我正在使用 cookie 构建一个自动登录系统,但是 cookie 功能的一个基本部分失败了:它们在不同的会话(甚至页面)上是非持久的!在我的登录脚本中,我将 cookie 设置为:

setcookie('userID', $userID, time()+86400); // (edited after replies)

$userID 有一个值。
然后我打印 $_COOKIE 变量,它说 array(['base_usid'] => 1); 这很好,但是当我单击主页并在那里打印 $_COOKIE 变量时,它显示为 NULL。
有没有人看到问题?

4

6 回答 6

3

啊,我学到了一些关于 cookie 的新知识 :) 它们有一个路径,并且只能在该路径(创建它们的目录)上使用。我在 /user/login 上创建了 cookie,然后尝试在 /news/index 上读取它们。不会工作。
过去我用一个文件夹中的所有文件构建网站(我知道这很糟糕),所以我不知道这个 cookie 属性。抱歉,我应该更好地阅读手册...
感谢您的帮助!

Ps:打字print_r($_COOOKIE);不会加快调试速度。:(

于 2010-05-05T11:07:00.280 回答
3

cookie 应该有一个时间值,它们应该保留多长时间......检查http://php.net/manual/en/function.setcookie.php

也就是说,改成:setcookie('userID', $userID, time()+86400); 例如,让它停留一天。

于 2010-05-04T14:41:50.730 回答
2

Cookie 需要一个过期时间。否则,当用户关闭浏览器时,默认情况下它们会被销毁。

于 2010-05-04T14:43:28.143 回答
2

试试这个

setcookie("userID", $userID, time()+3600);

这将持续一个小时。使数字更大以使其持续更长时间。

要取消设置/删除它,请将加号 + 更改为减号 -

:)

于 2010-05-04T14:44:07.663 回答
1

如果在您设置了到期时间后它仍然无法工作(并且您已经检查了服务器和客户端上的时钟是否正确),那么您是否检查过 cookie 是否正在发送?听起来像“标头已发送”的问题。这也意味着您在错误报告/日志记录方面存在问题。

C。

于 2010-05-04T16:51:02.763 回答
0

您想学习如何构建 CMS 系统和登录管理器,还是想构建一个应用程序...?讨厌这样做,但我的回答是:不要建立自己的登录系统。相反,去使用一些框架,比如 CodeIgniter、Kohana,甚至是 drupal 或 Joomla。如果您正在构建一个登录系统作为学习经验以了解 cookie 如何工作/等,那么很好.. 继续.. 只要您不打算将其放入某个生产站点。否则,抓住一个经过良好测试的框架并使用它。

于 2010-05-04T19:15:37.007 回答