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

PHP Session Variables Lost Despite Consistent Session ID

到处寻找这个问题的答案,但到目前为止还没有找到答案。

我已将我的代码简化如下(运行 文件 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 变量不能以数字或任何特殊字符开头(_ 除外)。因此,$_SESSION[123] 或 $_SESSION["123"] 都是 invalid

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

$some_array = array('123' => 'Testing');
$_SESSION['some_common_variable_name'] = $some_array;