PHP中多个选项卡之间的会话或cookie


Sessions or cookies across multiplet tabs in PHP

是否可以设置将存在于所有选项卡中的会话变量或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是客户端会话是服务器端