PHP会话变量未正确设置

时间:2012-01-07 17:55:30

标签: php ajax session

我在php会话中是一个完整的菜鸟。我以前让他们工作过,但从来没有在现场服务器上,只是在我当地的测试环境中。

我的问题是$ _SESSION变量总是一个空数组(未定义)。

这是用于对php文件进行AJAX调用的登录表单。

以下是AJAX调用:

$.ajax({
        url: 'xhr/login.php',
        data: $(this).serialize(),
        type: 'post',
        dataType: 'json',
        success: function(result){
            if (result.success){
                console.log(result);
            };
        },
        error: function(e){console.log("Could not retrieve login information")}
    });

以下是登录脚本的相关部分:

# Start the user session
if(!isset($_SESSION)) {
    session_start();
    session_regenerate_id();
};

# Set our session values
                WHILE($session_row = mysql_fetch_assoc($session_result)){
                    $_SESSION['id'] = $session_row['id'];
                    $_SESSION['last_login'] = $session_row['last_login'];
                    $_SESSION['username'] = $session_row['username'];
                    $_SESSION['signup_date'] = $session_row['signup_date']; 
                };

我让返回的Json将会话变量返回为:

echo json_encode(array("success"=>"user logged in", "session"=>$_SESSION));

但是当我将result.session变量记录到控制台时,它只返回一个空数组。

1 个答案:

答案 0 :(得分:1)

  

我的问题是$ _SESSION变量总是一个空数组(未定义)。

对于成功启动的每个会话,这都是完全正常的。

  

session_regenerate_id();

哎哟。哎哟。哎哟。为什么每次请求都会重新生成id?

删除该行。 可能也会导致您的问题。