2015-11-26 3 views
0

Я пытаюсь разработать панель входа с использованием codeigniter, но я не могу это сделать, поскольку, по-моему, моя концепция еще не настолько ясна, хотя я делаю что-то неправильно, пожалуйста, помогите мне с эта проблемаНевозможно сделать переадресацию входа в codeigniter

Контроллеры> admin.php

class admin extends CI_Controller { 

public function __construct() { 
    parent::__construct(); 
    $this->load->model('verify_user'); 
} 

public function verify() { 
    $this->load->library('form_validation'); 
    $username = $this->form_validation->set_rules('username', '', 'required|trim'); 
    $password = $this->form_validation->set_rules('password', '', 'required|trim'); 

    if($this->form_validation->run()) { 
     $this->verify_user->can_log_in(); 
     redirect('admin/dashboard'); 
    } else { 
     $this->load->view('admin/login'); 
    } 
} 

public function dashboard() { 
    if($this->session->userdata('is_logged_id') == true) { 
     $this->load->view('admin/dashboard'); 
    } else { 
     redirect('admin/login'); 
    } 
} 

модели> verify_users.php

class verify_user extends CI_Model { 
    public function __construct() { 
     parent::__construct(); 
    } 

    public function can_log_in() { 
     $this->db->where('username', $this->input->post('username')); 
     $this->db->where('password', $this->input->post('password')); 

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

     $query2 = $this->db->get_where('users', array(
      'username' => $this->input->post('username') 
     )); 
     if($query2->num_rows() == 1) { 
      $name = $query2->row()->first_name . " " . $query2->row()->last_name; 
     } 
     if($query->num_rows() == 1) { 

      $query = $this->db->get_where('users', array(
       'username' => $this->input->post('username') 
      )); 

      $data = array(
       'username' => $this->input->post('username'), 
       'is_logged_in' => 1 
      ); 

      $this->session->set_userdata('name', $name); 
      $this->session->set_userdata($data); 

      return true; 
     } else { 
      $data['message'] = 'Incorrect username/password'; 
      $this->load->view('admin/login', $data); 
     } 
    } 
} 

дело происходит, когда я войти в систему с правильным именем пользователя и passwor d перенаправляет меня на login.php, когда я поставил модель сценария в функции проверки он работает отлично

Пожалуйста, помогите мне с этим

ответ

1

Это максимально возможное решение для вашего пути реализации. Вам нужно больше узнать о MVC. Попробуйте заменить контроллер с этим:

class admin extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('verify_user'); 
    } 

    public function verify() { 
     $this->load->library('form_validation'); 
     $username = $this->form_validation->set_rules('username', '', 'required|trim'); 
     $password = $this->form_validation->set_rules('password', '', 'required|trim'); 

     if($this->form_validation->run() && $this->verify_user->can_log_in()) { 
      redirect('admin/dashboard'); 
     } else { 
      $this->load->view('admin/login'); 
     } 
    } 

    public function dashboard() { 
     if($this->session->userdata('is_logged_in') == "1") { 
      $this->load->view('admin/dashboard'); 
     } else { 
      redirect('admin/login'); 
     } 
    } 
} 

И модель с этим:

class verify_user extends CI_Model { 
    public function __construct() { 
     parent::__construct(); 
    } 

    public function can_log_in() { 
     $this->db->where('username', $this->input->post('username')); 
     $this->db->where('password', $this->input->post('password')); 

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

     $query2 = $this->db->get_where('users', array(
       'username' => $this->input->post('username') 
     )); 
     if($query2->num_rows() == 1) { 
      $name = $query2->row()->first_name . " " . $query2->row()->last_name; 
     } 
     if($query->num_rows() == 1) { 

      $query = $this->db->get_where('users', array(
        'username' => $this->input->post('username') 
      )); 

      $data = array(
        'username' => $this->input->post('username'), 
        'is_logged_in' => "1" 
      ); 

      $this->session->set_userdata('name', $name); 
      $this->session->set_userdata($data); 

      return true; 
     } else { 
      $data['message'] = 'Incorrect username/password'; 
      return false; 
     } 
    } 
} 
+0

Работал отлично, спасибо вам большое, но, пожалуйста, вы можете сообщить мне, что мой процесс и логика были в порядке или это неправильный подход для меня –

+0

Если он работает, тогда примите ответ. Читайте о MVC, как я сказал. вам нужно поставить логики в контроллеры и функции, связанные с данными в режимах ... также функция панели инструментов кажется бесполезной. – Babak

+0

Благодарим вас, и да, приняв вашу помощь и высоко оценил –

0

Проверьте это

class admin extends CI_Controller { 
     ^// this should be Admin 

В модели

else { 
     //$data['message'] = 'Incorrect username/password'; 
     //$this->load->view('admin/login', $data); 
     //dont load view in model 
     return false; 
} 

В контроллере

if($this->form_validation->run()) { 
    $res = $this->verify_user->can_log_in(); 
    if($res) 
     redirect('admin/dashboard'); 
    else 
     redirect('admin/login'); 
} else { 
    $this->load->view('admin/login'); 
} 

Исправление этих 3 ошибок должно помочь вам.

+0

забыл это один: 'если ($ this-> session-> UserData ('is_logged_id') == верно) {'он устанавливает '' is_logged_in '=> 1' в модели. – Babak

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