好的,
所以我在我的网站上设置了 session ,但遇到了一些非常奇怪的问题,我花了大约 2 天的时间试图找到答案,但没有成功。
所以我有我的index.php,当您访问该网站时, session 正常工作,从这里它会检查您是否已登录( session 已设置),如果是,它会将您移至另一个屏幕,并且将使用ajax查询来更新页面。
如果你没有登录,它会弹出一个较小的窗口(登录框),当你登录时,这个小窗口会调用它的创建者窗口,表示用户已经正确登录,并设置 session 。针对问题:
session 适用于:index.php、ajax_request.php(当它通过ajax从index.php调用时)、popup_window.php(当它从index.php弹出时)。
session 不起作用:任何其他时间,这包括与index.php位于同一目录中的php文件,甚至包括ajax_request.php和popup_window.php(当它们未被调用时)索引.php
** 请注意,popup_window.php 使用 openid 进行登录,它被重定向到 openid 提供者,然后重定向回来(不过我认为这并不重要?)。
为了调试这个,我设置了自定义 session 处理程序,将 session 插入到 mysql 数据库中,执行此操作后,我注意到它正在为这些不同的场景创建单独的 session 和 sessionid。我对此很困惑?据我所知,所有 session 选项都设置为默认值,除非我的虚拟主机做了一些奇怪的事情?
为什么我的应用程序总是创建单独的 session ,而不是为同一用户保留相同的 session ?多个选项卡中的 session 是相同的,对吗?
我确实启动了 session_start();在每个页面实例中。 我尝试过使用 'ini_set("session.use_cookies", 1);'和'session_set_cookie_params(0,“/”,“www.domain.com”);'
我可以在index.php和test.php中拥有完全相同的代码,将它们放在同一目录中,但它们仍然有不同的 session ?
任何帮助将不胜感激!
谢谢,乔什
最佳答案
如果您使用 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 字符串进行双重编码时遇到问题,这是可选的)
关于php - 页面与页面之间的 session 不同的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786510/