Sampai dengan versi 10, PHPMaker sudah menyediakan pengaturan keamanan Aplikasi Web yang bernama Disallow concurrent login. Fitur ini bisa Anda lihat melalui menu tab Security -> tombol Advanced -> User Login Options -> Login. Jika fitur ini diaktifkan, maka Aplikasi Web yang dihasilkan olehnya akan mencegah Pengguna lain login menggunakan akun milik Pengguna yang statusnya sedang login di Aplikasi Web tersebut; baik itu melalui browser maupun komputer yang berbeda.
Hal ini tentu saja sangat bermanfaat jika logika bisnis Aplikasi Web yang Anda buat mengharuskan satu orang Pengguna hanya boleh menggunakan satu akun miliknya sendiri. Dengan kata lain, tidak diijinkan lebih dari satu Pengguna login bersamaan memakai akun yang sama. Namun, kadang-kadang ada juga Aplikasi Web yang membutuhkan fitur yang mengijinkan dua orang Pengguna atau lebih menggunakan satu akun yang sama. Artinya, satu akun memungkinkan untuk digunakan oleh lebih dari satu orang Pengguna pada saat yang bersamaan.
Nah, kabar baiknya adalah, sejak versi 11, PHPMaker sudah menyediakan fitur ini. Ada sebuah pilihan baru yang ditambahkan, sehingga Web Developer dapat mengimplementasikan kebutuhan tadi. Nama pengaturan itu adalah Maximum concurrent user session count atau kalau diterjemahkan ke dalam bahasa Indonesia menjadi Jumlah maksimum session pengguna yang dapat digunakan bersamaan. Lokasinya tepat berada di bawah pengaturan Disallow concurrent login tadi.
Nilai standar pengaturan Maximum concurrent user session count ini adalah 1, yang artinya jika tidak Anda ubah, maka itu sama artinya Aplikasi Web mengijinkan satu akun hanya dapat digunakan oleh satu orang Pengguna. Jika ada Pengguna lain mencoba login menggunakan akun tersebut, maka sistem akan menolak loginnya, dan menampilkan pesan bahwa akun tersebut sedang dalam keadaan login atau digunakan oleh Pengguna sebelumnya.
Tentu saja untuk mengimplementasikan kemampuan yang baru ini, Anda sebagai Web Developer harus memastikan bahwa kedua pengaturan tersebut di atas sudah diaktifkan dari aplikasi PHPMaker.
Luar biasa memang PHPMaker versi 11 ini. Ada saja fitur canggih yang ditambahkan yang semakin mempermudah Web Developer dalam menghasilkan Aplikasi Web dengan kualitas yang sangat super. 🙂
Nanda mengatakan
Pak Masino Jika kita mengaktifkan “Disallow concurrent login.” dan mengisi ” Maximum concurrent user session count = 1″ itu artinya tidak boleh ada User Login lebih dari “1” kan ya ?
Namun sepertinya cara ini masih ada kelemahan di PHP Maker dimana jika user Menutup browser namun Lupa Logout, atau tiba2 komputer mati (misalnya Listrik mati) itu sepertinya status nya masih Login, sehingga tidak bisa login kembali dan harus User Level Administrator yang Mengaktifkannya kembali, namun jika Admin itu sendiri yang mengalami masalah tersebut maka harus di ‘Reset’ Manual dari PHPmyadmin.
sejauh yang saya tau kok belum ada ya pengaturan di PHP Maker agar User yang login hanya ‘1’ namun ketika Nutup Browser Lupa logout masih tetep bisa Login, atau ada Pengaturan lain yang belum saya mengerti ?
O iya, seperti misalnya CMS Joomla yang pernah saya pakai sudah bisa menagani hal tersebut atau misalnya WebServer PHPMyadmin juga kalo kita lupa logout/ kompi mati juga masih bisa Login , ketika komputer dinyalakan kembali.
Masino Sinaga mengatakan
Betul. Memang seperti itulah bawaan asli PHPMaker, hehe… 🙂
Permasalahan tersebut sekarang sudah bisa diatasi dengan sangat mudah dan cepat, jika menggunakan Masino Extensions pada project PHPMaker Anda.
Artinya, jika Pengguna menutup browser tapi lupa logout sebelumnya, atau jika tiba-tiba listrik padam, lalu setelah listrik nyala Pengguna mencoba login lagi, maka sistem akan otomatis membersihkan session yang sedang dalam posisi login tadi. Akibatnya, Pengguna dapat login kembali secara otomatis tanpa minta bantuan user Administrator.
Nanda mengatakan
Terimakasih Responnya Pak Masino Sinaga,
Setelah saya Pelajari Proses yang saya Lihat di PHP Maker kira2 seperti ini :
Jika User Belum/ Tidak login maka Isi Filed pada USER PROFILE (Memo) kira2 seperti ini:
(Jika isi di Field tersebut seperti diatas maka User Bisa Login)
sedangkan jika User masih dalam posisi Login maka isi Field USER PROFILE (memo) akan ter-UPDATE menjadi kira2 seperti ini :
(Jika isi di Field tersebut seperti diatas maka User Otomatis Tidak Bisa Login)
Kelamahan nya adalah ketika browser Tertutup (belum Logout) maka User tersebut Tidak bisa Login,
Karena isi Field USER PROFILE masih terdapat SESSION (belum kosong)
Solusi :
Logika yang baru saya pelajari adalah ketika USER Akan/ SEDANG LOGIN maka SISTEM akan Memeriksa User Yang Sedang
Login tersebut apakah isi di FIELD USER PROFILE SessionID nya kosong atau tidak.
Jika Field USER PROFILE tersebut SESSionID nya tidak kosong maka SISTEM otomatis akan mengUPDATE
isi dari SessionID dari yang sebelumnya kira2 seperti ini …”SessionID”;s:26:”utn511r423vfktamume5nv5f64″… menjadi
seperti ini …”SessionID”;s:0:””;… (dikosongkan).
Namun Saya mengalami kendala yaitu :
1. Bagaimana cara Memeriksa bahwa User Sedang Dalam Posisi Login atau Tidak , apakah ada Fungsi Tersendiri di PHP Maker ?
2. Bagaimana Cara melakukan Update ‘Hanya Sebagian’ isi dari Field pada USER PROFILE tersebut ?
(yang jadi masalah adalah yang di Update hanya ‘sebagian Teks di bagian tengah’ isi dari Field tersebut)
Terimakasih, Mohon Petunjuknya. hehe…
Masino Sinaga mengatakan
1. Gunakan global function IsLoggedIn(). Baca topik Server Events and Client Scripts lalu scroll ke bagian paling bawah halaman topik itu, untuk info dan contoh lebih lanjut.
2. Tergantung data apa dulu yang mau Anda update. Selengkapnya bisa Anda pelajari class cUserProfile dalam file phpfn12.php yang sudah di-generate oleh PHPMaker.
Nanda mengatakan
Terimakasih Responnya.
2.Maksudnya mau Update FIELD USER PROFILE namun hanya sebagian saja.
misal : …”SessionID”;s:26:”utn511r423vfktamume5nv5f64″… menjadi seperti ini
…”SessionID”;s:0:””;… (dikosongkan).
saya coba buat perintah Update sepperti ini :
masih bingung WHERE nya kemana.. Tujuan yg diharapkan :
Saat Login akan memeriksa jika User masih dalam posisi Login dan Session nya masih aktif (Maka Update Data Session di DB menjadi kosong) sehingga bisa login kembali.
semntara logika saya seperti itu, tapi belum berhasil.
tapi bener gak ya melalui cara itu.. atau apakah ada cara yang lebih efisien untuk menghapus Session Tersebut ?
Masino Sinaga mengatakan
Anda tidak akan bingung jika mengikuti saran nomor 2 pada komentar saya sebelumnya.