-1

我在根据用户类型重定向用户时遇到问题。怎么做这是我的代码,请建议如何做。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class VerifyLogin extends CI_Controller {

  function __construct()
  {
    parent::__construct();
  }

  function index()
  {
       $this->load->model('user','',TRUE);

    //This method will have the credentials validation
    $this->load->library('form_validation');
    $this->load->library('session');

    $this->form_validation->set_rules('username', 'Username','trim|required|xss_clean');
    $this->form_validation->set_rules('password', 'Password'
      'trim|required|xss_clean|callback_check_database');

      if($this->form_validation->run() == FALSE)
      {        

     //Field validation failed.&nbsp; User redirected to login page
     validation_errors();

     $this->load->view('error');
  }
 else
  {
  //Go to private area

基本上在这里,如果用户是管理员,我想重定向然后重定向到管理页面,否则重定向到主页。我怎样才能做到这一点 ???

        redirect('home', 'refresh');
     }
    }


   function check_database($password)
   {
    //Field validation succeeded.&nbsp; Validate against database
      $username = $this->input->post('username');

       //query the database
       $result = $this->user->login($username, $password);

     if($result)
     {
      $sess_array = array();
       foreach($result as $row)
      {
       $sess_array = array(
     'id' => $row->id,
     'username' => $row->username
     );
     $this->session->set_userdata('logged_in', $sess_array);

        }
        return TRUE;
      }
    else
       {
         $this->form_validation->set_message('check_database', 'Invalid username or password');
         return false;
       }
     }  
     }
  ?>
4

2 回答 2

1

我这样做的方法是通过角色表加入用户。每个用户都被分配了一个角色(例如销售人员、会计经理等)。每个角色都有一个可选的主页,可在登录后重定向到。如果未设置,它将重定向到默认页面。

于 2012-10-12T01:04:29.710 回答
1

好的,你说你有登录功能,所以这里是基础知识。迈克所说的是对的,我是如何做到的,但是如果您只有两种类型的用户,那么角色解决方案可能是矫枉过正的。就我个人而言,我使用角色来填充用户菜单,所有用户都获得相同的菜单,选项根据他们被允许查看的网站部分而变化。

对于基本的管理员/用户,虽然这真的没有必要。您需要做的只是在登录后基于用户组重定向,所以类似于此。

$this->db->where(username, $username);
$this->db->where(password, $password);
$query = $this->db->get(users);
if($query->num_results() ==1)
{
    $result = $query->result_array();
    switch ($result['usergroup']) {
        case '1':
        redirect 'home';
        break;
        case '2':
        redirect 'admin';
        break;
        default:
        redirect 'home';
        break;
    }
}

正如我所说,这是一个基本解决方案,您可以将其用于几个不同的角色,如果您想做任何更复杂的事情,请研究创建角色。

您还需要将用户组保存到会话并在管理页面上检查它,如果用户不是管理员将他们从页面重定向。

于 2012-10-12T10:04:52.280 回答