会话变量在后续页面上不可访问

时间:2014-02-21 16:07:24

标签: php session-variables

我正在使用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

?>

这不是我期望的行为。我可以看到,也许我应该取消“使用”元素或其他东西,但为什么先前存储的数组不会显示在后续页面上?

1 个答案:

答案 0 :(得分:0)

您的会话配置似乎有问题。您设置和传递会话数据的代码看起来很好,我已经验证它可以在我的机器上运行。

要解决此问题,我将开始查看浏览器开发人员工具中的“网络”标签(目前我最喜欢的是Google Chrome,info here)。您将要查找附加到URL查询字符串的会话ID,或者很可能是您的浏览器发送的cookie,可能名为PHPSESSID

此值告诉PHP要查找的会话ID。没有它,调用session_start()将生成一个新会话,这似乎是您的情况。