On File 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";
}
问题是,尽管File B.php中的$id
等于文件A.php中$pObject->id
的值,但文件B.php中的SESSION[$id]
未设置且没有价值。相反,我收到一个未定义的变量错误。任何想法都将不胜感激。
答案 0 :(得分:1)
您不能使用整数作为会话变量名。
您可以像这样设置会话变量:
$_SESSION['obj' . $pObject->id] = $pObject;
然后从B.php中检索它:
echo $_SESSION['obj' . $id];
基本上将ID与字符串连接起来,因此变量名称为“obj5”,“obj2”等。
另外 - 如果你在会话对象中传递大量数据,我建议研究序列化和替代方法,比如将会话数据存储到数据库中。