在我使用codeigniter的web应用程序中,我在会话之前存储了我从数据库查询的角色数据。
$role = $this->session->userdata('role');
在每个模型或控制器中,我总是使用此变量($ role)来管理我的网络中的用户行为。
如
if($role==1)
{
//Behaviour for admin.
}
else if($role==2)
{
//Behaviour for general user
}
else
{
//Do something
}
我的问题:如果很多用户登录我的系统,会话数据总是会丢失,而不会在之前点击退出。感谢。
获取您的信息: 我已将角色存储在数据库中,但为了方便我之前获得的角色值,我将其存储在会话中。简单的解决方案。感谢。
答案 0 :(得分:0)
将角色存储在users表中的数据库中。我在我的申请学生,工作人员,管理员,总统中有4个角色。
然后,您将使用输入的用户名查询数据库,
如果role = 1,则发送到相应的页面。
有点像这样:
$sql = "SELECT * FROM users WHERE username = :username AND role = 1";
$role = $this->db->conn_id->prepare($sql);
$role->bindParam(':username', $username);
$role->execute();
if ($role) {
if ($role->rowCount() == 1) {
return TRUE;
}
}
然后在控制器中执行
if ($this->yourmodel->yourfunction($yourvariable)) { // Checks if the query above returns TRUE!
redirect(to what ever page you want)
}