This is a sign-in lesson and code logout from Codeigniter. Learn how to get login and logout of code in Codeigniter and how to set up a session in Codeigniter remove a session to exit.

We would like you to create a login and logtout system for Codeigniter. You will learn in this tutorial how to login with Codeigniter code and logout Codeigniter

Every website wants to get into our users with a specific function. Without login, users cannot do anything on any website, because they want to login to our users on the website.


Download Codeigniter

In this step, we will download the Codeigniter, Go to this link https://codeigniter.com/download Download Codeigniter and unzip the setup in your local system xampp/htdocs/. And change the download folder name “signup_login???


Basic Configurations

This step set some basic configuration on the config.php file, so let’s go to application/config/config.php and open this file on the code editor.

$config['base_url'] = 'http://localhost/signup_login';


Create Database With Table

 we need to create the database signup_login, so let’s open your PHPMyAdmin and create the database with the name signup_login. After successfully create a database, you can use the below SQL query for creating a table in your database  phpmyadmin.

CREATE TABLE IF NOT EXISTS users(
    id int(10) unsigned NOT NULL auto_increment,
    user_name varchar(150) collate latin1_general_ci NOT NULL,
    password varchar(100) collate latin1_general_ci NOT NULL,
    first_name varchar(45) collate latin1_general_ci NOT NULL,
    last_name varchar(45) collate latin1_general_ci NOT NULL,
    PRIMARY KEY  (id)
  );


Setup Database Credentials

We need to connect to the database. go to application/config/database.php and code editor. After opening the file in the code  editor, We need to set up a database credential in this file like below. 

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'signup_login',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);


Create Controller

Now we need to create a controller name Auth.php. In this controller, we will create some method/function. We will build some of the methods like :

  • Index() – This is used to showing a login form Codeigniter login code
  • post_login() – This function authenticates user credentials and starts moving forward
  • logout() – It is used to destroy the built-in session
  • dashboard() – After successfully logging in, the user can redirect this method

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
  
class Auth extends CI_Controller {
  
     public function __construct()
        {
         parent::__construct();
         $this->load->model('Form_model');
             $this->load->library(array('form_validation','session'));
                 $this->load->helper(array('url','html','form'));
                 $this->user_id = $this->session->userdata('user_id');
        }
  
  
    public function index()
    {
     $this->load->view('login');
    }
    public function post_login()
        {
 
        $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
 
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        $this->form_validation->set_message('required', 'Enter %s');
 
        if ($this->form_validation->run() === FALSE)
        {  
            $this->load->view('login');
        }
        else
        {   
            $data = array(
               'email' => $this->input->post('email'),
               'password' => md5($this->input->post('password')),
 
             );
   
            $check = $this->Form_model->auth_check($data);
            
            if($check != false){
 
                 $user = array(
                 'user_id' => $check->id,
                 'email' => $check->email,
                 'first_name' => $check->first_name,
                 'last_name' => $check->last_name
                );
  
            $this->session->set_userdata($user);
 
             redirect( base_url('dashboard') ); 
            }
 
           $this->load->view('login');
        }
         
    }
    public function logout(){
    $this->session->sess_destroy();
    redirect(base_url('auth'));
   }    
   public function dashboard(){
       if(empty($this->user_id)){
        redirect(base_url('auth'));
      }
       $this->load->view('dashboard');
    }
}


Create Model

Go to models and create Form_model.php, We need to create a Form_model.php file for checking the credential from the database. This file contains business logic for login. So put the below code inside this file.

<?php
class Form_model extends CI_Model {
  
    public function __construct()
    {
        $this->load->database();
    }
     
    public function auth_check($data)
    {
        $query = $this->db->get_where('users', $data);
        if($query){   
         return $query->row();
        }
        return false;
    }
     
}


Create Views

Now we need to create views for showing login form also showing dashboard. So now create the first view name login.php and put the below HTML in this file we create login and logout code in codeigniter.


<html>
   <head>
      <link rel="stylesheet" href="css/style.css">
      <link href="https://fonts.googleapis.com/css?family=Ubuntu" rel="stylesheet">
      <meta name="viewport" content="width=device-width, initial-scale=1" />
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
      <title>login and logout code in codeigniter</title>
   </head>
   <style type="text/css">
      body {
      background-color: #F3EBF6;
      font-family: 'Ubuntu', sans-serif;
      }
      div.error {
      margin-bottom: 15px;
      margin-top: -6px;
      margin-left: 58px;
      color: red;
      }
      .main {
      background-color: #FFFFFF;
      width: 400px;
      height: 400px;
      margin: 7em auto;
      border-radius: 1.5em;
      box-shadow: 0px 11px 35px 2px rgba(0, 0, 0, 0.14);
      }
      .sign {
      padding-top: 40px;
      color: #8C55AA;
      font-family: 'Ubuntu', sans-serif;
      font-weight: bold;
      font-size: 23px;
      }
      .uninput {
      width: 76%;
      color: rgb(38, 50, 56);
      font-weight: 700;
      font-size: 14px;
      letter-spacing: 1px;
      background: rgba(136, 126, 126, 0.04);
      padding: 10px 20px;
      border: none;
      border-radius: 20px;
      outline: none;
      box-sizing: border-box;
      border: 2px solid rgba(0, 0, 0, 0.02);
      margin-bottom: 50px;
      margin-left: 46px;
      text-align: center;
      margin-bottom: 27px;
      font-family: 'Ubuntu', sans-serif;
      }
      form.form1 {
      padding-top: 40px;
      }
      .pass {
      width: 76%;
      color: rgb(38, 50, 56);
      font-weight: 700;
      font-size: 14px;
      letter-spacing: 1px;
      background: rgba(136, 126, 126, 0.04);
      padding: 10px 20px;
      border: none;
      border-radius: 20px;
      outline: none;
      box-sizing: border-box;
      border: 2px solid rgba(0, 0, 0, 0.02);
      margin-bottom: 50px;
      margin-left: 46px;
      text-align: center;
      margin-bottom: 27px;
      font-family: 'Ubuntu', sans-serif;
      }
      .uninput:focus, .pass:focus {
      border: 2px solid rgba(0, 0, 0, 0.18) !important;
      }
      .submit {
      cursor: pointer;
      border-radius: 5em;
      color: #fff;
      background: linear-gradient(to right, #9C27B0, #E040FB);
      border: 0;
      padding-left: 40px;
      padding-right: 40px;
      padding-bottom: 10px;
      padding-top: 10px;
      font-family: 'Ubuntu', sans-serif;
      margin-left: 35%;
      font-size: 13px;
      box-shadow: 0 0 20px 1px rgba(0, 0, 0, 0.04);
      }
      .forgot {
      text-shadow: 0px 0px 3px rgba(117, 117, 117, 0.12);
      color: #E1BEE7;
      padding-top: 15px;
      }
      button {
      text-shadow: 0px 0px 3px rgba(167, 167, 167, 0.12);
      color: #E1BEE7;
      text-decoration: none
      }
      @media (max-width: 600px) {
      .main {
      border-radius: 0px;
      }
   </style>
   <body>
      <div class="main">
         <p class="sign" align="center">Sign in</p>
         <form action="<?php echo base_url('auth/post_login') ?>" method="post" accept-charset="utf-8">
            <input class="uninput " type="text" align="center" name="email" placeholder="email">
            <?php echo form_error('email'); ?> 
            <input class="pass" type="password" align="center" name="password" placeholder="Password">
            <?php echo form_error('password'); ?> 
            <button type="submit" align="center" class="submit">Sign in</button>
         </form>
      </div>
   </body>
</html>


Now we need to create dashboard.php, After login user can redirect this page. So create dashboard.php and put the below HTML here.

<!DOCTYPE html>
<html lang="en">
   <head>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
   </head>
   <body>
      <div class="container">
         <div class="row">
            <div class="col-md-6">
               <div class="row">
                  <div class="col-md-12">
                     <h3>Login Successful <?=$this->session->userdata('first_name')?>  <?=$this->session->userdata('last_name')?></h3>
                     <a href="<?= base_url();?>auth/logout">Logout</a>                                               
                  </div>
               </div>
            </div>
         </div>
      </div>
   </body>
</html>

I hope it can help you...