我的饼干不会留下来(PHP)

时间:2010-05-04 14:39:57

标签: php cookies login autologin

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

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

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

6 个答案:

答案 0 :(得分:3)

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

换句话说,将其更改为:setcookie('userID',$ userID,time()+ 86400);  例如,让它停留一天。

答案 1 :(得分:3)

啊,我已经学到了一些关于cookie的新东西:)他们有一条路径,它们只在那条路径上可用(它们创建的目录)。我在/ user / login上创建了cookie,然后尝试在/ news / index上读取它们。不会工作。
在过去,我曾经在一个文件夹中构建包含所有文件的网站(我知道这很糟糕),所以我不知道这个cookie属性。对不起,我应该更好地阅读本手册...
谢谢你的帮助!

P.s。:键入print_r($_COOOKIE);不会加快调试速度。 :(

答案 2 :(得分:2)

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

答案 3 :(得分:2)

试试这个

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

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

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

:)

答案 4 :(得分:0)

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

下进行。

答案 5 :(得分:0)

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