-3

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

我的问题:如果有很多用户登录到我的系统,会话数据总是丢失而不点击注销之前。谢谢。

供您参考:我已将角色存储在数据库中,但为了方便我之前获得的角色值,我将其存储在会话中。对于简单的解决方案。谢谢。

4

1 回答 1

0

将数据库中的角色存储在用户表中。我的申请学生、员工、管理员、总裁有 4 个角色。

然后,您将根据输入的用户名查询数据库,

如果角色 = 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)
}
于 2013-04-17T13:16:57.147 回答