Salahsatu usaha mengamankan aplikasi web adalah mencatat login user. Hal yang dicatat minimal ada 3 yaitu IP, Agent ( browser dan OS) serta Waktunya. Sebelum lebih jauh mari kita lihat manfaat mencatat tiga hal tersebut.
Manfaat Mencatat Login user
Mencatat IP bisa digunakan untuk mendeteksi dari mana user kebanyakan mengakses; apakah dari dalam negeri atau luarnegeri, apakah kebanyakan mengakses lewat jaringan Indihome atau telkomsel dan seterusnya. Dengan membuat statistik IP user misalkan ternyata kebanyaka akses dari luar negeri maka bisa dipertimbangkan untuk memindah server kita ke luar negeri.
Browser dan OS juga sangat penting untuk meningkatkan layanan dari Aplikasi kita, misalkan kebanyakan orang memakai Android Smartphone, maka sebagai programer Sistem informasi web, alangkah baiknya kita menggunakan desain yang responsive sehingga tampilan akan menyesuaikan perangkat dari user.
Bagian terakhir adalah waktu. Saran saya gunakan datetime untuk mencatat login user sehingga jika kita bisa tahu kapan saja user tertentu atau kebanyakan user mengakses website kita. Sebagai contoh, ternyata user kebanyakan mengakses di malam hari, jika kita mendapatkan data itu bukankah lebih baik kita menyediakan night mode di tampilan web kita?
Ok, penjelasan diatas sekedar pengantar bagi anda yang masih awal untuk mendapatkan manfaat dari mencatat Login User. Tutorial ini sangat singkat yang terdiri dari script membuat table database login yang terdiri dari 5 kolom ( id, nodaftar,ip,agent,waktu) seperti dibawah ini
Script Membuat tabel User Log
CREATE TABLE IF NOT EXISTS `user_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `no_daftar` varchar(10) NOT NULL, `ip` varchar(20) NOT NULL, `agent` varchar(200) NOT NULL, `waktu` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Untuk no_daftar bisa anda ganti dengan username atau email sesuai dengan aplikasi anda.
Untuk melog user saat login sukses, letakan script dibawah ini ke script if (login_sukses)==true.
Script yang saya gunakan emnggunakan mysqli, jika anda menggunakan PDO atau Framework silahkan disesuaikan.
Kode PHP mencatat Login user
$agent=@$_SERVER[HTTP_USER_AGENT]; $ip=@$_SERVER['REMOTE_ADDR']; if($login_sukses==true){ //log user $sql = "INSERT INTO user_log(no_daftar,ip,agent,waktu) VALUES('$no_daftar','$ip','$agent',now())"; $result = mysqli_query($link,$sql) or die(mysqli_error($link)); }
Contoh Catatan Login User
Perhatikan tabel pada koloma agent, sudah nampak nama OS dan Browsernya. Jika kita detailkan agent kurang lebih seperti ini .
Mozilla/5.0 (Linux; Android 9; RMX1941) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36
Memisah Browser dan OS di Kolom terpisah
bagaimana caranya agar Nama Browser dan Sistem Operasinya diletakan ditabel terpisah. Langkah pertama yang harus kita lakukan adalah memanfaatkan library https://github.com/yzalis/UAParser . Librari ini bisa memecah string agent menjadi OS dan versinya, Browser dan versinya, Jenis perangkat ( PC, iPhone, Samsung dll) dan ukuran layarnya. Untuk tutorialnya insyaallah akan saya buat di lain waktu.