会话问题因页面而异

时间:2011-07-22 06:40:15

标签: php mysql ajax session popup

好,

所以我在我的网站上设置了会话,我遇到了一些非常奇怪的问题,我花了大约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数据库中,在这之后,我注意到它正在为这些不同的场景创建单独的会话和sessionid。我很困惑这个?据我所知,所有会话选项都设置为默认值,除非我的webhost做了一些时髦的事情?

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

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

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

非常感谢任何帮助!

谢谢,乔希

2 个答案:

答案 0 :(得分: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字符串的问题,这是可选的)

答案 1 :(得分:0)

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

有什么方法可以强制我的域名中的所有链接和所有内容都是其中一个?