Tutorial ini merupakan lanjutan dari tutorial sebelumnya:
- Tutorial Codeigniter #07: Membuat Halaman Admin
- Tutorial Codeigniter #08: Validasi Data
Pada tutorial ini, kita akan membuat fitur login untuk admin dengan library session bawaan dari Codeigniter.
Mari kita mulai..
Apa itu Session?
Dalam ilmu komputer atau jaringan komptuer, Session atau sesi merupakan informasi sementara yang disimpan saat dua buah pernagkat atau komputer saat saling berkomunikasi atau bertukar data. 1
Ingat kata kucinya: Informasi sementara
Jadi, ketika kita membuka website.. di sana bisa kita katakan sedang memulai sebuah sesi baru.
Lalu ketika kita menutup website, berarti sesi kita akhiri.
Data sementara yang disimpan di dalam session, bisa kita pakai untuk authentication atau login.
Data session bisa kita simpan di dalam client dan juga server.
Data session yang disimpan di dalam client, akan hilang saat browser atau tab ditutup. Sedangkan session yang disimpan di dalam server akan hilang saat server malakukan restart atau dihapus manual.
Nah, pada tutorial ini.. kita akan membuat login dengan menyimpan session di dalam server.
Mengenal Library Session
Sebenarnya PHP sendiri sudah menyediakan fitur session
yang bisa diakses dari variabel global $_SESSION
.
Namun, jika kita menggunakan session bawaan PHP, kita harus memanggil fungsi session_start[]
di awal eksekusi.
Nah, pada Codeigniter.. kita tidak perlu memanggil fungsi session_start[]
.
Kita cukup pakai library session
yang sudah disediakan oleh Codeigniter.
Cara Load Library Session
Silahkan buka file config/autoload.php
kemudian, pada bagian libraries
.. tambahkan session
seperti ini:
$autoload['libraries'] = array['database', 'session'];
Maka library session
sudah diload otomatis dan akan bisa kita gunakan dari aplikasi Codeigniter.
Cara Menggunakan Library Session
Kita bisa menggunakan library session dengan method seperti ini:
$this->session->nama_method_session[];
Ada beberapa method yang akan sering kita gunakan pada library session.
// flash data untuk data sementara
$this->session->set_flashdata['key'];
$this->session->flash_data['key'];
// user data untuk authenikasi
$this->session->set_userdata['key'];
$this->session->userdata['key'];
$this->session->has_userdata['key'];
// menghapus session
$this->session->unset_userdata['key'];
// hapus semua session
$this->session->sess_destory[];
Parameter key
kita perlukan untuk membuat dan mengakses isi session.
Penjelasan lebih detail tentang library ini, bisa juga kamu baca di dokumentasi library session.
Oke sekarang..
Biar lebih paham, langsung saja kita praktik.
1. Membuat Tabel User
Buatlah tabel baru bernama user
dengan struktur seperti ini:
Biar cepat, Kamu bisa gunakan query SQL berikut:
CREATE TABLE `user` [
`id` varchar[32] NOT NULL,
`name` varchar[32] NOT NULL,
`email` varchar[64] NOT NULL,
`username` varchar[64] NOT NULL,
`password` varchar[255] NOT NULL,
`avatar` varchar[32] DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`last_login` timestamp NULL DEFAULT NULL,
PRIMARY KEY [`id`]
] ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
Jalankan kode SQL ini pada database beritacoding
di menu SQL.
Setelah itu, tambahkan satu data dengan menjalankan kode SQL berikut.
INSERT INTO `user` [`id`, `name`, `email`, `username`, `password`, `avatar`, `created_at`, `last_login`] VALUES
['6118b2a943acc2.78631959', 'Administrator', '[email protected]', 'admin', '$2y$10$hRi1qju2KOeEPcBZ0wYfhu/PN5e9Wl.ddWeDTds8Uokad764X9D1a', NULL, '2021-08-15 06:22:33', '2021-08-19 15:55:42'];
Maka kita akan punya data baru dengan:
- email:
[email protected]
- username:
admin
- password:
admin
Password kita simpan dalam bentuk hash dengan fungsi password_hash[]
dan algoritma PASSWORD_DEFAULT
.
2. Membuat Model Auth
Buatlah model baru dengan nama Auth_model.php
dengan isi sebagai berikut:
Login
Masuk ke Dashboard
Email/Username*