1. Database table
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `users` (`id`, `username`, `password`) VALUES
(1, 'admin', 'admin');
2. Set application\config\routes.php
$route['default_controller'] = "login";
$route['404_override'] = '';
3. set autoload application\config\autoload.php
$autoload['libraries'] = array('database', 'session');
4. set the encryption_key
application\config\config.php
$config['encryption_key'] = 'REALLY_LONG_NUMBER';
Create Model application\models\user.php
<?php Class User extends CI_Model { function login($username, $password) { $this -> db -> select('username, password'); $this -> db -> from('users'); $this -> db -> where('username = ' . "'" . $username . "'"); $this -> db -> where('password = ' . "'" . $password . "'"); $this -> db -> limit(1); $query = $this -> db -> get(); if($query -> num_rows() == 1) { return $query->result(); } else { return false; } } } ?>Create a controller application\controllers\login.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Login extends CI_Controller { function __construct() { parent::__construct(); } function index() { $this->load->helper(array('form', 'url')); $this->load->view('login_view'); } } ?>Create the home controller application\controllers\home.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); session_start(); //we need to call PHP's session object to access it through CI class Home extends CI_Controller { function __construct() { parent::__construct(); } function index() { if($this->session->userdata('logged_in')) { $session_data = $this->session->userdata('logged_in'); $data['username'] = $session_data['username']; $this->load->view('home_view', $data); } else { //If no session, redirect to login page redirect('login', 'refresh'); } } function logout() { $this->session->unset_userdata('logged_in'); session_destroy(); redirect('home', 'refresh'); } } ?>Create the view controllers\login_view.php
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Simple Login with CodeIgniter</title> </head> <body bgcolor="pink"> <h1>Simple Login with CodeIgniter</h1> <?php echo validation_errors(); ?> <?php echo form_open('verifylogin'); ?> <label for="username">Username:</label> <input type="text" size="20" id="username" name="username"/> <br/> <label for="password">Password:</label> <input type="password" size="20" id="passowrd" name="password"/> <br/> <input type="submit" value="Login"/> </form> </body> </html>VerifyLogin Controller (application/controllers/verifylogin.php)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class VerifyLogin extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('user','',TRUE); } function index() { //This method will have the credentials validation $this->load->library('form_validation'); $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean'); $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database'); if($this->form_validation->run() == FALSE) { //Field validation failed. User redirected to login page $this->load->view('login_view'); } else { //Go to private area redirect('home', 'refresh'); } } function check_database($password) { //Field validation succeeded. Validate against database $username = $this->input->post('username'); //query the database $result = $this->user->login($username, $password); if($result) { $sess_array = array(); foreach($result as $row) { $sess_array = array( //'id' => $row->id, 'username' => $row->username ); $this->session->set_userdata('logged_in', $sess_array); } return TRUE; } else { $this->form_validation->set_message('check_database', 'Invalid username or password'); return false; } } } ?>Create the home view
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Simple Login with CodeIgniter - Private Area</title> </head> <body bgcolor="pink"> <h1>Home</h1> <h2>Welcome <?php echo $username; ?>!</h2> <a href="home/logout">Logout</a> </body> </html>