我是一个完整的PHP会话noob。我已经让他们在以前工作,但从来没有在现场服务器上,只在我的本地测试环境中工作。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变量记录到控制台时,它只是返回一个空数组。
为什么'while'大写?你在哪里做这个数据库查询? – cspray 2012-01-07 18:04:33
其中是$ session_result被生成?如果没有错误产生,可能是“$ session_row = mysql_fetch_assoc($ session_result)”永远不会返回true,因此循环被忽略。另外,正如查尔斯所问,它应该是“一会儿”,而不是一会儿。 – 2012-01-07 18:05:55