尽管会话ID一致,但PHP会话变量丢失

问题描述

四处寻找答案,但到目前为止还没有运气。

我将代码简化如下(先运行文件1,然后运行文件2):

文件1

<?PHP
session_start();
echo session_id();
$_SESSION[123][123] = 'Testing';
echo '<pre>' . print_r($_SESSION,TRUE) . '</pre>';
?>

文件2

<?PHP
session_start();
echo session_id();
echo '<pre>' . print_r($_SESSION,TRUE) . '</pre>';
?>

文件1的输出是会话ID,并正确显示了新的会话变量。

文件2的输出是相同的会话ID,但会话变量为空。

解决方法

PHP变量不能以数字或任何特殊字符(CAST(DECOMPRESS(data) AS NVARCHAR(MAX))除外)开头。因此, $ _ SESSION [123]或$ _SESSION [“ 123”] 都是无效

第二部分,要在会话中接受2D数组,您必须这样做

public static string Unzip(byte[] bytes)
{
    using (var msi = new MemoryStream(bytes))
    using (var mso = new MemoryStream())
    {
        using (var gs = new GZipStream(msi,CompressionMode.Decompress))
        {
            CopyTo(gs,mso);
        }
        return Encoding.UTF8.GetString(mso.ToArray());
    }
}