Monday, March 24, 2014

Cara Membuat Session Login Sederhana Di Codeigniter 2.1.4

Cara Membuat Session Login Sederhana Di Codeigniter 2.1.4
    Sekarang saya akan membahas seputr membuat session login sederhana dengan menggunakan framework codeigniter 2.1.4, mari langsung menuju pokok bahsasan.

#Nama Database arow
  • Buat tabel dengan nama users dan dengan field ,dan setelah buat tabel jagan lupa isi terlih dahulu tabelnya:
    • id -> integer (11) . 
    • username -> varchar (25) . 
    • password -> varchar (200) .
    •  Atur file autoload.php

    $autoload['libraries'] = array('database', 'session');
    $autoload['helper'] = array('url');
    •  Atur file config.php

    $http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '') . '://';
    $newurl = str_replace("index.php","", $_SERVER['SCRIPT_NAME']);
    $config['base_url']    = "$http" . $_SERVER['SERVER_NAME'] . "" . $newurl;
    file di atas letakan di bagian bawah sintak $config['base_url']    = ''; dan kasih komen double slash (//) di samping sintak $config['base_url']    = ''; ,contoh komen-nya seperti ini //$config['base_url']    = '';
    • Atur file database.php
    $db['default']['hostname'] = 'localhost';
    $db['default']['username'] = 'root';
    $db['default']['password'] = '';
    $db['default']['database'] = 'arow';
    $db['default']['dbdriver'] = 'mysql';
    • File routers.php tidak usah di atur.
    • Untuk file controllers kita memakai file welcome yang ada di folder controllers langsung ,buka file welcome.php lalu isi sintak di dalamnya delete semua, kemudian paste sintak ini :

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    session_start(); //Memanggil fungsi session Codeigniter

    class Welcome 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('welcome_home', $data);
       }
       else
       {
         //Jika tidak ada session di kembalikan ke halaman login
         redirect('welcome/login_index', 'refresh');
       }
     }

     function login_index()
     {
       if($this->session->userdata('logged_in'))
       {
         redirect('welcome', 'refresh');
       }
       else
       {
          $this->load->helper(array('form'));
          $this->load->view('welcome_message');
       }
     }

     function logout()
     {
       $this->session->unset_userdata('logged_in');
       session_destroy();
       redirect('welcome/login_index', 'refresh');
     }

    }

    ?>
    • Buat file baru di controllers lalu simpan dengan nama 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()
     {
       //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('welcome_message');
       }
       else
       {
         //Jika berhasil user akan di arahkan ke private area
         redirect('welcome', '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(
             '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;
       }
     }
    }

    ?>
    • Buat file baru dengan nama user.php lalu simpan di folder models

    <?php

    Class User extends CI_Model
    {

     function login($username, $password)
     {
       $this -> db -> select('id, username, password');
       $this -> db -> from('users');
       $this -> db -> where('username', $username);
       $this -> db -> where('password', MD5($password));
       $this -> db -> limit(1);
       $query = $this -> db -> get();

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

    ?>
    • Untuk views kita memakai file views default di codeigniter, buka file welcome_message.php lalu sintak didalamnya di delete dan paste sintak di bawah ini :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

     <head>

       <title>Simple Login menggunakan CodeIgniter</title>

     </head>

     <body>

       <h1>Simple Login menggunakan 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"/>

         <label for="password">Password:</label>

         <input type="password" size="20" id="passowrd" name="password"/>

         <input type="submit" value="Login"/>

       </form>

     </body>

    </html>
    • Buat file baru di folder views dengan nama welcome_home.php

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

     <head>

       <title>Simple Login menggunakan CodeIgniter - Private Area</title>

     </head>

     <body>

       <h1>Home</h1>

       <h2>Selamat datang<?php echo $username; ?>!</h2>

       <a href="<?php echo site_url('welcome/logout');?>">Logout</a>

     </body>

    </html>

    untuk sintak lengkap bisa download disini.

    ~TerimaKasih~

    Saya hanya seorang "newbie" yang baru bisa ngoding lohor kemarin.

    11 komentar

    saya minta crud dengan CI ya mas gan, tapi tutorialnya lengkap, saya tunggu y mas gan, saya akan kembali untuk mengecek :)

    kok bs muncul tampilan login tapi validasinya gagal ya.
    misal username ma password salah ataupun benar nanti masuknya malah problem loading page :-(

    makasih banget kang buat tutorialnya...

    kalau buat bikin register gmna gan :D

    gan lewat Fb aja komunikasi biar lebih enak,,tau mau disini aja?

    terserah,,,
    kalau mau lewat FB agan klik aja icon fb yang ada di menu sidebar sebelah kanan atas

    Waktu saya pakai fungsi login ini kok CSS saya gak kepanggil ya gan? Tampilannya jadi hitam-putih semua, padahal saya sudah pakai bottstrap untuk style nya...

    gan untuk form validation nya tidak bekerja itu bagaimana gan?

    agan praktiknya pakai CI berapa ?

    pakai ci versi berapa ? lalu php versi berapa ?


    EmoticonEmoticon