Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在codeigniter web应用程序中使用会话数据(角色)设置用户管理是否良好?_Php_Codeigniter_Session - Fatal编程技术网

Php 在codeigniter web应用程序中使用会话数据(角色)设置用户管理是否良好?

Php 在codeigniter web应用程序中使用会话数据(角色)设置用户管理是否良好?,php,codeigniter,session,Php,Codeigniter,Session,在使用codeigniter的web应用程序中,我存储了会话之前从数据库查询的角色数据 $role = $this->session->userdata('role'); 在每个模型或控制器中,我总是使用variabel($role)来管理web中的用户行为 比如 if($role==1) { //Behaviour for admin. } else if($role==2) { //Behaviour for general user } else { //Do somethi

在使用codeigniter的web应用程序中,我存储了会话之前从数据库查询的角色数据

$role = $this->session->userdata('role');
在每个模型或控制器中,我总是使用variabel($role)来管理web中的用户行为

比如

if($role==1)
{
//Behaviour for admin.
}
else if($role==2)
{
//Behaviour for general user
}
else
{
//Do something
}
我的问题是:如果许多用户登录到我的系统,会话数据总是在没有单击“注销”之前丢失。谢谢

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

将数据库中的角色存储在用户表中。在我的应用程序中,我有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)
}

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