我正在使用PHP会话变量,但它没有像我期望的那样工作。在一个页面上我有:
<?php
session_start();
$car_details = Array(
"make" => 'ford',
"model" => 'some car'
);
$_SESSION['car_details'] = $car_details;
echo var_dump($_SESSION['car_details']);
//array (size=2)
// 'make' => string 'ford' (length=4)
// 'model' => string 'some car' (length=8)
?>
这正如我所料。然而,在同一目录的下一页上,我尝试向数组添加一个元素。元素不仅会覆盖整个数组,而且根本不会打印存储在第一页中的值:
<?php
session_start();
$car_details = $_SESSION['car_details'];
echo var_dump($car_details);
//null
$car_details["used"] = true;
$_SESSION['car_details'] = $car_details;
echo var_dump($_SESSION['car_details']);
//array (size=1)
// 'used' => boolean true
?>
这不是我期望的行为。我可以看到,也许我应该取消“使用”元素或其他东西,但为什么先前存储的数组不会显示在后续页面上?
答案 0 :(得分:0)
您的会话配置似乎有问题。您设置和传递会话数据的代码看起来很好,我已经验证它可以在我的机器上运行。
要解决此问题,我将开始查看浏览器开发人员工具中的“网络”标签(目前我最喜欢的是Google Chrome,info here)。您将要查找附加到URL查询字符串的会话ID,或者很可能是您的浏览器发送的cookie,可能名为PHPSESSID
。
此值告诉PHP要查找的会话ID。没有它,调用session_start()
将生成一个新会话,这似乎是您的情况。