Php 在Ajax函数中创建$\会话时,传递$\会话失败

Php 在Ajax函数中创建$\会话时,传递$\会话失败,php,ajax,session,Php,Ajax,Session,我有一个简单的注册表格,新来的人将使用ajax功能注册。注册完成后,我在那里创建了一个$\u会话['is\u logged']。 在var_dumb上,我得到var已设置。但是当重定向到另一个页面时,它是空的(我已经在两个页面上都包含了session_start()。。。 我在网上的某个地方读到: “会话仅在页面加载/刷新时写入” 是这样,还是我必须在代码中查找其他问题 ajax: $.ajax({ url:"../controllers/register.php

我有一个简单的注册表格,新来的人将使用ajax功能注册。注册完成后,我在那里创建了一个
$\u会话['is\u 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");
        }
    });
session_start();
包含在从ajax启动的第一个页面的页眉中。第二个页面,$\u session['is_logged']丢失,同样
session_start()
;是
dc_header();
函数的一部分。start.php:

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

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

添加

session_start();
到register.php的顶部


您需要指定session\u start,这样,被命令执行“register.php”的服务器(来自ajax、直接调用、浏览器脚本、cron作业或任何您可能命名的内容)将根据连接的客户端会话来处理$\u session变量的执行和设置。服务器不会自行猜测这是一个会话“来自已存在会话的ajax调用\u起始页"。您需要指定在register.php中执行的任何操作都是在当前客户端会话中完成的。

请以逻辑方式发布ajax代码。将代码发布到您设置值的位置以及检查和重定向的位置。重定向的页面是否与您在ajax调用中使用的页面位于不同的子域上?www.url.c浏览器将om和url.com视为不同的子域,因此每个子域的会话都不同。发布
start.php
的代码,检查
是否记录在会话中。
var\u dump($\u session);
的输出是什么?该死,它工作了。尽管如此,我还是曾经包含了会话\u start()在执行ajax查询后,我需要在页面的页眉中再次声明session_start()。@Alordiel关于用户的任何内容都必须在他的会话中。因此,您从session_start开始。想象一下:如果您使用ajax注销,比方说ajax_log_out.php,您可以看到启动会话是至关重要的(否则哪个用户要注销???)乐意帮助:)
session_start();