繁体   English   中英

我的Cookie不会留下(PHP)

[英]My cookies won't stay (PHP)

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

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

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

Cookies的时间值应为它们应停留的时间...请检查http://php.net/manual/zh/function.setcookie.php

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

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

ps:输入print_r($_COOOKIE); 不会加快调试速度。 :(

Cookies需要有效时间。 否则,默认情况下,当用户关闭浏览器时,它们会被销毁。

试试这个

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

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

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

:)

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

C。

您是否要学习如何构建CMS系统和登录管理器,还是要构建应用程序...? 讨厌这样做,但是我的答案是:不要构建自己的登录系统。 取而代之的是去获取诸如CodeIgniter,Kohana甚至drupal或Joomla之类的框架。 如果您正在建立一个登录系统作为学习体验,以了解Cookie的工作原理等,那么就可以了,只要您不打算将其放入某个生产站点即可。 否则,请抓住一个经过良好测试的框架并使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM