Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用$.ajax更改$会话_Php_Ajax_Session - Fatal编程技术网

Php 使用$.ajax更改$会话

Php 使用$.ajax更改$会话,php,ajax,session,Php,Ajax,Session,实际页面启动一个$.ajax(POST)请求,receiver.php需要修改$\u会话。 但是它不起作用,我不知道$\u SESSION的id是否不同,或者我是否需要刷新页面以注册修改 我尝试传输会话id并使用以下内容修改它: <?php if ( count( $_POST ) > 1 && isset( $_POST["s"] ) ) { session_id( $_POST["s"] ); session_sta

实际页面启动一个
$.ajax(POST)
请求,
receiver.php
需要修改
$\u会话。
但是它不起作用,我不知道
$\u SESSION
id
是否不同,或者我是否需要刷新页面以注册修改

我尝试传输会话id并使用以下内容修改它:

<?php
    if ( count( $_POST ) > 1 && isset( $_POST["s"] ) )
    {
        session_id( $_POST["s"] );
        session_start();
    }
?>
我的
receiver.php

<?php
    if ( count( $_POST ) > 1 && isset( $_POST["s"] ) )
    {
        session_id( $_POST["s"] );
        session_start();
    }

    $_SESSION['longarray']['key'] = 'value';
?>

最后,可以使用
$修改
$\u会话
。ajax(POST)
?或者可能我只有一个问题,因为我的
$\u会话是
数组

好的,我尝试了以下方法 testp1.php

    <?PHP
        session_start();
    ?>
    <script type="text/javascript" src="../../common/jquery/jquery-1.10.2.min.js"></script>
    <script>
    $(document).ready(function () {
        var s = '<?php echo session_id(); ?>';

        $.ajax({
            url: 'receiver.php',
            type: 'POST',
            data: {
                s: s, // session id, useless?
                // data...
            },
            success: function(data){ console.log(data); }
        })
    })
    </script>
    <body>
    <?PHP
        echo $_SESSION['longarray']['key'];
    ?>
    </body>

$(文档).ready(函数(){
var s='';
$.ajax({
url:'receiver.php',
键入:“POST”,
数据:{
s:s,//会话id,无用?
//数据。。。
},
成功:函数(数据){console.log(数据);}
})
})
对receiver.php的ajax调用

<?php
    if ( count( $_POST ) >= 1 && isset( $_POST["s"] ) )
    {
        session_id( $_POST["s"] );
        session_start();
        $_SESSION['longarray']['key'] = 'mix';
    }
    else
        echo "ERROR";;
?>


在testp1.php上,主体显示了
mix

我在的帮助下发现了我的错误

在我的代码中,我引入了一些愚蠢的行,比如:

if ( ! isset( $_SESSION['akey'], $_SESSION['akey']['anotherkey'] ) {
    $_SESSION['akey'] = new array();
    $_SESSION['akey']['anotherkey'] = new array();
}

我已经把它拆了,它已经修好了

不是真的。。。因为
$\u会话id
可以是“bba31afe537857688b692fa9bb8df746”,所以是字符串。很抱歉,您在发布后意识到了这个错误!谢谢你抽出时间!好的,可能是因为我在
$\u SESSION
中使用了
array
。我想指出,如果您在testp1.php上设置
$\u SESSION['longarray']['key']
,那么输出将是testp1.php上的值,而不是receiver.php中设置的值
if ( ! isset( $_SESSION['akey'], $_SESSION['akey']['anotherkey'] ) {
    $_SESSION['akey'] = new array();
    $_SESSION['akey']['anotherkey'] = new array();
}