【问题标题】:PHP- Codeigniter Redirect to admin and user based on user rolePHP- Codeigniter 根据用户角色重定向到管理员和用户
【发布时间】:2018-07-02 12:14:21
【问题描述】:

如果管理员正在登录,我希望他们进入管理页面,否则进入约会页面。在用户表中,我有一列“id_roles”,值为“2”和“3”。 2 代表管理员,3 代表用户,角色有单独的表。

这是我的控制器

public function index()
{
    // get form input
    $email = $this->input->post("email");
    $password = $this->input->post("password");

    // form validation
    $this->form_validation->set_rules("email", "Email-ID", "trim|required");
    $this->form_validation->set_rules("password", "Password", "trim|required");

    if ($this->form_validation->run() == FALSE)
    {
        // validation fail
        $this->load->view('login_view');
    }
    else
    {
        // check for user credentials
        $uresult = $this->model_user->get_user($email, $password);
        //edit
        if (count($uresult) > 0 )
        {
            // set session

            $sess_data = array('login' => TRUE, 'uname' => $uresult[0]->first_name,'ulname' => $uresult[0]->last_name,'uemail' => $uresult[0]->email, 'uphone' => $uresult[0]->phone_number, 'uaddress' => $uresult[0]->address, 'ucity' => $uresult[0]->city,  'uin' => $uresult[0]->injury, 'uid' => $uresult[0]->id);
            $this->session->set_userdata($sess_data);
            //edit

        if($uresult->['id_roles'] == 3)
            redirect('appoinments/index');
            else 
            redirect('admin/index');

        }

        else
        {
            $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>');
            redirect('login/index');
        }
    }
}

这是我的模特

    function get_user($email, $pwd)
{
    $this->db->where('email', $email);
    $this->db->where('password', md5($pwd));
    $query = $this->db->get('ea_users');
    return $query->result();
}

【问题讨论】:

  • 有什么问题?
  • $uresult-&gt;id_roles 不是['id_roles']。您的模型还应该返回 $query-&gt;row(),因为您可能只有一个结果,这样您就不必使用索引来访问字段。
  • 我已经做了你的改变,我现在的问题是它重定向到一个空白页面。 url 结尾是“登录/索引”。如果我将模型保留为原始模型,它只会重定向到“管理”页面
  • 如果您更新了模型,您还需要更新为会话设置的数据,因为您使用的是不存在的编号索引。如果您遇到白屏死机,则需要启用错误报告,
  • 我在 if 语句中包含了索引并且它起作用了。如果($uresult[0]->id_roles ==3)。感谢您指出索引。

标签: php codeigniter login


【解决方案1】:

在您的“ea_users”表中创建另一列“usertype”。对于登录时,您将根据用户类型检索数据,您可以重定向(即分别为用户和管理员的用户配置文件和管理面板)

【讨论】:

  • 您的答案是无关紧要的,因为@lainey 已经在问题本身中解释了用户类型。你刚刚在你的答案中再次写了这个问题。请在发布答案之前正确阅读问题。
猜你喜欢
  • 2017-11-19
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多