Sejak versi 12, PHPMaker menambahkan fitur baru yang dapat membuat Aplikasi Web yang dihasilkan olehnya logout otomatis apabila Pengguna tidak melakukan aktivitas selama waktu tertentu.
Pengertian dari “aktivitas” di sini adalah Pengguna tidak membuka atau berpindah ke halaman lain, dan dibatasi untuk setiap tab browser yang sudah/sedang dibuka.
Jadi, meskipun Pengguna membuka beberapa tab di suatu browser, maka setiap tab tadi memiliki waktu session masing-masing. Tab yang terbuka paling duluan tentu saja akan lebih cepat berakhir waktu session-nya.
Pengaturan mengenai waktu session tadi terdapat di bawah menu Tools -> Advanced Settings -> Project pada project PHPMaker Anda.
Ada tiga item pengaturan yang perlu kita ketahui supaya fitur logout otomatis ini dapat optimal digunakan, yaitu sebagai berikut:
- Session timeout period (minutes), yaitu nilai waktu dalam satuan menit jika Pengguna tidak memuat ulang halaman atau mengakses halaman lain pada jendela tab browser yang sama. Nilai standar (default) adalah 0, yang artinya fitur ini tidak aktif.
- Session keep alive interval (seconds), yaitu nilai waktu dalam satu detik yang dibutuhkan oleh Aplikasi Web untuk mengirim permintaan Ajax ke server untuk mempertahankan session tetap aktif. Nilai standar (default) adalah 0, yang artinya fitur ini tidak aktif.
- Session time out countdown period (seconds), yaitu nilai waktu dalam satuan detik sistem akan menampilkan hitungan mundur waktu pada kotak dialog, sebelum session benar-benar berakhir. Nilai standar (default) adalah 60, yang artinya jika kedua item pengaturan di atas tadi masing-masing bernilai lebih besar dari nol, maka pada 60 detik sebelum session berakhir, maka sistem akan menampilkan kotak dialog yang berisi hitungan mundur selama 60 detik.
Berdasarkan pengalaman Penulis, nilai item pengaturan pertama biasanya diset selama 3 menit, dan nilai item pengaturan yang kedua diset selama 180 detik (3 menit x 60 detik).
Itu artinya, jika selama 3 menit Pengguna tidak melakukan aktivitas apapun (mengakses halaman lain dalam tab yang sama), maka Aplikasi Web tadi akan logout otomatis.
Sedangkan nilai 180 detik pada item pengaturan kedua biasanya kita samakan dengan nilai 3 menit tadi. Mengapa? Supaya sistem tetap mengirimkan session dengan waktu yang sinkron dengan waktu timeout yang mengakibatkan logout otomatis tadi.
Jika kita misalnya ingin mengganti menjadi 5 menit, maka item pengaturan yang kedua tadi kita set menjadi 300 detik (5 menit x 60 detik).
Penting juga untuk diperhatikan, bahwa nilai item pengaturan yang ketiga di atas tadi harus dipastikan lebih kecil dari nilai item pengaturan yang kedua.
Jika nilai item pengaturan ketiga lebih besar dari nilai item pengaturan kedua, maka hitungan mundur dalam kotak dialog tidak akan pernah ditampilkan, atau hasilnya tidak sesuai dengan yang kita harapkan.
Nilai yang sangat disarankan untuk item pengaturan ketiga adalah 60 detik.
Meskipun nilai ketiga item pengaturan tadi sudah diberikan contohnya di atas, namun saya menyarankan agar Anda dapat mengeksplorasi dan bermain-main dengan ketiga item pengaturan tadi. Anda akan melihat efeknya setelah mencoba bereksperimen dengan nilai lainnya.
Kabar gembiranya adalah, fitur session time out ini semakin nyaman dirasakan oleh Pengguna jika Anda menggunakan Masino Extensions untuk PHPMaker. Mengapa? Karena begitu pertama kali Pengguna berhasil login, maka waktu total session Pengguna akan langsung ditampilkan di bagian Footer.
Dengan cara ini, maka Pengguna semakin yakin saat menggunakan Aplikasi Web yang kita hasilkan dengan PHPMaker dan Masino Extensions. Sama seperti jika kita sedang menunggu giliran jalan di lampu merah atau ketika kita sedang akan melewati persimpangan lampu merah yang memiliki counter hitungan mundur.
Nikmatnya menggunakan PHPMaker … 😉
Nanda mengatakan
Pak Masino, apa nama file hasil Generate yang mengatur tentang Session timeout period (minutes), Session keep alive interval (seconds), Session time out countdown period (seconds) ini, saya cari kok belum ketemu ya ?
satu lagi Pak, saya punya dua Project (beda folder), ketika kedua-dua nya dijalankan dan salah satu Projeck tsb Logout Project yang lainnya kok ikut Logout juga ya (padahal belum di Logout) , apa PHP Maker memang seperti itu atau ada pengaturannya ?
Masino Sinaga mengatakan
Pengaturannya bisa dilakukan dari dalam file project PHPMaker. Jika ingin mengatur dari file yang sudah di-generate, lihat dalam file ewcfg12.php.
Jika di localhost, memang seperti itu.
Nanda mengatakan
terimakasih Pak, saya pingin nyoba nilai nya nanti bisa dirubah2 dari Database.
untuk Logout :
saya coba di jaringan , saya akses dari komputer Client kok sama ya Pak ?
ketika yang satu logout, projek satunya juga ikut logout.
Masino Sinaga mengatakan
Pastikan ProjectName dan ProjectID di file .pmp-nya berbeda di kedua aplikasi web tersebut.
Cak Sobri mengatakan
Om, gimana caranya untuk login single window, misal kita punya beberapa aplikasi menggunakan PMP ketika kita login ke salah satu aplikasi maka kita gak usah login lg ketika ingin membuka aplikasi lainnya… karna saya menggunakan LDAP jadi saya rasa aplikasi saya bisa sinkronisasi loginnya agar untuk mempermudah user…
Terimakasih om Masino Sinaga 🙂
Cak Sobri mengatakan
Saya menemukan ini di Advanced Settings,
1. Allow login by URL
2. Allow login by session variables
Tapi belum bisa mengimplementasikannya..
sementara kode yg saya coba begini (belum berhasil) :
// User Validated event
function User_Validated(&$rs) {
// Example:
//$_SESSION[‘UserEmail’] = $rs[‘Email’];
// EW_PROJECT_NAME adalah nama project PHPMaker yang kedua
$_SESSION[“sitekedua_Username”] = $rs[“username”]; // is username (nama field di Security Tab)
$_SESSION[“sitekedua_Password”] = $rs[“password”]; // is an encrypted password (nama field di Security Tab)
$_SESSION[“sitekedua_Encrypted”] = TRUE;
}
Masino Sinaga mengatakan
Gunakan juga server event User_CustomValidate. Baca menu Help.