【问题标题】:Is it good to use session data (role) to set user management in codeigniter web application?在codeigniter web应用程序中使用会话数据(角色)设置用户管理好不好?
【发布时间】:2013-04-10 06:23:43
【问题描述】:

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

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

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

【问题讨论】:

  • 您不应该在会话中存储用户的角色,您应该将这些内容存储在数据库中以进行大多数控制。请查看我的答案以获取更多信息。

标签: php codeigniter session


【解决方案1】:

将数据库中的角色存储在用户表中。我在我的申请学生、员工、管理员、总裁中有 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)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多