Belajar Codeigniter #Part 7: Login and Session

Logo Codeigniter, sumber cangkalinfo.blogspot.com


Assalamu alaikum warohmatullahi wabarokatuh.

Login and Session – sebuah website tentu memerlukan fitur keamanan untuk memberi batasan kepada user agar tidak mengakses informasi yang sensitive kecuali memang orang yang diberi hak akses, fitur login adalah yang paling popular untuk pengecekan user authentication.

Pada tutorial kali ini kita akan membahas mengenai login dan menerapkan session pada framework Codeigniter.

Session sendiri adalah fitur untuk menyimpan informasi sementara di sisi server.

Jika kalian nyasar di tutorial ini ada baiknya kalian baca juga tutorial sebelumnya yaitu di Belajar Codeigniter #Part 6: Upload Foto tapi rasanya kurang afdol kalo nggak baca dari awal yaitu Belajar Codeigniter #Part 1: InstalasiCodeigniter , karena artikel ini merupakan seri tutorial.

Di bawah ini garis besar isi artikel ini, simak terus gan:

1.    Membuat Model

2.    Membuat Controller

3.    Membuat Form Login

4.    Kesimpulan

 

1.    Membuat Model

 

Untuk authentication login kita menggunakan data dari tabel users, selain kita membuat model ada beberapa hal yang perlu dilakukan terlebih dahulu, yaitu:

 

a.    Menambahkan Data Dummy

Kita menambahkan data dummy terlebih dahulu ke dalam tabel users, tambahkan username ‘admin’ dan password ‘admin’ seperti gambar berikut:

 

b.    Ubah Default Route

Buka file application/config/routes.php lalu ubah kodenya menjadi seperti berikut:

 

1
2
3
$route['default_controller'] = 'auth';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

 

Penjelasan:

-      Kita menjadikan default routes kita menjadi auth, artinya ketika website kita diakses maka pertama kali akan langsung diarahkan ke halaman login yang akan kita buat nanti.

c.     Mengaktifkan Library Session

Untuk mengaktifkan library session kalian buka dulu file application/config/autoload.php kemudian carilah baris kode berikut dan ubahlah seperti berikut:

 

1
$autoload['libraries'] = array('database', 'email', 'session','form_validation');

 

d.    Buat Model

Untuk urusan query pertama-tama buatlah file Auth_model.php terlebuh dahulu di application/models/Auth_model.php kemudian ketikkan kode seperti berikut:

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php 
/**
 * 
 */
class Auth_model extends CI_Model
{
	
	function __construct()
	{
		parent::__construct();
		$this->load->database();
	}

	function login($data)
	{
		$this->db->select('*');
		$this->db->from('users');
		$this->db->where(array('username' => $data['username'],
								'password' => $data['password']
							)
						);
		
		$query = $this->db->get();
		return $query->result_array();
	}
}

 ?>

 

Penjelasan:

-      Kita membuat function login dengan parameter $data yang akan menampung data username dan password dari controllers.

-      Kemudian kita melakukan query select * from users where username = username and password = password dengan mengikuti kaidah query builder dari codeigniter, kemudian kita memberikan return berupa data user dengan bentuk array.

 

2.    Membuat Controller

 

Untuk menangani request dari user kita perlu membuat controller, terutama di sini untuk menangani login.

Langkah pertama buat file Auth.php di application/controllers/Auth.php kemudian ikuti langkah berikut:

 

a.    Membuat Function login()

Ketikkan blok kode function login seperti di bawah ini:

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
function login()
	{
		$data = array('username' => $this->input->post('username'),
						'password' => $this->input->post('password')
					);
		$request = $this->am->login($data);
		if ($request)
		{
			// var_dump();exit();
			$this->session->set_userdata('username',$request[0]['username']);

			redirect('admin');
		}
		else
		{
			redirect('auth');
		}
	}

 

Penjelasan:

-      Pertama kita membuat function index terlebih dahulu untuk menampilkan form login, tidak banyak saya jelaskan karena fungsi index ini hampir sama dengan penjelasan di tutorial sebelumnya hehe.

-      Kemudian kita membuat function login

-      Kemudian kita membuat variable array $data dengan index username dan password untuk menampung inputan dari form

-      Setelah itu kita melakukan request ke function login() di model dengan mengirimkan variable $data sebagai parameter

-      Kemudian kita lakukan pengecekan, jika request berhasil maka kita menyimpan data user yaitu username ke dalam session dengan menggunakan library session yang sudah disediakan oleh Codeigniter.

-      Setelah itu kita redirect ke controller admin.

-      Tapi jika request bernilai false maka akan dikembalikan ke halaman login.

 

b.    Membuat Function logout()

 

Jika kita bisa login maka harus bisa logout, secara garis besar function logout ini hanya untuk mendestroy session yang aktif, adapun kodenya adalah seperti berikut:

 

1
2
3
4
5
function logout()
	{
		$this->session->unset_userdata('username');
		redirect('auth');
	}

 

Penjelasan:

-      Di function logout() ini kita hanya mendestroy session yang aktif saat ini, yaitu username dengan menggunakan fungsi unset_userdata bawaan dari codeigniter

-      Langkah selanjutnya adalah mengarahkan user ke halaman login kembali.

 

c.     Melindungi Halaman Admin dengan Session

Untuk melindungi halaman admin dengan session maka modifikasi function index pada controllers/Admin.php, adapun kodenya seperti berikut:

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function index()
	{
		$data = array( 'title' => 'Daftar Siswa',
					'isi' => 'siswa/list');

		$this->data['siswa'] = $this->allSiswa();

		if (!$this->session->userdata('username'))
		{
			redirect('auth');
		}
		else
		{
			$this->load->view('layout/wrapper', $data, $this->data);
		}
	}

 

Penjelasan:

-      Saya hanya menambahkan kondisi if else, jika session username tidak ada maka user tidak bisa menampilkan halaman admin dan akan diredirect ke halaman login

-      Jika ada session yang aktif maka diarahkan ke halaman admin.

-      Fungsinya adalah, user yang belum melakukan login tidak bisa mengakses halaman admin walaupun user menembak langsung ke url halaman admin.

 

3.    Membuat Form Login

 

Supaya user yang akan melakukan login bisa menginputkan username dan password maka kita harus menyediakan form login. Selain menyediakan form login ada beberapa perubahan yang harus kita lakukan antara lain:

 

a.    Update Header

Nantinya kita akan membuat header kita menampilkan status user yang login dan menambahkan tombol logout, buka application/views/layout/header.php kemudian  tuliskan kodenya seperti berikut:

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">

  <header class="main-header">
    <!-- Logo -->
    <a href="index2.html" class="logo">
      <!-- mini logo for sidebar mini 50x50 pixels -->
      <span class="logo-mini"><b>A</b>LT</span>
      <!-- logo for regular state and mobile devices -->
      <span class="logo-lg"><b>Admin</b>LTE</span>
    </a>
    <!-- Header Navbar: style can be found in header.less -->
    <nav class="navbar navbar-static-top">
      <!-- Sidebar toggle button-->
      <a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
        <span class="sr-only">Toggle navigation</span>
      </a>

      <div class="navbar-custom-menu">
        <ul class="nav navbar-nav">
          <li class="dropdown user user-menu">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <span class="hidden-xs"><?php echo $this->session->userdata('username') ?></span>
            </a>
            <ul class="dropdown-menu">
              <!-- User image -->
              <li class="user-header">
                <p>
                  <?php echo $this->session->userdata('username') ?> - Web Developer
                  <small>Member since Nov. 2012</small>
                </p>
              </li>
              <li class="user-footer">
                <div class="pull-left">
                  <a href="#" class="btn btn-default btn-flat">Profile</a>
                </div>
                <div class="pull-right">
                  <a href="<?php echo base_url('index.php/auth/logout') ?>" class="btn btn-default btn-flat">Log out</a>
                </div>
              </li>
            </ul>
          </li>
        </ul>
      </div>
    </nav>
  </header>

 

Penjelasan:

-      Di navbar kita akan menampilkan username yang sudah kita simpan dalam session tadi sebagai status siapa yang login saat ini dengan cara menggunakan function userdata() dari library session.

-      Kemudian pada button logout href nya kita arahkan ke index.php/auth/logout untuk mendestroy session.

-      Adapun hasilnya adalah seperti ini:




b.    Membuat Form Login

Untuk form login kita pertama kali buatlah file auth.php di application/views/auth.php kemudian ketikkan kode di bawah ini:

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php $this->load->view('layout/head.php') ?>
<body class="hold-transition skin-blue layout-top-nav">
 <div class="content-wrapper">
  <header class="main-header">
    <nav class="navbar navbar-static-top">
      <div class="container">
        <div class="navbar-header">
          <a href="#!" class="navbar-brand"><b>BELAJAR CODEIGNITER</b></a>
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
            <i class="fa fa-bars"></i>
          </button>
        </div>
      </div>
      <!-- /.container-fluid -->
    </nav>
  </header>
  <br><br><br><br>

  <div class="container">
    <div class="col-md-3"></div>
    <div class="col-md-6">
      <!-- Horizontal Form -->
      <div class="box box-info">
        <div class="box-header with-border">
          <h3 class="box-title">Login Pengguna</h3>
        </div>
        <!-- /.box-header -->
        <!-- form start -->
        <form class="form-horizontal" method="post" action="<?php echo base_url('index.php/auth/login') ?>">
          <div class="box-body">
            <div class="form-group">
              <label for="inputEmail3" class="col-sm-2 control-label">Username</label>

              <div class="col-sm-10">
                <input type="text" name="username" class="form-control" id="inputEmail3" placeholder="Username">
              </div>
            </div>
            <div class="form-group">
              <label for="inputPassword3" class="col-sm-2 control-label">Password</label>

              <div class="col-sm-10">
                <input type="password" name="password" class="form-control" id="inputPassword3" placeholder="Password">
              </div>
            </div>
            <!-- /.box-body -->
            <div class="box-footer">
              <button type="submit" class="btn btn-info pull-right">Login</button>
            </div>
            <!-- /.box-footer -->
          </form>
        </div>
      </div>
      <div class="col-md-3"></div>
    </div>
  </div>
  <footer>
    <br>
    <div class="container">
      <p>Belajar Codeigniter - AJAX - Bootstrap - MySQL</p>
    </div>
  </footer>
</body>
<?php $this->load->view('layout/js.php') ?>

 

Penjelasan:

-      Kita tetap menggunakan head yang sudah kita buat sebelumnya karena masih menggunakan file css yang sama, panggil dengan meload view di layout/head.php di paling atas dokumen.

-      Kemudian buat form dengan name masing-masing username dan password, menyesuaikan di controller

-      Arahkan form login ke index.php/auth/login

-      Kemudian paling bawah dokumen panggil layout/js.php karena kita akan menggunakan file javascript yang ada di dalam file js.php

-      Adapun hasilnya seperti berikut ini:


4.    Kesimpulan

Kesimpulan dari tutorial kali ini adalah:

  1. Untuk membuat fitur authentication prinsipnya hanya melakukan pengecekan ke database apakah username dan password yang diinputkan ada di dalam database atau tidak.
  2. Untuk menyimpan session kita bisa menggunakan library session yang sudah disediakan oleh Codeigniter.
  3. Supaya user bisa melakukan authentication maka kita harus menyediakan form untuk menginputkan username dan password.

Sepertinya saya cukupkan untuk seri tutorial Belajar Codeigniter ini sampai di sini, saya harap tutorial ini bisa memberikan manfaat bagi kalian.

 

Terimakasih sudah membaca, untuk mendapatkan info terbaru mengenai artikel yang saya posting kalian bisa klik ‘Langganan’ di pojok kiri atas.

Wassalamaualaikum wrwb.

 

Kalian bisa mengunduh kode lengkapnya di link di bawah ini:

FullSource Code Belajar Codeigniter


Komentar