2013-04-17 5 views
0

Я следовал за this удивительным учебным пособием, чтобы создать очень простой (один уровень) систему входа. Но я всегда перенаправлялся обратно в свою регистрационную форму (login() method in controller) каждый раз, когда я пытался войти в систему.php/codeigniter login not working

Это код моего контроллера:

public function login() { 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('txt_email', 'Email', 'required|valid_email');  

     if($this->form_validation->run() !== FALSE) 
     { 
      $log_in = $this->backend_m->log_in($this->input->post('txt_email'), $this->input->post('txt_password')); 
      if($log_in !== FALSE) 
      { 
       $_SESSION['username'] = $this->input->post('txt_email'); 
       redirect('backend/index'); 
      } 
      //redirect('backend/index'); 
     } 

     $this->load->view('backend/login_v'); 
    } 

Это backend/index первый код (один я перенаправление после входа в систему, я думаю, что ошибка здесь, потому что я всегда перенаправлены обратно на backend/login):

public function index() { 
    //check authorization 
    if(!isset($_SESSION['username'])) 
     redirect('backend/login'); 

Это моя модель:

public function log_in($email, $password) { 
     $result = $this->db->where('email', $email)->where('password', sha1($password))->get('mspengurus');  

     if($result->num_rows() > 0) 
      return $result->row(); 

     return FALSE; 
    } 

Это мое мнение:

<body> 
    <div id="login"> 
     <h1>Login - GABDB</h1> 
     <?php echo form_open('backend'); ?> 
      <table> 
       <tr> 
        <td> 
         <?php echo form_label('Email :', 'lbl_email'); ?> 
        </td> 
        <td> 
         <?php echo sha1('admin'); ?> 
         <?php echo form_input('txt_email', set_value('txt_email'), 'id="txt_email"'); ?> 
         <?php echo validation_errors(); ?> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <?php echo form_label('Password :', 'lbl_password'); ?> 
        </td> 
        <td> 
         <?php echo form_password('txt_password', '', 'id="txt_password"'); ?> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="2"> 
         <?php echo form_submit('btn_submit', 'Log In', 'id = "btn_submit"'); ?> 
        </td> 
       </tr> 
      </table> 
     <?php echo form_close(); ?> 
    </div> 
</body> 
+1

По некоторым причинам, ваш сеанс не установлен. попробуйте поставить echo для $ this-> input-> post ('txt_email') и $ _SESSION ['username'] внутри условия if, если это проверить. –

ответ

0

использовать этот метод, чтобы установить сессию логина функции()

$this->load->library('session'); 
$seesion_data = array(
        'username' => $this->input->post('txt_email'), 

        'logged_in' => TRUE 
       ); 

$this->session->set_userdata($seesion_data); 

использовать эту функцию в индексе()

$this->load->library('session'); 
$username = $this->session->userdata('username'); 
if(empty($username)){ 
redirect('backend/login'); 
}