【发布时间】:2013-03-08 20:06:37
【问题描述】:
这是一个简单的问题,困扰了我很长一段时间!
我有一个页面www.example.com/dir/index.php,它设置了一个$_SESSION 变量。我在www.example.com/dir/dir2/dostuff.php 上再次访问此变量,效果很好!
但是,如果我通过www.example.com/dir/ 设置会话,则不会在www.example.com/dir/dir2/dostuff.php 中设置。
我已经用
重写了.htaccessRewriteRule ^.*\/dir\/$ /dir/index.php [NC]
并在 index.php 中设置我的 php.ini:
ini_set('session.cookie_domain', '.example.com');
但是没有结果。 有人有什么建议吗?
更新:
简而言之 index.php 只是运行:
if (!isset($_SESSION)) session_start();
$_SESSION['param'] = "val";
dostuff.php 运行:
if (!isset($_SESSION)) session_start();
echo $_SESSION['param'];
【问题讨论】:
-
解释一下你是如何设置会话的?
-
index.php是否包含session_start()?如果它首先重定向到那里,它可能不会使会话保持活动状态。确保在每一页上都调用它。 -
是的,每个页面都有 session_start()..
-
你试过
session_set_cookie_params吗? -
好的,一种解决方案是定义一个文件夹以使用
session_save_path('sessions');保存会话并使用其相对路径session_save_path('../sessions');找到该文件夹,但必须有一个更简单的解决方案,对吧?