Blog Nur Akhwan

Membuat Log Akses User dengan File di Codeigniter




Selamat malam pemiarsa. Kembali lagi saya menulis tentang pemrograman PHP lagi, di akhir bulan April 2014 ini. Kasusnya kali ini adalah membuat log akses user, baik dengan media penyimpanan log file .TXT ataupun dengan database. Coretan ini lahir, disebabkan karena pentingnya log user ini, bagi pengembangan sebuah aplikasi, dan disaat nanti ditemui error pada saat user menggunakan program aplikasi yang kita buat. Memang sih, biasanya webserver biasanya telah menyediakan log akses, namun sepanjang yang saya tahu hanya mencatat hal-hal umum, seperti error-error PHP, MySQL ataupun apachenya. Yang kita butuhkan adalah log akses user yang lebih spesifik atau sesuai dengan yang dibutuhkan oleh aplikasi kita. Bayangkan, misalkan aplikasi berbasis web kita disusupi oleh hekel, misalkan ia berhasil mengakses tabel daftar username dan password aplikasi kita, sehingga ia dapat leluasa membuat username baru beserta passwordnya. Kemudian ia login biasa melalui aplikasi yang kita buat. Hal tersebut pasti tidak tercatat di log user yang otomatis terbuat oleh error_log php. 

1. Langsung saja, tanpa cas cis cus, karena saya lebih suka cus cis cas, langkah pertama adalah copy master Codeigniter-nya ke folder webserver saya. Tempat saya di “www” (WAMP-lover, haha).
2. Buat folder baru sejajar folder “application”, dll, dengan nama “capedeh” (ini sebenarnya bebas, tapi agar sinkron dengan tutorial ini, disamain aja dah).
3. Selanjutnya, buat database “lab_”, kemudian buat sebuah tabel dengan nama “pengguna” untuk menyimpan data username dan password untuk login. Cepatnya, kopaskan skrip SQL berikut ini :


CREATE TABLE IF NOT EXISTS `pengguna` (  `id` int(5) NOT NULL AUTO_INCREMENT,  `nama` varchar(50) NOT NULL,  `username` varchar(15) NOT NULL,  `password` varchar(75) NOT NULL,  `tgl_aktif` datetime NOT NULL,  `status` enum('Y','N') NOT NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

-- Dumping data untuk tabel `pengguna`
INSERT INTO `pengguna` (`id`, `nama`, `username`, `password`, `tgl_aktif`, `status`) VALUES(1, 'Admin Pusat', 'admin', '21232f297a57a5a743894a0e4a801fc3', '2014-04-28 16:58:30', 'Y');
4. Ubah pengaturan di “application/config/config.php”, baris 17, menjadi  :
$config['base_url'] = 'http://localhost/lab/log_akses/';
5. Ubah pengaturan di “application/config/database.php”, baris 51 – 54, menjadi :
$db['default']['hostname'] = 'localhost';$db['default']['username'] = 'root';$db['default']['password'] = '';$db['default']['database'] = 'lab_';
6. Ubah pengaturan di “application/config/routes.php”, baris 41, menjadi : 
$route['default_controller'] = "apps";
7. Masuk ke folder “application/controllers/”, buat controller baru dengan nama “apps”, isinya sebagai berikut, saya copy pastekan ke pastebin aja, (apps.php) :



8. Buat view untuk login (login.php):


9. Buat view template halaman admin (aaa.php) :


10. Buat view halaman utama (d_amain.php) :

11. Buat view halaman daftar log akses (f_log_akses.php) :

12. Buat view untuk halaman ubah password (f_password.php) :


13. Terakhir, buat di folder "application/helper/" dengan nama file "my_helper.php" :


Sedikit penjelasan mengenai alur program yang saya tulis :
  1. untuk desain dalam tutorial ini adalah menggunakan framework CSS Twitter Bootstrap versi 2.3 (kalo gak salah, yang icon-iconnya udah pake font-awesome) dan file bootstrap.css-nya telah saya modifikasi.
  2. walaupun Codeigniter, merupakan framework berbasis MVC, namun dalam tutorial ini (dan juga semua program CI) saya hanya memakai VC-nya, M-nya tidak saya pakai, soalnya ribet, gan.. hahaha #myCode_myStyle :D :D jangan dibully, ya mastah..
  3. saya menggunakan helper "my_helper.php" dalam rangka mempersingkat proses tulis dan buat file log secara otomatis. ada 3 fungsi dalam "my_helper.php", yaitu _tulis_f($data, $file), untuk menuliskan log ke dalam file yang telah ditentukan, _buat_baru($user, $file), untuk membuat file log baru, jika ternyata file log yang ditentukan tidak ditemukan (sekaligus menghindari error Codeigniter), dan terakhir fungsi detect(), yang digunakan untuk mendeteksi nama browser, versi browser, dan operating system dari user yang sedang menggunakan aplikasi. Walupun sebenarnya CI udah menyediakan, tapi agak panjang2 nama variabelnya.

Untuk download script secara lengkap dapat didownload melalui link berikut ini :

Download skrip

Untuk melihat demo dapat dilihat pada link berikut ini :

Demo program 

Terim kasih.. :) #keep_Ngoding

4 komentar: