Tutorial Codeigniter Part 8 – Membuat Modul Login Menggunakan Session

codeigniter-kcdev
Advertisements

Aplikasi yang digunakan oleh instansi besar maupun organisasi profesional pastinya memiliki banyak modul dan fitur. Modul dan fitur ini biasanya bersifat private atau hanya bisa diakses oleh user tertentu saja. Di bahasa pemrograman PHP (dibaca Pi Eitch Pi bukan Pe Ha Pe) kita menggunakan session untuk menyimpan data user yang sedang login seperti siapa username nya, apa level atau hak akses nya, dsb. Tutorial kali ini akan membahas mengenai cara membuat modul login menggunakan session.

Sebagai pengingat kembali, pada tutorial sebelumnya kita telah mempelajari bagaimana cara menyatukan dua insan yang saling menyayangi mengintegrasikan framework css pada project codeigniter kita. Bagi yang belum memahami silahkan dibaca kembali dan sebarkan.

1. Konfigurasi Load Library Otomatis

Agar memudahkan kita dalam membuat modul login, sebaiknya kita memanggil beberapa library codeigniter secara otomatis. Hal ini juga mengurangi jumlah baris kode yang akan kita ketik sehingga meminimalkan ukuran controller kita. Mari kita buka file autoload.php pada folder application/config dan memanggil library secara otomatis yaitu:

  • database, untuk menggunakan library database codeigniter.
  • session, seperti namanya untuk membantu kita menyimpan dan memanggil data di dalam variable session.
  • form_validation, untuk membantu kita memvalidasi inputan user.

2. Membuat Tabel Users Pada Database

Selanjutnya mari kita kita membuat tabel users pada database dimana tabel ini akan berisi data akun yang bisa digunakan untuk login ke dalam aplikasi kita nantinya.

Di dalam tabel users ada enam kolom yang masing-masing berfungsi untuk:

  • id, field ini akan menampung kode unique dari setiap user.
  • username, akan berisi username yang bersifat unique.
  • password, seperti namanya akan berisi password user yang telah di hashing.
  • level, memiliki tipe data enum artinya field ini hanya akan berisi 2 nilai saja yaitu ‘administrator’ atau ‘alumni’
  • active, sama seperti di atas memiliki tipe data enum jika bernilai 1 berarti active jika bernilai 0 berarti inactive dan tidak bisa login.
  • last_login, akan berisi waktu login terakhir dari user.

3. Membuat Core Controller

Tugas kita berikutnya adalah membuat core controller. Fungsi utama core controller adalah mencegah penulisan kode yang berulang-ulang di sebuah controller. Function atau method yang akan kita buat adalah function untuk mengecek apakah user sudah login atau belum. Contohnya ketika user mengakses sebuah controller, maka kita membutuhkan function cekLogin() di controller tersebut. Tentu kita tidak mau jika function cekLogin() ini kita tulis berulang-ulang pada controller lain padahal fungsi dan kodenya sama saja.

Membuat Modul Login Menggunakan Session
Bad Practice – Tidak Menggunakan Core Controller
Membuat Modul Login Menggunakan Session
Best Practice – Menggunakan Core Controller

Seperti yang bisa kita lihat pada diagram di atas, jika kita menggunakan core controller maka kita hanya cukup menulis function cekLogin() pada MY_Controller saja sehingga semua controller lain yang menggunakan atau meng-extends MY_Controller akan bisa menggunakan function cekLogin() juga.

Buat sebuah file baru bernama MY_Controller.php di dalam folder application/core. File ini berisi kode seperti berikut.

Kemudian update controller Dashboard untuk meng-extends MY_Controller dan tambahkan function __construct(). Function construct ini adalah method yang pertama kali dijalankan saat sebuah kelas dipanggil atau digunakan. Bisa kita lihat di dalam function construct ini kita juga memanggil $this->cekLogin(), dimana $this berarti class Dashboard itu sendiri dan karena kita sudah meng-extends core controller maka si class Dashboard ini bisa menggunakan semua function yang berada di dalam MY_Controller.

4. Membuat Controller Auth

Berikutnya kita akan membuat sebuah controller baru yang kita beri nama Auth. Di controller auth inilah kita akan membuat logic untuk melakukan login, logout, cek akun dan memanggil halaman login. Jadi langsung saja kita buat file baru Auth.php di dalam folder application/controllers.

5. Membuat Model Users

Advertisements

Perlu diperhatikan bahwa setiap kita membuat model pada codeigniter, ada baiknya nama model nya kita samakan dengan nama table yang ada di dalam database kita. Ini dilakukan agar kita bisa dengan mudah mengetahui tugas atau fungsi model hanya dengan melihat namanya saja. Pada folder application/models mari membuat file baru dengan nama Model_users.php dan berisi kode berikut.

6. Membuat View Atau Halaman Login

Halaman login ini akan kita beri nama login.php dan akan berdomisili di dalam folder application/views/auth. User akan diarahkan ke halaman ini jika belum melakukan login.

7. Mengupdate Template Sidebar

Tugas kita yang terakhir hahaha adalah mengupdate sidebar.php yang berada di dalam folder application/views/layout/sidebar.php. Disini kita hanya akan menambahkan sebuah menu logout yang akan mengarahkan kita ke controller auth/logout dan menghapus semua session user jika di klik.

8. Testing

Saatnya melakukan testing. Pada saat kita mengakses http://localhost/codeigniter kita akan langsung diarahkan ke halaman login.

Membuat Modul Login Menggunakan Session

Saat kita memasukkan username atau password yang salah, maka akan muncul error message pada login box.Membuat Modul Login Menggunakan Session

Jika kita memasukkan username dan password yang benar, maka kita akan diarahkan ke controller dashboard. Di menu sebelah kiri kita juga bisa melihat menu logout yang sudah kita tambahkan tadi. BTW username defaultnya adalah administrator dengan password kcdev.

Membuat Modul Login Menggunakan Session

Advertisements

Untuk tombol logout, saat di klik maka session kita akan dihapus dan kita diarahkan ke halaman http://localhost/codeigniter/auth/login.

Oke sekian dulu, sangat banyak bagian yang sama-sama kita kerjakan pada tutorial kali ini mudah-mudahan bermanfaat untuk adiks.

Hai orang-orang beriman apabila dikatakan kepadamu: “Berlapang-lapanglah dalam majlis”, maka lapangkanlah niscaya Allah akan memberi kelapangan untukmu. Dan apabila dikatakan: “Berdirilah kamu”, maka berdirilah, niscaya Allah akan meninggikan orang-orang yang beriman di antaramu dan orang-orang yang diberi ilmu pengetahuan beberapa derajat. Dan Allah Maha Mengetahui apa yang kamu kerjakan (QS Al-Mujadilah:11).

Tetap Semangat,

kaceManaf

Author: kaceManaf

Founders of kcdev.id, freelance full stack web developer and also a web-tech wanderer. Passionate about code readability and simplicity. https://www.linkedin.com/in/nafplann/

31 Replies to “Tutorial Codeigniter Part 8 – Membuat Modul Login Menggunakan Session

  1. mau tanya, saya bikin login juga pake session tapi kok gak bisa jalan sessionnya di controller lain.

    misal mau nampilin username (pake session saat login) di controller beranda, tapi gak bisa tampil.

    padahal sudah di set session library di file autoload.php, juga sudah di set load library session di bagian function controller beranda.

    kira-kira ada solusi gak ya?

    1. hai banghaji.. coba di cek dulu semua session yang tersimpan, bisa dengan cara die(print_r($this->session->userdata()));

      kalau hasilnya kosong berarti data session nya belum berhasil tersimpan

  2. di tutor kan cek login dan cek aktif nya ga dipisah. gimana caranya supaya cek aktif dan loginnya terpisah. jadi error yg muncul klo akun belum aktif walaupun username sama password benar “maaf akun belum aktif”

    1. hai rian.. untuk kasus yang dimaksud, bisa ditambahkan kondisi ‘if’ sebelum kita memasang data user pada session. Pada file Auth.php line ke 34.
      kurang lebih seperti ini:

      if (!$query->active) {
      // Mengatur pesan error validasi data
      $this->form_validation->set_message(‘cekAkun’, ‘Maaf akun belum aktif!’);
      return false;
      }

      dan jangan lupa pada Model_users.php pada line ke 10, menghapus kode ini:
      $this->db->where(‘active’, ‘1’);

    1. kok data last login nya ga sesuai dengan jam / wktu indonesia ya min ? tp klo tanggal bulan tahunnya aman, mohon bantuanya min

  3. kok data last login nya ga sesuai dengan jam / wktu indonesia ya min ? tp klo tanggal bulan tahunnya aman, mohon bantuanya min

  4. Gan…
    kenapa kok muncul Object not found..??
    Padahal udah sama banget kyak di tutorialnya…

    Mohon pencerahannya Min…

Leave a Reply

Your email address will not be published. Required fields are marked *