欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 验证登陆cookie出现的一个很奇怪的问题,也许大家都没注意。求指导!

程序员文章站 2022-05-10 10:57:54
...
大家好, 最近在做一个php网站 废话不多说 直接代码:
登陆成功添加cookie:
setcookie("user",$Email,time()+24*60*60);

header("location:http://website.com/MyProfile.php");

进入页面验证cookie:
if (isset($_COOKIE["user"]))
//echo $_COOKIE['user'];
{

点击退出,删除cookie:
setcookie("user","",time()-24*60*60);
("location:http://website.com/index.php");

问题是这样的:
第一次登陆可以正常登录,进去以后点击退出(清除cookie)。然后再登陆,MyProfile页面就读不到cookie(确定密码正确)。第二次就可以正常登陆。 我已经测试过,设置和删除都没问题,是不是哪一点我没有注意到? 也许是header函数的问题?
求解答


回复讨论(解决方案)

没人遇到类似的问题么?

更换过其他浏览器试验吗?cookie 用得比较少,没啥实际经验

更换过其他浏览器试验吗?cookie 用得比较少,没啥实际经验

后台也是这样设置的 , 就没有问题 我在网上看的说header跳转 前不能有输出。 但是第一次cookie确实设置了 跳转后第一次没有读到 第二次就可以了 很奇怪的问题

header和setcookie没有冲突。
是在这两个操作前不能有其他输出。
建议对比代码检查。

建议换下其它的浏览器,测试前更新下缓存

是这样子的,
cookie 是要在新一页才生效的。

你设置的是第二次登录以后才会生效

第一次登录以后 楼上写错了

是这样子的,
cookie 是要在新一页才生效的。
那是不是中间加个空跳转 然后再到登陆成功页面就可以了呢

第一次登录以后 楼上写错了
也就是说cookie在登陆以后并没有设置 第二次才有效是吧 那中间加个跳转页面是不是能解决呢。 我试过在下一页好像是可以接收到值得

但是问题是: 第一次登陆没错误 直接成果了。 登陆成功以后我点logout, 登出以后再次登陆 就会显示没有设置cookie。 第二次登陆又好了。 我也不知道为什么

引用 7 楼 ci1699 的回复:

是这样子的,
cookie 是要在新一页才生效的。

那是不是中间加个空跳转 然后再到登陆成功页面就可以了呢
我做了个空跳转,但是还是获取不到cookie 咋回事啊
求指导

换过其他浏览器测试了吗?

换过其他浏览器测试了吗?
都试过了, 求指导啊。 难道大家都没遇到过么

$Email确定每次都有值传入?

我也遇到这个问题