v2.5.2
Giriş yap

PHP Session'a timeout nasıl verebilirim?

alibartuuzuner
601 defa görüntülendi ve 2 kişi tarafından değerlendirildi

PHP Session'a timeout vermek istiyorum yani bir zaman sonra session otomatik sonlandırılsın.

Session oluşturma kodlarım aşağıdakilerdir

functions.php

function loginControl($loginStatus = false) {
	switch($loginStatus)
	{
		case false: {
			if(trim($_SESSION['login'])) {
				header('Location: login.php');
			}
			
			break;
		}
		
		case true: {
			if(!trim($_SESSION['login'])) {
				header('Location: login.php');
			}

			break;
		}
	}
}

login.php

if(isset($_POST['login'])) { 
	$username = mysqli_real_escape_string($connection, $_POST['username']);
	$password = $_POST['password'];
	
	$pwmd5 = md5($password);

	$GETpassword = mysqli_query($connection,"SELECT * from accounts where username='$username' and password='$pwmd5'");
	$QUERYpassword = mysqli_num_rows($GETpassword);

	if($QUERYpassword >= 1) {
		$_SESSION['login'] = $username;
		echo "<script> window.location.replace('index.php') </script>";
	}
	else {
		echo '<div class="alert alert-danger p-1 fw-bold" role="alert"><div class="container text-center"><i class="far fa-info-circle"></i> Şifre veya Kullanıcı Adı yanlış!</div></div>';
	}
}
sercanarga
1249 gün önce

Aslında bu tür bir şey için cookie tutman daha mantıklı ama session ile yapman istersen;

Session değerinde kullanıcının giriş yaptığı zamanı tutup karşılaştırabilirsin.
Aşağıdaki örnekte 30 dakika sonra session siliniyor.

$_SESSION['login'] = ['login_date' => time()];

if ((time() - $_SESSION['login']['login_date']) > (60 * 30)) {
    unset($_SESSION['login']);
}