Я пытаюсь изучить 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;
}
}
}
?>
Вы уверены, что у вас есть только одна строка? "$ query-> num_rows == 1" Что делать, если "$ query-> num_rows> 0"? – martincpt
У меня есть 2 записи в db и совершенно разные записи. Также невозможно зарегистрироваться с тем же адресом электронной почты, поэтому он всегда должен быть 1 или 0 – mXX
, тогда я бы попытался 'echo $ this-> input-> post ('loginEmail').'- '. Md5 ($ this- > input-> post ('loginPassword')); 'в вашей функции проверки. Посмотрите, являются ли они такими же, как в db. – martincpt