2013-07-17 6 views
0

Я пытаюсь изучить MVC и codeigniter и попытаться выяснить, что я делаю неправильно. Я пытаюсь войти в систему с очень простой формой, содержащей электронную почту и пароль. В контроллере я сначала загружаю представление, содержащее форму. Когда все заполняется и нажимается на кнопку «loginSubmit», она должна перейти к «login()» в моем контроллере.Codeigniter - не входит в систему

В моем методе 'login()' Загружаю модель, где я называю метод 'validate()'. Когда он возвращает что-то, я возвращаю true для своего контроллера, чтобы начать сеанс и перенаправить меня на страницу профилей.

Проблема теперь в том, что я даю, чтобы войти в систему, она всегда обновляет контроллер входа с входа Methode

Так я просматриваю к

http://localhost/project/index.php/login/ 

при нажатии отправить это приносит мне до

http://localhost/project/index.php/login/login/ 

Почему он не делает проверку, что происходит?

login_view

<?php 
    $loginEmail = array('placeholder' => "Email", 'name' => "loginEmail"); 
    $loginPassword = array('placeholder' => "Wachtwoord", 'name' => "loginPassword"); 
    $loginSubmit = array('name' => "loginSubmit", 'class' => "btn", 'value' => "Inloggen"); 
    $loginForgot = array('name' => "loginForgot", 'class' => "link", 'value' => "Wachtwoord vergeten?"); 

    echo form_open('login/login', array('class' => 'grid-100 formc')); 
    echo form_input($loginEmail); 
    echo form_password($loginPassword); 
    echo form_submit($loginSubmit); 
    echo form_submit($loginForgot); 
?> 

login_controller

<?php 

    Class Login extends CI_Controller{ 
     public function __construct() {   
      parent::__construct(); 
     } 

     function index(){ 
     $data['content'] = 'login_view'; 
     $this->load->view('templates/template', $data); 
     } 


     function login(){ 
      $this->load->model('login_model'); 
      $query = $this->login_model->validate(); 

      if($query){ 
       $data = array(
        'username' => $this->input->post('loginEmail'), 
        'loggedin' => true 

       ); 

       $this->session->set_userdata($data); 
       redirect('profile/myprofile'); 
      } 
      else{ 
       echo "not logged in"; 
      } 
     } 

    } 

    ?> 

login_model

<?php 

    Class Login_model extends CI_Model{ 
     function __construct(){ 
      parent::__construct(); 
     } 
     function validate(){ 
      $this->db->where('email', $this->input->post('loginEmail')); 
      $this->db->where('password', md5($this->input->post('loginPassword'))); 
      // I also tried with get_where, but same effect. BTW. what is the difference between where() and get_where() and what is better? 
      //$query = $this->db->get_where('tbl_users', array(('email', $this->input->post('loginEmail'), ('password', $this->input->post('loginPassword'))); 
      $query = $this->db->get('tbl_users'); 

      if($query->num_rows == 1){ 
       return true; 
      } 
     } 

    } 

    ?> 
+0

Вы уверены, что у вас есть только одна строка? "$ query-> num_rows == 1" Что делать, если "$ query-> num_rows> 0"? – martincpt

+0

У меня есть 2 записи в db и совершенно разные записи. Также невозможно зарегистрироваться с тем же адресом электронной почты, поэтому он всегда должен быть 1 или 0 – mXX

+0

, тогда я бы попытался 'echo $ this-> input-> post ('loginEmail').'- '. Md5 ($ this- > input-> post ('loginPassword')); 'в вашей функции проверки. Посмотрите, являются ли они такими же, как в db. – martincpt

ответ

1

Пожалуйста, измените функцию namefrom входа на что-то другое (контроллер), как, когда мы создаем функцию с тем же именем класса становится конструктором. Вот почему функция входа снова и снова загружается.

+0

Он всегда выполняет 'else { echo" не вошел в систему "; } 'даже если учетные данные верны – mXX

+0

Да, я знаю, потому что функция входа выполняет как конструктор. Поэтому, пожалуйста, измените имя функции. Если он не работает, попробуйте отлаживать код i.e echo $ query; умереть(); –

+0

Да, теперь я изменил имя функции: 'inloggen()' Но теперь, когда я вхожу в систему, он говорит, что в основном говорит, что учетные данные неверны – mXX

0

Написать еще часть мо дель и всегда рядом с формой метода form_close()

<?php 

     Class Login_model extends CI_Model{ 

      function validate(){ 
       $this->db->where('email', $this->input->post('loginEmail')); 
       $this->db->where('password', md5($this->input->post('loginPassword'))); 
       // I also tried with get_where, but same effect. BTW. what is the difference between where() and get_where() and what is better? 
       //$query = $this->db->get_where('tbl_users', array(('email', $this->input->post('loginEmail'), ('password', $this->input->post('loginPassword'))); 
       $query = $this->db->get('tbl_users'); 

       if($query->num_rows == 1){ 
       return true; 
       } 
       else{ 
       return false; 
       }  
      }  
     }  
?> 
+0

Это не сработало. Это все тот же результат – mXX