【发布时间】: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