php session保存对象,php-在$_SESSION中存储主义对象

嘿,

我现在遇到了一个神秘的问题…

我在我的网站上有登录服务.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值