Session Timeout Nedir?
Öncelikle "session" teriminin ne anlama geldiğine kısaca değinelim. Bir kullanıcının web sitenizde geçirdiği süre boyunca kimlik doğrulama bilgileri ve diğer oturum bilgileri saklanır. PHP, bu bilgileri sessionlar aracılığıyla yönetir. Ancak, eğer kullanıcı bir süre boyunca hiçbir işlem yapmazsa, bu session otomatik olarak sonlanır ve kullanıcı siteyi terk eder. İşte buna "session timeout" denir.
PHP'nin oturum yönetimi, genellikle `session_start()` fonksiyonu ile başlar. Kullanıcı web sitenize her eriştiğinde bir session oluşturulur. Ancak, PHP'nin varsayılan session süresi, genellikle 24 dakika kadardır. Bu süreyi aşan bir kullanıcı, oturumunun sona erdiğini görecektir.
PHP Session Timeout Süresini Nasıl Ayarlarsınız?
Peki, bu süreyi uzatmak veya kısaltmak nasıl yapılır? PHP, session sürelerini `php.ini` dosyasından ya da doğrudan kod üzerinden ayarlamanıza olanak tanır.
PHP’de Session Timeout Ayarlamak İçin Adımlar:
PHP'nin `php.ini` dosyasına erişiminiz varsa, oturum süresini burada değiştirebilirsiniz.
```ini
; php.ini dosyasındaki bu satır, session zaman aşımını belirler.
session.gc_maxlifetime = 3600 ; 1 saat (3600 saniye) olarak ayarlandı.
```
# 2. Kod Üzerinden Ayarlamak
Eğer php.ini dosyasını değiştirme şansınız yoksa, PHP kodu üzerinden de session sürelerini ayarlayabilirsiniz. Aşağıdaki kodu, sayfanın başında kullanabilirsiniz:
// Session süresini 30 dakika olarak ayarlıyoruz
ini_set('session.gc_maxlifetime', 1800); // 30 dakika (1800 saniye)
session_start();
?>
```
Session Timeout’u Yönetmek İçin Kullanıcıya Uyarı Göndermek
Birçok site, session zaman aşımından önce kullanıcıyı uyarır. Örneğin, sayfanın alt kısmında bir zamanlayıcı gösterebilir ve "10 saniye içinde oturumunuz sona erecek!" gibi bir mesaj verebilirsiniz. Bu tür bir uyarı, kullanıcının işlemini tamamlamasına yardımcı olabilir.
// Kullanıcıyı session timeout öncesinde uyarmak için JavaScript kullanabiliriz.
echo '';
?>
```
Session Timeout’a Karşı Güvenlik İpuçları
Session timeout sadece kullanıcı deneyimini etkilemekle kalmaz, aynı zamanda güvenlik için kritik bir öneme sahiptir. Uzun süreli açık kalan sessionlar, oturum çalınması gibi güvenlik tehditlerini beraberinde getirebilir. Bu yüzden session süresini makul bir seviyeye ayarlamak çok önemlidir.
- Session ID Yenileme: Her oturum başlatıldığında session ID’sini yenileyin. Bu, oturum çalınmasını engellemeye yardımcı olur.
```php
session_regenerate_id(true); // Yeni session ID oluşturuyor.
?>
```
- Session Cookie Ayarları: Cookie'leri daha güvenli hale getirmek için sadece HTTPS üzerinden erişilebilir olmasını sağlayabilirsiniz.
```php
ini_set('session.cookie_secure', 1); // HTTPS üzerinde çalışmasını sağlar
ini_set('session.cookie_httponly', 1); // JavaScript üzerinden erişimi engeller
?>
```
### Sonuç Olarak...
PHP'deki session timeout problemi, kullanıcı deneyimi açısından büyük bir sorun yaratabilir. Ancak doğru ayarlarla bu sorunun üstesinden gelmek oldukça basit. Oturum sürelerini dikkatli bir şekilde ayarlayarak, güvenliği ve kullanıcı deneyimini iyileştirebilirsiniz. Session timeout konusunda artık daha fazla endişelenmenize gerek yok. Bu yazı sayesinde kullanıcılarınızı rahatça ağırlayabileceksiniz.