在用户使用他的帐户登录后,我正在尝试在我的程序中设置会话。如果用户输入了正确的电子邮件和密码,则程序设置一些变量,如下所示:
$_SESSION['user']['id'] = $row['id'];
$_SESSION['user']['email'] = $email;
$_SESSION['user']['admin'] = $row['admin'];
$_SESSION['logged'] = true;
问题是,我从上面的前三行代码中收到了这个警告:
警告:第 193 行 C:\Program Files (x86)\Zend\Apache2\htdocs\OOPeshop\user\User.php 中的非法字符串偏移 'id'
因此,我检查了是否设置了所有变量,因此我在代码中添加了这两行:
var_dump($row);
var_dump($email);
但看起来还不错,我得到了输出
array(2) { ["id"]=> string(2) "14" ["admin"]=> string(1) "0"}
字符串(22)“foobar@gmail.com”
那么有人可以解释一下问题出在哪里吗?我检查了类似的问题,但没有找到解决我的问题的方法。
我试过这个:
$user = array('id' => $row['id'], 'email' => $email, 'admin' => $row['admin']);
$_SESSION['user'] = $user;
没有更多的警告。它首先设置数组,然后将整个数组设置为会话变量,它工作,但我不知道我的第一个代码中的问题在哪里,所以也许有更好理解的人可以更好地解释它。