无法访问会话数据

时间:2011-12-23 13:51:56

标签: php session

在我的项目中,我正在尝试从位于2个不同目录中的2个文件中访问会话数据:

/site/page.extension.php     <-- initializes the session and writes data to it
                               - also sets a cookie with session_id() and session_name()
/extension/ajax_handler.php  <-- tries to access the session data, session_id()
                               - and session_name() are set via cookie and return the correct values

现在,问题是,即使session_id()和session_name()在两个文件中都相同,我也无法访问会话数组,只返回一个空数组。

我的代码: page.extension.php:

session_start();
setcookie("psc_session", session_id(), strtotime("+20 minutes"), "/");
setcookie("psc_session_name", base64_encode(session_name()), strtotime("+20 minutes"), "/");
$_SESSION['uid'] = system::current_user_id();

ajax_handler.php:

session_id($_COOKIE['psc_session']);
session_name(base64_decode($_COOKIE['psc_session_name']));
session_start();
print_r($_SESSION); // => array(0) { }

我真的很感激任何帮助! 问候!

更新: 我已尝试在page.extension.php中设置会话cookie参数:

$url = str_replace("http://", '', current_url(false));  // returns the current domain
session_set_cookie_params(10800, "/", $url, 0, 1);

如果我现在访问session_get_cookie_params,我收到(在ajax_handler.php中):

print_r(session_get_cookie_params()); // =>
Array
(
    [lifetime] => 0
    [path] => /
    [domain] => 
    [secure] => 
    [httponly] => 
)

为什么会这样?

1 个答案:

答案 0 :(得分:0)

我无法复制您的问题,重新创建您提供会话变量的代码,并且Cookie保持不变,可以从ajax_handler.php访问。我建议您回溯并确保从同一个域请求这两个文件。