前段时间做了一个PHP的项目,基本情况是这样的: 论坛:bbs.xxx.com 验证登录状态cookies:bbsloginauth
空间:home.xxx.com 验证登录状态cookies:homeloginauth
商城:shop.xxx.com 验证登录状态cookies:shoploginauth 为了实现这三个系统的同步登录而开发了通行证系统:
passport.xxx.com
这个通行证验证登录状态的cookies为:passportloginauth 登录流程是这样的: 用户全部统一在通行证(passport)这里登录,写passportloginauth、bbsloginauth、homeloginauth、shoploginauth这四个cookies。
setcookie 的domain全部为.xxx.com path全部是'/'
登录的时候cookies的有效期全部设置为一年。 测试的时候是一切正常的,但是实际运行中就出问题了。用户登录后一切正常,但是第二天重新打开网站的时候,经常会出现以下情况:通行证(passport)这里登录状态依然正常,但是其他三个系统却莫名的退出了登录。打开临时文件夹查看cookies,发现passportloginauth这个确实存在,但是,bbsloginauth、homeloginauth、shoploginauth这三个却消失了!
希望PHP高手们指点一二~~~
空间:home.xxx.com 验证登录状态cookies:homeloginauth
商城:shop.xxx.com 验证登录状态cookies:shoploginauth 为了实现这三个系统的同步登录而开发了通行证系统:
passport.xxx.com
这个通行证验证登录状态的cookies为:passportloginauth 登录流程是这样的: 用户全部统一在通行证(passport)这里登录,写passportloginauth、bbsloginauth、homeloginauth、shoploginauth这四个cookies。
setcookie 的domain全部为.xxx.com path全部是'/'
登录的时候cookies的有效期全部设置为一年。 测试的时候是一切正常的,但是实际运行中就出问题了。用户登录后一切正常,但是第二天重新打开网站的时候,经常会出现以下情况:通行证(passport)这里登录状态依然正常,但是其他三个系统却莫名的退出了登录。打开临时文件夹查看cookies,发现passportloginauth这个确实存在,但是,bbsloginauth、homeloginauth、shoploginauth这三个却消失了!
希望PHP高手们指点一二~~~
检查一下COOKIE的过期时间是否设置有误:PHP setcookie() 用法setcookie(name, value, expire, path, domain, secure)
返回 true 表示成功,返回 false 表示失败。name、value 为必选,其他为可选参数。expire cookie 过期时间,time() + 3600 * 24 * 30 将设置 Cookie 过期 30 天。默认为关闭浏览器即过期。
secure 是否按 HTTPS 连接传送。默认为 false。
setcookie() 将自动编码 cookie(接收时自动解码)。若要原样写入 cookie,请使用 setrawcookie。<?php
setcookie("cookieName", "cookieValue", time() + 3600 * 24);
?>另外 domain设置改为"xxx.com ",去掉前面的"."
您测试过吗?? 这是PHP啊,不是ASP啊。ASP中确实不能有dot,但是PHP是必须有这个dot的。
还有一个最近发现的一个PHP的BUG,也给大家说下,就是子域名共享cookie的时候cookie的名字中不能包含“_”(下划线),经测试“-”(杠)却没有问题。
我的也是哦。。有时候感觉他们根本就是无法控制的。
看你是如何设置COOKIE的。Discuz的那个COOKIE设置和销毁的几个函数,用了后基本上没出过问题。
cooke的产生和设置都一样, 有差异不太可能
是否是其他位置也可以登陆?