2016-11-30 6 views
1

Я новичок в codeigniter, я сделал страницу входа, но она не работает. Мне нужен код, используя сеанс. Мне нужно поставить session_start(); в каждом контроллере или есть способ в кодеригнере, чтобы он автоматически включался во все контроллеры? (должен ли я это сделать?).login in codeigniter error

function __construct() // controller 
{ 
    parent::__construct(); 
    $this->load->library('session'); 
    $this->load->database(); 
    $this->load->helper('url'); 
    $this->load->library('form_validation'); 
    $this->load->helper('form'); 
    $this->load->model('np_login_model'); 
} 

public function index() 
{ 
    $this->load->view('admin/login/login_dashboard'); 

} 

// Check for user login process 
public function user_login_process() 
{ 

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean'); 
if ($this->form_validation->run() == FALSE) 
{ 
    if(isset($this->session->userdata['logged_in'])) 
    { 
     $this->load->view('admin/intropage'); 
    } 
    else 
    { 
     $this->load->view('admin/login/login_dashboard'); 
    } 
} 
else 
{ 
    $data = array('username' => $this->input->post('username'),'password' => $this->input->post('password')); 
    $result = $this->np_login_model->login($data); 
    if ($result == TRUE) 
    { 
     $username = $this->input->post('username'); 
     $result = $this->np_login_model->read_user_information($username); 
     if ($result != false) 
     { 
     $session_data = array('username' => $result[0]->user_name); 
     // Add user data in session 
     $this->session->set_userdata('logged_in', $session_data); 
     $this->load->view('admin/intropage'); 
     } 
    } 
    else 
    { 
    $data = array('error_message' => 'Invalid Username or Password'); 
    $this->load->view('admin/login/login_dashboard', $data); 
    } 
} 
} 

модель

public function login($data) 
{ 
    $condition = "user_name =" . "'" . $data['username'] . "' AND " . "user_password =" . "'" . $data['password'] . "'"; 
    $this->db->select('*'); 
    $this->db->from('np_login'); 
    $this->db->where($condition); 
    $this->db->limit(1); 
    $query = $this->db->get(); 

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

// Read data from database to show data in admin page 
public function read_user_information($username) { 

$condition = "user_name =" . "'" . $username . "'"; 
$this->db->select('*'); 
$this->db->from('np_login'); 
$this->db->where($condition); 
$this->db->limit(1); 
$query = $this->db->get(); 

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

Вам не нужно ставить session_start(); в каждом контроллере. Загрузка библиотеки сеансов достаточно. $ This-> load-> библиотека ('сессии'); – Ima

+0

Это еще один случай, когда руководство пользователя открывается и проверяет все шаг за шагом, то есть debug ... – TimBrownlaw

+0

Мне удалось исправить проблему, но возникла другая проблема, т. Е. Когда я использую '=', так как мое имя пользователя и пароль напрямую входит в админ-панель без какой-либо проверки. как использовать mysql real escape string –

ответ

2

Используйте этот $this->session->userdata('logged_in') вместо $this->session->userdata['logged_in'] надеюсь это поможет