【问题标题】:Problems with Sessions differing from page to page会话问题因页面而异
【发布时间】:2011-07-22 06:40:15
【问题描述】:

好的,

所以我在我的网站上设置了会话,但遇到了一些非常奇怪的问题,我花了大约 2 天时间试图找到答案,但无济于事。

所以我有我的 index.php,当你访问这个网站时,会话工作正常,从这里它会检查你是否登录(会话已设置),如果是,它会将你移动到另一个屏幕,并且将使用 ajax 查询来更新页面。

如果你没有登录,它会弹出一个小窗口(登录框),当你登录时,小窗口会调用它的创建者窗口,说用户已经正确登录,并设置会话。针对问题:

会话作用于:index.php、ajax_request.php(当它从 index.php 通过 ajax 调用时)、popup_window.php(当它从 index.php 弹出时)。

会话不工作:任何其他时间,这包括与 index.php 位于同一目录中的 php 文件,甚至包括 ajax_request.php 和 popup_window.php,当它们未被调用时index.php

** 请注意,popup_window.php 使用 openid 进行登录,它被重定向到 openid 提供程序,然后重定向回来(我认为这无关紧要吗?)。

为了调试它,我设置了将会话插入 mysql 数据库的自定义会话处理程序,在这样做之后,我注意到它正在为这些不同的场景创建单独的会话和会话 ID。我对此很困惑?据我所知,所有会话选项都设置为默认值,除非我的虚拟主机做了一些时髦的事情?

为什么我的应用程序会一直创建单独的会话,而不是为同一个用户保持相同的会话?多个标签中的会话是相同的吗?

我确实启动了 session_start();在每个页面实例中。 我试过玩'ini_set(“session.use_cookies”,1);'和 'session_set_cookie_params (0, "/", "www.domain.com");'

我可以在 index.php 和 test.php 中拥有完全相同的代码,将它们放在同一个目录中,但它们仍然有不同的会话?

任何帮助将不胜感激!

谢谢,乔希

【问题讨论】:

  • 您能否确认(相同的)会话 ID 在所有这些页面上都可用?
  • 它们肯定是不同的会话ID,这可能意味着什么?
  • 尝试在您认为有问题的地方发布一些代码示例。

标签: php mysql ajax session popup


【解决方案1】:

如果您使用的是 Apache,您可以进行重写以将 domain.com 重定向到 www.domain.com。

您可以通过以下方式开始修改 .htaccess 文件:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=302,NE,L]

标志的一些解释:

'[NC]' = 忽略大小写

'R=302' = 给出响应状态 302

'NE' = 不编码 url 参数(如果你在 apache 对你的 url 字符串进行双重编码时遇到问题,这是可选的)

【讨论】:

    【解决方案2】:

    所以我有些怀疑,所以我进行了一系列测试,结果表明,PHP 认为域 http://www.domain.comhttp://domain.com 不同,为每个域存储单独的会话变量。

    有什么方法可以强制我的域上的所有链接和所有内容都是一个或另一个?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 2017-06-17
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多