PHP’de Session Timeout Nedir?
PHP ile geliştirdiğiniz bir uygulama ya da web sitesi, kullanıcıların bir süre boyunca etkileşimde bulunmadan oturumlarını açık tutmamalıdır. İşte bu noktada Session Timeout devreye girer. Temelde, oturum zaman aşımı, belirli bir süre boyunca etkinlik göstermeyen kullanıcıların oturumlarının otomatik olarak sonlandırılmasını sağlar. Bu, güvenlik için hayati öneme sahiptir çünkü bir kullanıcının oturumu açık kaldıkça, kötü niyetli kişilerin bu oturumu ele geçirme riski artar.
Güvenlik: Eğer bir kullanıcı uzun süre bir işlem yapmazsa, oturum açık kalmaya devam eder. Bu, kötü niyetli kişilerin oturumu ele geçirmesi için bir fırsat olabilir. Oturum zaman aşımı ile bu risk ortadan kaldırılır.
Performans: Oturum yönetimini doğru bir şekilde ayarlamak, sistem kaynaklarını verimli kullanmanızı sağlar. Gereksiz oturumların aktif kalması, sunucunuzun kaynaklarını tüketir.
Kullanıcı Deneyimi: Oturum zaman aşımını iyi bir şekilde yönetmek, kullanıcılara güvenli bir ortam sağlar. Ayrıca, kullanıcıyı bilgilendiren uyarılar veya otomatik oturum kapanması, kötü deneyimlerin önüne geçer.
PHP ile Session Timeout Yönetimi
$timeout_duration) {
// Oturum zaman aşımına uğradı, çıkış yap
session_unset();
session_destroy();
header("Location: login.php"); // Kullanıcıyı giriş sayfasına yönlendir
exit();
}
// Son etkinlik zamanını güncelle
$_SESSION['last_activity'] = time();
?>
Yukarıdaki kodda, kullanıcı 10 dakika boyunca etkinlik göstermezse oturum sonlanacak ve kullanıcı login sayfasına yönlendirilecektir. Bu sayede oturumlar sadece aktif kullanıcılar için açık kalır.
Session Timeout’u Özelleştirme
PHP’nin sunduğu `session.gc_maxlifetime` direktifi ile oturumların yaşam süresi üzerinde de kontrol sağlayabilirsiniz. Bu ayar, PHP’nin garbage collection (çöp toplama) işlemini kontrol eder ve oturum sürelerinin uzunluğunu belirler. Örneğin, aşağıdaki gibi bir kod ile oturum süresi ayarlanabilir:
Bu ayar sayesinde, PHP oturumları 30 dakika boyunca aktif kalacak ve sonrasında kullanıcıdan yeniden giriş yapması istenecektir.
Oturum Zaman Aşımı ile Kullanıcıyı Bilgilendirme
Birçok uygulama, kullanıcıya oturum zaman aşımı yaklaşırken bildirimde bulunur. Bu, kullanıcının işlerindeki kesintileri önler. PHP ile bunu yapmak için JavaScript kullanabilirsiniz. Aşağıdaki örnekte, oturumun sonlanmaya yaklaşması durumunda kullanıcıya uyarı gösteren bir sistem kurduk:
$timeout_duration) {
echo "";
session_unset();
session_destroy();
header("Location: login.php");
exit();
}
// Son etkinlik zamanını güncelle
$_SESSION['last_activity'] = time();
?>