【发布时间】:2012-09-07 15:18:48
【问题描述】:
在文件 A.php 上,我有一个 while 循环,它从数据库中提取数据并连接到 class.php 以为每个数据集创建对象。那部分工作正常。
在该循环中,我尝试将每个对象保存到由其 id 值定义的 SESSION
创建新对象后
文件A.php:
$_SESSION[$pObject->id] = $pObject;
if (isset($_SESSION[$pObject->id]))
{
echo "SESSION $pObject->id is set";
}
我已经确认它正在创建中。
现在,我有一个通过 GET 向文件 B.php 发送 Objects id 值的表单,我确认已收到该值。
文件 B.php:
require_once 'class.php';
session_start();
$id = $_GET['id'];
echo $id;
//Now $id is in my new file, so I try to call my SESSION
if(isset($_SESSION[$id]))
{
echo "SESSION $id is set";
$pObjectCurrrent = $_SESSION[$id];
}
else{
echo "SESSION $id is Not set";
}
问题是,尽管文件 B.php 中的 $id 等于文件 A.php 中 $pObject->id 的值,但文件 B.php 中的 SESSION[$id] 未设置且没有任何值。相反,我收到一个未定义的变量错误。任何想法将不胜感激。
【问题讨论】:
-
你确定你也在文件 a 中调用
session_start()吗? -
文件 A.php 被“包含”在具有 session_start() 的 main.php 中
-
var_dump($_SESSION)看看里面到底有什么,如果$id真的和$pObject->id一样。 -
var_dump($SESSION[$pObject->id] in File A 确认 pObjects id 等于 File B 中的 $id,但是 File B 中的 var_dump($_SESSION[$id]) 导致“空"
-
session_start 是在包含之前而不是之后被调用的吗?