PHP会话类

PHP会话类,php,session,Php,Session,我遵循wikihow教程构建安全会话管理系统: 而且效果很好 现在,我有一个问题,当连续调用两个ajax时,会话id cookie会发生变化(以及登录信息),如下所示: <input type="button" value="go" id="mybutton" /> <script> $("#mybutton").click( function() { $.get("ajax1.php"); $.get("a

我遵循wikihow教程构建安全会话管理系统:

而且效果很好

现在,我有一个问题,当连续调用两个ajax时,会话id cookie会发生变化(以及登录信息),如下所示:

<input type="button" value="go" id="mybutton" />
<script>
        $("#mybutton").click( function() {
            $.get("ajax1.php");
            $.get("ajax2.php");
        });

</script>

$(“#我的按钮”)。单击(函数(){
$.get(“ajax1.php”);
$.get(“ajax2.php”);
});
其中,ajax1.php和ajax2.php都只需要会话类文件

<?php
require('session.class.php');
$session = new session();
$session->start_session('_s', false);
?>

单击按钮后,存储在cookie中的会话id将更改为新的会话id。我在两个ajax之间添加了一个警报,如下所示

<input type="button" value="go" id="mybutton" />
<script>
        $("#mybutton").click( function() {
            $.get("ajax1.php");
            alert("anything");
            $.get("ajax2.php");
        });

</script>

$(“#我的按钮”)。单击(函数(){
$.get(“ajax1.php”);
警惕(“任何事”);
$.get(“ajax2.php”);
});
通过分离两个ajax调用,会话id没有改变

编辑: 实际的代码不是这样的,而是许多单独的按钮,每个按钮都有它的ajax,但是用户在响应之前会连续单击按钮

<input type="button" value="go" id="mybutton" />
<script>
        $("#mybutton").click( function() {
            $.get("ajax1.php");
        });

</script>
<input type="button" value="go" id="mybutton2" />
<script>
        $("#mybutton2").click( function() {
            $.get("ajax2.php");
        });

</script>

$(“#我的按钮”)。单击(函数(){
$.get(“ajax1.php”);
});
$(“#mybutton2”)。单击(函数(){
$.get(“ajax2.php”);
});

有什么想法吗?

当您进行第一次AJAX调用时,服务器启动一个会话,并将会话ID以cookie的形式发送回浏览器。为了使第二个AJAX调用在同一个会话中,它必须将cookie发送回服务器

但是,在发送第二个呼叫之前,您没有等待第一个呼叫的响应。因此cookie尚未收到,无法在第二次呼叫时发送。任何依赖于AJAX调用结果的操作都必须在其回调函数中完成。所以你应该:

$.get('ajax1.php', function() {
    $.get('ajax2.php');
});

谢谢但实际代码在一个序列中只有一个ajax,但页面上有许多按钮,用户在等待响应之前单击许多按钮。。我该如何克服这一问题?当用户单击按钮时,会显示某种“加载…”的内容,并且在响应返回之前不允许他们单击任何其他内容。我曾想过这样做,但这会让用户感到恼火,因为他们必须做出许多选择,每个选择都需要大约1秒的时间完成,,我想可能会有另一种解决办法,真的没有别的办法了。如果您想在同一会话中进行两个调用,则必须等待第一个调用完成,然后再进行第二个调用。您只能在加载程序第一次单击任何按钮时显示加载程序。一旦收到回复,您就知道会话已经设置好,并且可以处理所有其他按钮,而无需让用户等待。