【问题标题】:PHP Session only works when viewing actual index.php?PHP Session 仅在查看实际 index.php 时有效?
【发布时间】:2012-04-30 05:17:34
【问题描述】:

我正在开发一个使用 PHP 会话的站点,但 $_SESSION 数组仅在“/index.php”文件名存在时才起作用。 “/”和“/index.php”指向同一个文件,但由于某种原因,PHP 会话仅在“/index.php”出现在 URL 地址中时才有效。我在网上搜索了为什么会这样,但没有找到答案。知道为什么会这样吗?

*注意:会话在 Localhost 上的“/”和“/index.php”上都有效,但在我的实际服务器上无效!

【问题讨论】:

  • 你是否开始了所有 php 文件的会话???
  • 检查会话 cookie 设置,并使用像 Firefox 的 HTTPFox 和/或 Firebug 的 NetTab 这样的嗅探器来查看标头中的来回变化。
  • @vipin: / 和 /index.php 都会加载相同的脚本。
  • 你有没有和“index.php”在同一目录下的“index.html”文件?如果是,则首先访问“index.html”。
  • @marc: / 将指向这些指定的文件default.html,index.html,default.php 等等我不知道服务器解析文件的顺序

标签: php session


【解决方案1】:

您查看的是同一个域吗?我的网站遇到了这个问题 - 请注意 www.example.org 与 example.org 的域不同。

另外,请确保两个 URL 上的 PHPSESSID cookie 相同。如果不是,它正在加载不同的会话。

【讨论】:

  • 我尝试添加 www.在域之前,但没有区别,我还检查了 PHPSESSID,它们都是相同的。我在 index.php 文件本身上创建了一个测试会话变量,该变量同时显示在“/”和“/index.php”上,但在不同 PHP 文件上创建的会话仅显示“/index” .php”文件?
  • 你确定你的目录索引是index.php吗?我不知道为什么会这样,但这是我能想到的唯一合乎逻辑的事情。
  • 和我一样。你能在不同的服务器上试试吗?
  • 您要取消会话吗? - 未设置($_SESSION);或者也许重新分配它? $_SESSION = 数组();
  • 不,没有任何未设置,也没有被重新分配,因为它只调用一次创建会话。在这一点上,我假设它必须是因为(共享)服务器打开了。所以我打算尝试一个新的服务器,看看是否能解决问题,谢谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2013-07-08
  • 2018-09-07
相关资源
最近更新 更多