在Ajax函数中创建$ _SESSION时传递$ _SESSION失败

时间:2013-06-04 12:26:59

标签: php ajax session

我有一个简单的注册表格,新的人员将注册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;

1 个答案:

答案 0 :(得分:2)

添加

session_start();

到register.php的顶部

您需要指定session_start,因此被命令执行“register.php”的服务器(来自ajax,直接调用,浏览器脚本,cron作业或任何可能的名称)将处理执行和参考连接的客户端会话设置$ _SESSION变量。服务器不会自己猜测这是“来自已经session_start页面的ajax调用”。您需要指定在register.php中完成的任何操作都在当前客户端的会话中完成。