2014-10-02 2 views
0
function login(){ 
    $data = array('username' => $_POST['username'], 'password' => $_POST['password']); 
    $this->form_validation->set_rules('username', 'Username', 'required|callback_username_check'); 
    $this->form_validation->set_rules('password', 'Password', 'required'); 

    if($this->form_validation->run() == FALSE){ 
     $this->load->view('Login'); 
    } else { 
     $result = $this->LoginModel->account_check($data); 
     if($result){ 
      if($result['status'] = 'admin'){ 
       $isLoggedin = array('user_type' => 'administrator' ,'admin_name' => $result['username'] , 'is_loggedin' => TRUE); 
       $this->session->set_userdata($isLoggedin); 
       $this->load->view('admin/homepage'); 
      } else if($result['status'] = 'user'){ 
       $isLoggedin = array('user_name' => $row['username'] , 'user_type' => 'user' , 'is_loggedin' => TRUE); 
       $this->session->set_user($isLoggedin); 
       $this->load->view('user/homepage'); 
      } 
     } 
    } 
} 

function username_check($username){ 
    $result = $this->LoginModel->username_check($username); 
    if($result != TRUE){ 
     $this->form_validation->set_message('username_check' , 'Username does not exist'); 
     return FALSE; 
    } else return TRUE; 
} 

모델 :CodeIgniter의 액세스 세션

function username_check($username){ 
    $query = $this->db->get_where('admin' , array('username' => $username))->result_array(); 
    if(!empty($query)){ 
     return TRUE; 
    }else{ 
     $query = $this->db->get_where('user_mst', array('username' => $username))->result_array(); 
     if(!empty($query)){ 
      return TRUE; 
     }else return FALSE; 
    } 
} 

function account_check($data){ 
    $query = $this->db->get_where('admin' , array('username' => $data['username'] , 'password' => $data['password']))->result_array(); 
    if(!empty($query)){ 
     foreach($query as $row){ 
      $result['status'] = 'admin'; 
      $result['username'] = $row['username']; 
      $result['password'] = $row['password']; 
      return $result; 
     } 
    } else{ 
     $query = $this->db->get_where('user_mst' , array('username' => $data['username'] , 'password' => $data['password']))->result_array(); 
     if(!empty($query)){ 
      foreach($query as $row){ 
       $result['status'] = 'user'; 
       $result['username'] = $row['username']; 
       $result['password'] = $row['password']; 
       return $result; 
      } 
     } 
    } 
} 

어떻게 메신저보기 당 계정이 로그인되어있는 경우 경우를 실행하려면이 옵션을 사용하려고하며이 경우, i는 사용자 데이터에 액세스 할 admin acc.

내가 100 % 맞으면 어떻게 세션을 사용하는지에 대한 의견을 듣고 싶습니다. 또한

, 내가 질문이

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

뷰에

블록에 직접 액세스,보기 액세스를 방지하지만 사용자가 로그인되어있는 경우 구체적으로 확인되지.

, 내가 어떻게 할 수 이것을 세션과 함께 사용하십시오. 그 중복 말해주십시오,

+0

BASEPATH 질문에 대해서는 - 그렇지 않습니다. 모든 페이지 액세스는 CI 컨트롤러를 통해 이루어집니다. 사용자가 여기에 로그인했는지 확인한 다음보기를로드하십시오. 세션 변수에 사용자 로그인이 있으므로이를 수표로 사용하십시오. –

+0

더 설명해 주시겠습니까? 더 이상 기본 경로가 필요하지 않습니다. 흠, 그래. 기본적으로 사용자가 로그인하면 컨트롤러마다 확인 만하면됩니다. 생성자를 올바르게 생성 하시겠습니까? –

답변

0

CodeIgniter는 두 번째 매개 변수를 사용하여보기에 데이터를 전달합니다

$this->load->view('user/homepage'); 

가 데이터를 전달하지 않습니다.
$this->load->view('user/homepage', $data); 

당신이 사용할 수있는 $ 데이터 변수를 전달겠습니까. ( https://ellislab.com/codeigniter/user-guide/general/views.html)

다른 점 - 로그인 메서드에서 원하는보기를로드하는 대신 성공적인 로그인 후 redirect() 함수를 사용하는 것이 좋습니다. URL 도우미를 사용하여이 작업을 수행하십시오 (https://ellislab.com/codeigniter/user-guide/helpers/url_helper.html).

희망이 있습니다.

+0

나는 $ session이 특별한 경우라고 생각한다. 설정하면 브라우저에 내장되어있다. –

+0

새로 고침 옵션 때문에 때때로 리디렉션을 사용합니다. 로드보기는 다소 복잡하지 않고 더 쉽습니다. 보안과 관련이 있습니까? –

+0

리디렉션을 사용하는 이유는 응용 프로그램에서 로그인 방법을 분리하기 위해서입니다. 생성자에서 로그인 된 세션 변수를 검사하는 새로운 컨트롤러를 생성하면 모든 페이지가 자동으로이를 확인합니다. 실패 할 경우 사용자에게 로그인 페이지가 표시됩니다. –