在这种情况下,我在数据库中有2个表"用户"和"帖子"。 第一个表扩展了基本的用户数据(id,名字,姓氏,用户名,邮件,密码等......)第二个是关于帖子(id,title,text,author等...)
因此,当用户要创建帖子时,他需要填写标题字段和文本字段,作者字段应填充直接从会话中提取的用户名并将其存储到db。
答案 0 :(得分:1)
有不同的方法可以做到这一点,但我建议 - 不要在会话中存储任何用户数据。当用户首次登录时 - 创建一个"令牌"这是一个很长的随机字符串,可能在结尾处有一个日期时间供参考。使用令牌更新users表,并将令牌保存到会话中。
当用户转到另一个页面时 - 您从会话中获取令牌 - 并使用它来从数据库返回用户记录。然后,您可以获得所需的所有用户详细信息。这将使您不再在会话中存储任何用户等细节。这对于安全性来说要好得多,它使您的系统更容易长期处理。否则,您无需在用户进行任何更改时更新用户数据库表和会话。
答案 1 :(得分:1)
这里更好的,可能是safter选项是将您的SESSION数据存储在数据库中。
看看https://www.codeigniter.com/userguide3/libraries/sessions.html。您需要在数据库中创建一个名为ci_sessions的表(或者它可以在配置文件中重命名),然后您可以根据需要从会话中提取用户名。
存储在磁盘上的会话很好(AFAIK),如果它是一个专用的盒子等,你可以完全控制代码。当你在共享的盒子上时,它们是不可靠的。
答案 2 :(得分:0)
登录时,创建一系列将进入cookie和会话数据库的内容;一个例子
if (password_verify($pass1, $stored))
{
$data = array(
'name' => $row->name,
'is_logged_in' => TRUE
);
$this->session->set_userdata($data);
该名称是用户的db记录的一部分。但不是登录的一部分。当您搜索用户以将其登录时,name是您在查询中包含的内容之一
然后,在您的表单输入中,只需设置set_value = $ this-> session-> userdata(' name')