0

我有一个简单的注册表单,新来者将使用 ajax 函数进行注册。$_SESSION['is_logged']注册完成后我创建一个。在 var_dumb 上,我知道 var 已设置。但是当在另一个页面上重定向时它是空的(我已经在两个页面上都包含了 session_start() ......我在网上某处读到:

“会话只写在页面加载/刷新上”。

是这种情况,还是我必须在我的代码中寻找其他一些问题。

阿贾克斯:

        $.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;

包含在从 ajax 开始的第一页的标题中。session_start();第二页 - $_SESSION['is_logged'] 丢失的地方,再次是session_start(); 是dc_header();功能的一部分。开始.php:

<?php
dc_header("Речник|Регистрация");

if (!isset($_SESSION['is_logged'])) {
    #header("location: ../views/login.php");
    var_dump($_SESSION);
}

?>

4

1 回答 1

2

添加

session_start();

到 register.php 的顶部

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

于 2013-06-04T12:34:16.450 回答