【问题标题】:how do you re-open a php session after it's closed?关闭后如何重新打开 php 会话?
【发布时间】:2012-05-17 12:34:03
【问题描述】:

有点菜鸟问题,但我正在编写一个棋盘游戏,其中棋盘的状态以及其他游戏状态信息被存储为 php 会话变量。该板是用 html/jquery 呈现的。每转一次,都会对 php 进行一次 ajax 调用,以执行逻辑来更改电路板的状态。但是每次 ajax 调用,似乎都会打开一个新的 php 会话而忘记旧的会话。代码如下:

'index.php'
        $.ajax({
        type: 'POST',
        url: 'cycle.php',
        data: {},
        dataType: 'json',       
        success: function(data, status, jqXHR) {    
            var stuff = jQuery.parseJSON(jqXHR.responseText);
            $("#board").html(stuff.html);       
        },
    }); 


'cycle.php'
        <?php 
session_start();
include('functions.php');
header('Content-type: application/json');

if (!isset($_session['turn'])) {

    $_session['turn'] = 1;
    $_session['population'] = "";
    $out = write_table();   
    $out['turn'] = $_session['turn'];
    $out = json_encode($out);
    echo $out;
}
else {
    $_session['turn'] = 2;
    $out = turn($_session['population']);
    $out['turn'] = $_session['turn'];
    $out = json_encode($out);
    echo $out;
}




?>

【问题讨论】:

  • "似乎打开了一个新的 php 会话,而旧的会话被遗忘了" - 如果您的服务器设置正确,则不应该发生这种情况。会话的全部意义在于跨 http 请求持久化数据。
  • 如果您正在“丢失”会话,请检查 cookie 设置并确保会话 cookie 中存储的会话 ID 在请求之间保持不变。新 ID = 新会话。

标签: php jquery ajax session


【解决方案1】:

尝试$_SESSION 而不是$_session。所有 PHP 变量名都是case sensitive

【讨论】:

  • 你打了我几秒! +1
【解决方案2】:

当你打电话给session_start()时它应该是自动的,只要你不打电话给session_destroy()

您的代码/设置必须有一些更深层次的东西才会发生。

也许检查与会话相关的 PHP INI 设置。

【讨论】:

  • 感谢您的建议,我会调查一下.. 你知道什么 php ini 设置可能会导致这种情况吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2012-09-01
  • 2017-12-11
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多