嘿,
我现在遇到了一个神秘的问题…
我在我的网站上有登录服务.
我使用Doctrine作为ORM.
当用户输入正确的用户名和密码组合时,我尝试将检索到的用户对象存储在我的会话中,以备后用.
$user = new models\User;
$user = $em->getRepository('models\User')->findOneBy(array(
'username' => $this->input->post('username'),
'password' => hash("sha512", $this->input->post('password'))
));
if($user != NULL) {
session_start();
$_SESSION['user'] = $user;
redirect('user');
}
那就是我登录的一部分
/**
* @ManyToOne(targetEntity="Country")
* @JoinColumn(name="country_id", referencedColumnName="id")
*/
private $country;
用户具有不同的属性,例如国家/地区,地址等.
所以我的问题是:
如果用户的“国家/地区”字段为空(在数据库中),则登录工作正常…但是,如果将用户分配给一个国家/地区(国家/地区只有ID和名称),则系统会失败.
重定向后,$_ SESSION中没有$user
没有PHP错误或类似的东西..变量就消失了
将ID存储在会话中并在每次页面加载时加载用户会更好吗?
解决方法:
would it maybe better just storing the id in session and load the user on
every page load?
当然.用户数据可能在下一页加载时已经更改,因此显然您需要从数据库刷新数据,而不是从会话中读取用户的旧数据.
参考资料:
标签:apache,doctrine,php,session
来源: https://codeday.me/bug/20191023/1912962.html