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:
- Untuk membuat fitur authentication prinsipnya hanya melakukan pengecekan ke database apakah username dan password yang diinputkan ada di dalam database atau tidak.
- Untuk menyimpan session kita bisa menggunakan library session yang sudah disediakan oleh Codeigniter.
- 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
Posting Komentar