Wed Dec 2019 1 year ago

Cara Membuat Waktu Session Loguot Otomatis di PHP

Banyak hal terjadi jika seseorang telah berhasil login sebagai user, dan tentunya login ini ada ketika user akan memanfaatkan layanan dari suatu website, bukan karena sebab yang lain, seperti tingkat sekuritas yang buruk. Selalu ada masa idle. Idle di sini bermakna user tidak melakukan apa-apa sama sekali di website tersebut, tidak berpindah halaman, tidak memasukkan input pada form manapun, dan tidak ada hal apapun yang menyebabkan sebuah halaman website terefresh, dengan kata lain user tidak melakukan apa pun pada website yang sedang dia kunjungi. Sungguh user yang aneh. Tapi hal seperti ini dapat terjadi jika user sedang asik mengunjungi website yang lain, dan lupa akan website yang dia kunjungi sebelumnya. Tentunya keadaan user pada website yang dikunjungi sebelumnya dianggap sebagai condition yang idle oleh website tersebut. Tidak ada hal apapun yang terjadi di website sebelumnya. Atau kondisi lain, dimana seorang user yang telah 10 menit meninggalkan pc-nya dalam keadaan lupa melogout accountnya. Sungguh terlalu. Di sinilah fungsi pengatur waktu session benar-benar dibutuhkan.

 

Ada dua cara untuk mengatur waktu session, yang pertama adalah merubah konfigurasi session timeout pada php.ini, cara yang terakhir yaitu dengan memanfaatkan fungsi time() dan variable session yang telah teregistrasi, dengan kata lain cara yang terakhir ini adalah merancang barisan code yang dapat mengatur waktu session. Penulis tidak akan menjelaskan cara yang pertama. Tapi yang akan penulis jelaskan adalah cara yang kedua. Penulis akan mengambil sebuah contoh kasus, ini untuk memudahkan penjelasan secara logika, dan penjelasan alur dari cara kerja script yang akan dibuat.

 

Kasusnya seperti ini, ?Ketika user telah berhasil login, akan ada sebuah session yang digunakan sebagai patokan untuk membandingkan berapa lama user telah berada pada halaman website tersebut. Apabila waktu time() yang berjalan lebih besar dari nilai session dari variable yang dijadikan sebagai patokan nanti maka user tersebut akan secara otomatis terlogout?.

 

Oke kita langsung saja silahkan copy/paste scriptnya di file php setelah login contohnya sya menggunakan file index.php setelah user login.

<?php session_start();$timeout = 10; // Set timeout menit$logout_redirect_url = "../index.html"; // Set logout URL
$timeout = $timeout * 60; // Ubah menit ke detikif (isset($_SESSION['start_time'])) {    $elapsed_time = time() - $_SESSION['start_time'];    if ($elapsed_time >= $timeout) {        session_destroy();        echo "<script>alert('Session Anda Telah Habis!'); window.location = '$logout_redirect_url'</script>";    }}$_SESSION['start_time'] = time(); ?>

Coba jalankan file tersebut maka setelah 10 menit maka anda akan mendapatkan message "Session Anda Telah Habis!"