Membuat Fitur Login Dan Logout Dengan Codeigniter

Membuat fitur login dengan codeigniter tidak cukup sulit, karena semua library sudah tersedia jadi kita tinggal pakai saja.

Fitur login yang aman bisa dibuat dengan tambahan enkripsi pada database, seperti enkripsi password dengan md5. selain itu, validasi input data juga penting.

Fitur login yang akan kita buat support dengan password yang terenkripsi menggunakan md5, xss filtering, dan form validation. sehingga halaman login lebih secure.

Database

Databasenya seperti ini

Atau bisa lihat gambar tabel MYSQL di bawah ini

img

Karena password menggunakan md5, jadi input data password untuk login juga menggunakan md5.

insert data kedalam tabel melalui sql query pada DBMS Mysql

LIhat gambar di bawah

img

untuk konfigurasi database contohnya seperti ini

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => '',
	'database' => 'learn-ci',
	'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
);

Saya sudah pernah menulis tentang koneksi database MYSQL di codeigniter

Konfigurasi

Lakukan konfigurasi pada autoload.php. pada bagian

$autoload['libraries'] = array();

isi dengan library database, session, dan form validation. seperti ini

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

Karena kita memakai framework MVC, maka konsep pemrogramanya juga harus menggunakan konsep MVC. pada bagian autoload model (terletak paling bawah di autoload.php). isi dengan Model Auth seperti ini

$autoload['model'] = array('Model_auth');

Login Form

Saya menggunakan Bootstrap 5 untuk halaman login. sebelumnya kamu harus melakukan konfigurasi base_url terlebih dahulu.

source code lengkap tutorial ini akan saya taruh di bawah

pada bagian views (application/views), buat folder baru dengan nama login. lalu buat file baru dengan nama login.php, isi dengan kode berikut

Halaman login akan seperti ini

img

Pada bagian action form dan pemanggilan file bootstrap menggunakan base_url. bagian flashdata digunakan untuk menampilkan pesan jika gagal login

<?php echo $this->session->flashdata('pesan')?>

Controller Login

Buka folder application/controllers lalu buat file baru dengan nama Login.php isi dengan kode berikut

Penjelasanya simpelnya seperti ini. di bagian atas ada function konstruktor seperti ini

	public function __construct(){
		parent::__construct();
		if($this->session->userdata('status') == 'berhasil'){
			$this->session->set_flashdata('pesan',
			'<div class="alert alert-success" role="alert">
				Anda Berhasil Login
				</div>');
				redirect('admin');
		}
	}

itu akan berfungsi ketika kita sudah login kemudian mengakses halaman login. maka kita akan di arahkan langsung ke halaman admin, itu karena session sudah ada di browser kita.

kita memanggil data session yang ada di browser kita, jika tidak ada session maka status juga tidak ada atau kosong. jika ada session maka status akan terisi, ketika status terisi maka akan di alihkan ke admin.

pada bagian ini kita memanggil model auth

$auth = $this->Model_auth->cek_login();

Sudah saya jelaskan di atas, bahwa kita menggunakan konsep MVC. model akan kita gunakan untuk mengakses data login dari database.

Model Auth

Buka folder model di application/model. buat model baru dengan nama Model_auth.php. isi dengan kode berikut

Dari model di atas, kita membuat sebuah function yaitu cek_login. kalo kalian bertanya kok querynya begitu ? itu merupakan Query Builder Class dari codeigniter.

apa itu query builder ?

Dari query builder ini

$this->db->where('email',$email)
                        ->where('password',$password)
                        ->limit(1)
                        ->get('login');

Kalo di terjemahkan ke query sql sama saja dengan di bawah ini

SELECT `email`, `password` FROM `login`

Admin Page

Buat folder baru dengan nama admin di dalam folder views, lalu buat file dashboard.php di dalam folder admin. isi dengan kode berikut

Set flashdata pada halaman admin berfungsi untuk memberi pesan ketika anda sudah berhasil login. halaman Admin akan seperti ini

img

controller admin

Buat controller baru dengan nama Admin.php isi dengan kode berikut

di sini kita mulai memahami sistem session. perhatikan kode di bawah

 public function __construct(){
    parent::__construct();
    if($this->session->userdata('status') != 'berhasil'){
      $this->session->set_flashdata('pesan',
      '<div class="alert alert-danger" role="alert">
  Anda Belum Login
</div>');
        redirect('login');
    }
  }

kalo function konstruktor di bagian login berfungsi untuk langsung mengarahkan user ke halaman admin ketika session sudah ada. maka function konstruktor di bagian admin berfungsi sebaliknya.

Kalo user belum login maka akan di tendang ke halaman admin. konsepnya sama dengan function konstruktor login, hanya saja di sini simbol == di ganti dengan simbol != yang memiliki arti tidak sama dengan.

Maksud dari “tidak sama dengan” adalah tidak ada data yang sama atau data tersebut bisa saja kosong. karena datanya tidak ada maka anda tidak boleh masuk ke halaman admin.

untuk semua controller yang di akses melalui halaman admin, harus menggunakan function konstruktor tersebut. Jika anda tidak menggunakanya maka orang lain bisa membuka halaman tersebut tanpa melalui login.

contoh jika anda ingin membuat halaman baru yaitu tambah data yang di akses melalui halaman admin, maka harus menambahkan function konstruktor tersebut.

Logout

Buat file baru di folder controllers dengan nama Logout.php isi dengan kode di bawah

untuk logout menggunakan session destroy dan di arahkan langsung ke login.

untuk login menggunakan email dan password berikut.

email : mail@mail.com

password : haiadmin

Email dan password di ganti melalui database, untuk password tetap menggunakan md5. anda harus mengubah password menjadi md5 sebelum di input ke database.

Source code tutorial ini ada di github

buka github