关闭后如何重新打开 php 会话?
Posted
技术标签:
【中文标题】关闭后如何重新打开 php 会话?【英文标题】:how do you re-open a php session after it's closed? 【发布时间】: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 = 新会话。 【参考方案1】:尝试$_SESSION
而不是$_session
。所有 PHP 变量名都是case sensitive
【讨论】:
你打了我几秒! +1【参考方案2】:当你打电话给session_start()
时它应该是自动的,只要你不打电话给session_destroy()
您的代码/设置必须有一些更深层次的东西才会发生。
也许检查与会话相关的 PHP INI 设置。
【讨论】:
感谢您的建议,我会调查一下.. 你知道什么 php ini 设置可能会导致这种情况吗?以上是关于关闭后如何重新打开 php 会话?的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net:关闭并重新打开浏览器实例后保留旧的浏览器会话
为啥在ios中重新打开会话后无法访问facebook好友列表
关闭并重新打开终端后如何访问正在运行的 nodemon 脚本?