2015-04-22 4 views
0

My Controller.Форма не подтвердит имя пользователя и пароль

//Load Login Page------------------------------------------------------------------------------------------------------------------------------------------------------------ 

    function login(){ 
      $this->load->helper('form'); 
      $data['title'] = "Login"; 
      $this->load->view("view_header",$data); 
      $this->load->view("view_login", $data); 
    } 


    //Login Validation------------------------------------------------------------------------------------------------------------------------------------------------------------ 

    public function login_validation(){ 

     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('Username', 'Username', 'required|trim'); 

     $this->form_validation->set_rules('Password', 'Password', 'required|trim|md5'); 

     if ($this->form_validation->run()){ 
      redirect('site/members'); 
     } 
     else{ 
      $this->load->view('view_header'); 
      $this->load->view('view_login'); 
     } 

    } 

    public function validate_credentials(){ 
     $this->load->model('model_users'); 

     if ($this->model_users->canLogin()){ 
      return true; 
     } 
     else{ 
      $this->form_validation->set_message('validate_credentials', 'Incorrect username or password'); 
      return false; 
     } 

    } 



    //Load Members Page------------------------------------------------------------------------------------------------------------------------------------------------------------ 

    public function members(){ 

     $data['title'] = "Members"; 
     $this->load->view('view_header'); 
     $this->load->view("view_members", $data); 
    } 

My Model

class Model_users extends CI_Model { 


    public function canLogin(){ 

     $this->db->where('Username', $this->input->post('Username')); 
     $this->db->where('Password', md5($this->input->post('Username'))); 

     $query = $this->db->get('user_registration'); 


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

    } 

Моя форма

<?php 
    echo form_open('site/login_validation'); 

    echo form_label('Username:', 'Username'); 
    echo form_input('Username'); 
    echo "<br>"; 

    echo form_label('Password:', 'Password'); 
    echo form_password('Password'); 
    echo "<br>"; 

    echo form_submit('Login', 'Login'); 

    echo validation_errors(); 

    echo form_close(); 

    ?> 

Не могу получить свой логин и пароль для подтверждения. Это позволяет мне получить доступ к странице участников без существующей учетной записи. Не удается найти проблему, поскольку я слежу за учебниками Youtube.

+0

Как называется 'validate_credentials'? Я думаю, что вы, возможно, пропустили что-то в своем учебном пособии. Вы также не проверяете, зарегистрирован ли кто-либо в действии членов. –

+0

Вы запускаете проверку формы, и если проверка выполняется, вы перенаправляете ее на членов. вот и все. вы даже не проверяете базу данных ни на что – Patrick

+0

Оказывается, это я, извините. Похоже, что лишение сна доходит до меня. Спасибо! –

ответ

0

Попробуйте этот код и воспользуйтесь функцией обратного вызова в форме проверки, которую может понадобиться сделать в route.php $ route ['login'] = "login/index";

Не использовать MD5 использовать его только для тестирования.

class Login extends CI_Controller { 

public function index() { 

$this->load->library('form_validation'); 
$this->load->helper('form'); 
$this->load->helper('url'); 

$data['title'] = "Login"; 

$this->form_validation->set_rules('Username', 'Username', 'required|trim|callback_validate_credentials'); 

$this->form_validation->set_rules('Password', 'Password', 'required|trim|md5'); 

if ($this->form_validation->run() == FALSE){ 

$this->load->view('view_header'); 
$this->load->view('view_login'); 


} else{ 

redirect('site/members'); 

} 

} 

public function validate_credentials(){ 
$this->load->library('form_validation'); 
$this->load->model('model_users'); 

if ($this->model_users->canLogin()){ 

return true; 

} else{ 

$this->form_validation->set_message('validate_credentials', 'Incorrect username or password'); 
     return false; 
    } 

} 

} 

Посмотреть

<?php 
    echo form_open('login'); 

    echo form_label('Username:', 'Username'); 
    echo form_input('username'); // Lower case 
    echo "<br>"; 

    echo form_label('Password:', 'Password'); 
    echo form_password('password'); // Lower case 
    echo "<br>"; 

    echo form_submit('Login', 'Login'); 

    echo validation_errors(); 

    echo form_close(); 

    ?> 
Смежные вопросы