我有一个简单的注册表格,新的人员将注册ajax功能。注册完成后,我在那里创建了一个$_SESSION['is_logged']
。
在var_dumb上我得到了var的设置。但是当在另一个页面上重定向时它是空的(我已经在两个页面上都包含了session_start()...
我在网上的某处读过:
"会话仅在页面加载/刷新"。
上写
是这种情况,还是我必须在我的代码中寻找其他一些问题。
ajax:
$.ajax({
url:"../controllers/register.php",
type:"POST",
data:res,
success: function(responce){
if (responce==1) {
$('#msg').addClass('msg-warning');
$("#form").css('display',"none");
$('#msg').append("<p>It seems that you have already submited the form. Click to "+
" <a href='login.php'>log-in</a> or to <a href='register.php'>register</a>.</p>");
}
else if (responce==2) {
$('#msg').addClass('msg-warning');
$("#form").css('display',"none");
$('#msg').append("<p>You have successfully created account. Click to "+
" <a href='start.php'>welcome</a> to start your .</p>");
$('.menu').append("<li><a href='logout.php'>Log out</a></li>")
}
else{
$('#msg').text(responce);
}
},
error: function(){
$('#msg').text("Opss, try again");
}
});
register.php文件:
if (isset($_SESSION['submited'])) {
echo 1;
exit;
}
include_once('../models/functions.php');
// Give the post parametters to another var
$arr=$_POST;
// function for uploading
$reg = registerMe($arr);
if ($reg === true) {
$_SESSION['submited']=1;
$_SESSION['is_logged']=1
echo(2);
}
else{
echo($reg);
}
exit;
session_start();
包含在从ajax开始的第一页的标题中。第二页 - $ _SESSION [&#39; is_logged&#39;]丢失,同样是{ {1}};是session_start()
函数的一部分。 start.php:
dc_header();
&GT;
答案 0 :(得分:2)
添加
session_start();
到register.php的顶部
您需要指定session_start,因此被命令执行“register.php”的服务器(来自ajax,直接调用,浏览器脚本,cron作业或任何可能的名称)将处理执行和参考连接的客户端会话设置$ _SESSION变量。服务器不会自己猜测这是“来自已经session_start页面的ajax调用”。您需要指定在register.php中完成的任何操作都在当前客户端的会话中完成。