是否可以设置将存在于所有选项卡中的会话变量或cookie?
我认为firefox在所有现有的选项卡上都保持了会话,但我测试发现,只有最初设置会话的当前选项卡才是可用的会话。
谢谢!
编辑:
表1:
setcookie("testcookie", "something", time()+(60*60*24*365));
表2:
print_r($_COOKIE['testcookie']);
选项卡2只打印一个空数组。如果我把它移到标签1,它会打印出cookie。
Cookies始终发送到服务器,前提是:
- 域匹配(包括子域)
- 路径匹配(cookie可以分配给特定的路径——将它们分配给根意味着整个域)
- 端口匹配
- 如果将cookie设置为安全的,则协议(http/https)匹配
只要所有这些都是真的,你就应该在所有选项卡上都有基于cookie的会话。您需要刷新选项卡才能看到cookie的任何效果(包括在Firefox扩展的Javascript中看到它)。
如果所有这些都是真的,并且你仍然没有在所有选项卡上看到你的cookie,那么你还有很多调试要做……这不是标准行为。
当我用你在编辑中显示的代码进行测试时,我一点问题都没有。。。
你可以尝试的几件事是:
- 清除firefox中的所有cookie并再次运行(如果您以前设置过cookie,但使用其他设置时,浏览器有时会感到困惑
- 请使用其他浏览器或在其他计算机上尝试
- 将cookie的路径设置为"/",也可以将域设置为.youdomain.com,如下
setcookie("testcookie", "something", time()+(60*60*24*365), "/", ".yourdomain.com");
如果你仍然不能让它工作,我最好的选择是清理服务器,可能会重新安装PHP和Apache。
要拥有通用存储,请使用cookie。
Cookie是客户端会话是服务器端