-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

さて、あなたはログイン機能を持っていると言うので、ここに基本があります。Mike の言っていることと私のやり方は正しいですが、2 種類のユーザーしかいない場合、ロール ソリューションはおそらくやり過ぎです。個人的には、ロールを使用してユーザー メニューを設定します。すべてのユーザーが同じメニューを取得します。オプションは、サイトのどの部分を表示できるかによって変わります。

ただし、基本的な管理者/ユーザーの場合、それは実際には必要ありません。あなたがする必要があるのは、ログイン後にユーザーグループに基づいてリダイレクトするだけなので、これに似たものです.

$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 に答える