PHP'de oturum depolama nasıl yapılır?

Mete Dilekçi

Decapat
Katılım
25 Haziran 2021
Mesajlar
20
Daha fazla  
Cinsiyet
Erkek
Merhaba herkese kolay gelsin, PHP de oturum depolama da sıkıntı yaşıyorum. Siteye her giriş yapıldığında veritabanındaki şifreyle siteye giriş yapılırken kullanılan şifreyi karşılaştırmak için oturum depolaması yapmam lazım, session ile yaptığımda tarayıcıyı her kapattığımda siliniyor. Normal çerezleri kullanarak yapayım diyorum, bu da her ne kadar şifrelenmiş bir şekilde olsa da güvenilir gelmiyor bana, çözüm olarak bazı sitelerde de olan oturum depolama yöntemiyle yapıyorum. Ekte bıraktığım görseldeki gibi gözüksün istiyorum ama bunu nasıl yapacağımı bilmiyorum. Her girdiğim site session ile yap diyor ama bahsettiğim gibi tarayıcıyı her kapat aç yaptığımda session siliniyor, bahsettiğim oturum depolama nasıl yapılıyor? Bir fikri olan veya bilen yardım ederse çok mutlu olurum herkese kolay gelsin.

1670716649542.png
 
Son düzenleyen: Moderatör:
Bu nasıl yapılıyor bilmiyorum fakat ben bunun için dosya sistemine kayıt etme yöntemini kullandım. Bu şekilde sürekli aktif oturum oldu.

Öncelikle bir dizin oluşturmalısın. "Beni Hatırla" onayını aktif edenler için bu dizinde kullanıcının kimliği yer alacak. İçerisinde de doğrulama amaçlı bazı bilgiler bulunacak. Örneğin IP adresi, işletim sistemi ve tarayıcı kimliği gibi şeyler. Tabii bunu yaparken benzersiz bir güvenlik anahtarı olmalı.

Eğer bir tarayıcı, siteye girerken oturum açılmamış ise dizindeki anahtarlar tarayıcı için üretilen anahtar ile kontrol edilecek. Doğru anahtar var ise otomatik oturum açılacak.

Ek olarak şu bilgiyi de vereyim de eğer yapacaksan bir sorun yaşama. Dosyayı sakın web dizini içerisine kaydetme. Web dizini dışında olsun ki anahtarlara erişilmesin. Örneğin "htdocs" web dizini ise bir alt dizine ekle.
 
Son düzenleme:
Bu nasıl yapılıyor bilmiyorum fakat ben bunun için dosya sistemine kayıt etme yöntemini kullandım. Bu şekilde sürekli aktif oturum oldu.

Öncelikle bir dizin oluşturmalısın. "beni hatırla" onayını aktif edenler için bu dizinde kullanıcının kimliği yer alacak. İçerisinde de doğrulama amaçlı bazı bilgiler bulunacak. Örneğin IP adresi, işletim sistemi ve tarayıcı kimliği gibi şeyler. Tabii bunu yaparken benzersiz bir güvenlik anahtarı olmalı.

Eğer bir tarayıcı, siteye girerken oturum açılmamış ise dizindeki anahtarlar tarayıcı için üretilen anahtar ile kontrol edilecek. Doğru anahtar var ise otomatik oturum açılacak.

Ek olarak şu bilgiyi de vereyim de eğer yapacaksan bir sorun yaşama. Dosyayı sakın web dizini içerisine kaydetme. Web dizini dışında olsun ki anahtarlara erişilmesin. Örneğin "htdocs" web dizini ise bir alt dizine ekle.

Sizin içinde sıkıntı olmazsa bir örnek kod gönderme şansınız var mı ya da internette yazılmış örnek kod da olur.
 
Sizin içinde sıkıntı olmazsa bir örnek kod gönderme şansınız var mı ya da internette yazılmış örnek kod da olur.
Şu anda bunun için müsait değilim fakat unutmazsam daha sonra kendi yazdığım kodu atarım. Sen kendine göre düzenlersin.

Eğer PHP fonksiyonlarını biliyorsan dosya sistemi fonksiyonları ile yapıyorsun. Yapman gereken şey tarayıcıya özel birkaç bilgiyi karıştırıp MD5 şifrelemesi ile güvenlik anahtarı şeklinde çıkarmak. Sonrasında tarayıcı bilgisini dosya sistemine kayıt etmek. Aslında çok basit, önemli olan algoritmayı yani mantığını kavramak.
 
Şu anda bunun için müsait değilim fakat unutmazsam daha sonra kendi yazdığım kodu atarım. Sen kendine göre düzenlersin.

Eğer PHP fonksiyonlarını biliyorsan dosya sistemi fonksiyonları ile yapıyorsun. Yapman gereken şey tarayıcıya özel birkaç bilgiyi karıştırıp MD5 şifrelemesi ile güvenlik anahtarı şeklinde çıkarmak. Sonrasında tarayıcı bilgisini dosya sistemine kayıt etmek. Aslında çok basit, önemli olan algoritmayı yani mantığını kavramak.

Tamamdır teşekkür ederim.
 
Hocam bu kodu bir deneyin isterseniz.
Bu kodda session a süre veriyoruz.
PHP:
session_start();

// Cookie ömrünü 1 yıl olarak ayarladık burda
$expire = 365 * 24 * 60 * 60;
ini_set('session.cookie_lifetime', $expire);
 

Yeni konular

Geri
Yukarı