Login Session dengan Code Igniter(CI)

Ilmu Informatika : Login Session dengan Code Igniter(CI). Berikut ini adalah penggunaan login yang benar dengan menggunakan session. Langkah-langkahnya adalah sebagai berikut:

Pertama-tama kita harus membuat databasenya terlebih dahulu.
Berikut ini merupakan isi dari tabel "login" dengan nama database "coba_login".


Yang kedua kita cek pada folder "application/config/autoload.php" awalnya.

$autoload['libraries'] = array();
$autoload['helper'] = array();
kita edit menjadi

$autoload['libraries'] = array('database','session'); 
$autoload['helper'] = array('url');

Yang ketiga kita cek pada folder "application/config/config.php" awalnya

$config['encryption_key'] = '';
kita rubah menjadi

$config['encryption_key'] = 'REALLY_LONG_NUMBER';

Yang keempat kita cek pada folder "application/config/database.php awalnya seperti ini

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
kita edit dan isikan seperti ini

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root'; //defaultnya
$db['default']['password'] = ''; //kosongi
$db['default']['database'] = 'coba_login'; //nama databasenya


Saatnya merancang pada MVC atau Models, View dan Controller
1. Buat login.php pada folder controllers

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class Login extends CI_Controller {
        function __construct() {
            parent::__construct();
        }
        function index() {
            if($this->session->userdata('logged_in')) {
                redirect('home', 'refresh');
            }
            else {
                $this->load->helper(array('form'));
                $this->load->view('login_view');
            }
        }
    }
    ?>


2. Buat form login pada login_view.php di folder views

<html>
    <body>
    <?php echo validation_errors(); ?>
    <?php echo form_open('verifylogin'); ?> <!--akan diteruskan pad verifylogin pada controller-->
    
    <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="password" name="password"/>
    </ br>
    <input type="submit" value="Login"/>
    </form>
    </body>
    </html>


3. Buat verifylogin.php pada folder controllers

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class VerifyLogin extends CI_Controller {
        function __construct() {
            parent::__construct();
            $this->load->model('user','',TRUE); //nantinya diteruskan di user.php pada folder models
        }
    function index() {
        //Aksi untuk melakukan validasi
        $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) {
            //Jika validasi gagal user akan diarahkan kembali ke halaman login
            $this->load->view('login_view');
        }
        else {
            //Jika berhasil user akan di arahkan ke private area
            redirect('home', 'refresh');
        }
    }

    function check_database($password) {
        //validasi field terhadap database
        $username = $this->input->post('username');
        //query ke database
        $result = $this->user->login($username, $password);
    
        if($result) {
            $sess_array = array();
            foreach($result as $row) {
                $sess_array = array(
                'username' => $row->username,
                'password' => $row->password
                );
            $this->session->set_userdata('logged_in', $sess_array);
            }
            return TRUE;
       }
       else {
            $this->form_validation->set_message('check_database', 'Invalid username or password');
            return false;
       }
    }
    }
    ?>


4. Kita buat user.php pada folder models

<?php 
Class User extends CI_Model {
        function login($username, $password) {
            $this -> db -> select('username, password'); 
            $this -> db -> from('login'); //nama tabel pada database
            $this -> db -> where('username', $username);
            $this -> db -> where('password', $password);
            $this -> db -> limit(1); //menandakan data ditemukan atau sama dengan satu
            $query = $this -> db -> get();

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


5. Buat home.php pada controller

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    session_start(); //Memanggil fungsi session Codeigniter
    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 {
                //Jika tidak ada session di kembalikan ke halaman login
                redirect('login', 'refresh');
            }
        }
    
        function logout() {
            $this->session->unset_userdata('logged_in');
            session_destroy();
            redirect('home', 'refresh');
        } 
        }
    ?>


6. Kita buat halaman tujuan dengan nama home_view.php pada folder view. Ini merupakan halaman private yang tidak bisa di buka tanpa login. Untuk mengecek, coba buka "http://localhost/irul/index.php/home" maka akan secara otomatis diarahkan ke form login.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>admin</title>
        </head>
        <body>
            <h1>Home</h1>
            <h2>Selamat datang <?php echo $username; ?>!</h2>
            <a href="home/logout">Logout</a>
        </body>
    </html>


Demikian adalah tampilan sederhana dari proses login, selanjutnya tinggal pengembangan dari anda. Semangat :)

Nb : Ada yg bertanya. " bang copas dari blog ... Ya? Soalnya kodenya sama."
Sengaja komentarnya tidak saya publish karena terdapat link di dalamnya saya mohon maaf.
Konfirmasi, saya lupa mengikuti tutorial dari mana, karena sudah lama sekali karena sudah 1 tahun lebih. Yang jelas nih ya, saya gak asal comot aja, saya mencoba mempraktikan dulu dan gak sama persis melainkan dengan mengembangkan yang sudah ada. Setelah berhasil baru saya buat postingan ini, itupun kode2 yang saya bagikan berasa dari notepad saya.
Mohon maaf dan terimakasih...
Demikian artikel mengenai Login Session dengan Code Igniter(CI). Semoga bermanfaat untuk sobat semua.
Nikmati Jasa & Layanan yang ada di www.isrul.com, diantaranya:
1. Jasa Pembuatan dan Verifikasi Akun Paypal dengan VCC (Valid 2 atau 3 Tahun)
2. Jual Akun Adsense Non Hosted Indonesia (0899-5832-699)
3. Penulis Tamu di Isrul.com

19 Responses to "Login Session dengan Code Igniter(CI)"

  1. maaf mas saya mau tanya bagaimana misalkan mau edit data di hal home_view.php itu y ?

    ReplyDelete
    Replies
    1. maksutnya? ya tinggal edit mas.
      Masalahnya dimana?

      Delete
  2. makasih mas khoirul, berhasil di saya. cuman ada sedikit error, pada session_start() di home.php aku non aktifkan.

    ReplyDelete
  3. Om isrul. Sy sudah buat sm persis. Tp kenapa invalid login username and password ya.
    Mksh om jawabanbnya..

    ReplyDelete
    Replies
    1. Untuk databasenya apakah sudah dibuat?

      Delete
    2. Sudah om,
      sudah sy buat mirip dengan yang diatas,
      tpi hasilnya invalid username and pasword terus om, jadi bingung om...

      Delete
    3. Database lho mas. Dsini saya egak menampilkan databasenya

      Delete
    4. @hendri... mngkn di tabel login nya belum di isi nama username dan password .. ya jelas bakalan invalid trus karena kan salah yg dimasukkan username dan password nya...

      Delete
  4. malem mas khoirul ..
    saat di panggil muncul peringatan kya gini 'Unable to load the requested file: helpers/from_helper.php' kira" ini masalahnya knp ?

    ReplyDelete
    Replies
    1. cek pada
      $autoload['helper'] = array('url', 'form');

      apakah sudah di tambahkan autoload helper untuk formnya,semoga membantu

      Delete
  5. mas Ir tolong donk knp muncul pesan Unable to load the requested file: helpers/from_helper.php ,, kira" kenapa ya , padahal saya udah ikutin semua perintah yang mas tulis di atas ?

    ReplyDelete
  6. wah keren blognya, thanks mas bro... kodingannya berhasil saya coba....
    lumayan ribet jg ya belajar CI pdhal cuma mau buat form login dan halaman home yg sederhana saja tp kodingannya banyak bgt hehehe....

    ReplyDelete
    Replies
    1. Emang salah satu kekurangan menggunakan framework rada ribet gan karena satu sama lain harus nyambung. Namun saat pengoprekan atau pengembangan akan lebih mudah meskipun dikembangkan oleh orang lain.

      Delete
  7. unset_userdata('logged_in');
    ini didapat dari mana ya gan?

    ReplyDelete
  8. Mau nnya dong mz,, itu yg di login_view,,, validation_errors() dapet dari mana ya

    ReplyDelete
  9. Pada CI 3.0.4 teknik seperti ini if($this->session->userdata('logged_in')){ /* tindakan jika ada sesssion*/ }else{ /*jika tidak ada session*/ } untuk mengecek ada tidaknya session tidak bisa digunakan lagi (terjadi error). Ada teknik alternatifnya gak?

    ReplyDelete

Jika anda bertanya, jangan lupa mencentang "Notify Me" di bagian kanan bawah, agar mendapat pemberitahuan jika pertanyaan anda telah kami jawab.
Terimakasih telah menyempatkan waktu berkomentar...