2012-02-11 19 views
6

Oturumların Codeigniter'da nasıl çalıştığını anlamaya çalışıyorum. Çevrimiçi kitapçığı okuyarak aşağıdakileri görüyorum:Codeigniter'da Oturumlar Nasıl Çalışır

Oturum verileri mevcut değilse (veya süresi dolmuşsa) yeni bir oturum oluşturulacak ve çerezde saklanacaktır. Bir oturum mevcutsa, bilgileri güncellenecek ve çerez güncellenecektir. Her güncellemeyle, session_id yeniden oluşturulacak.

ve

Not: Oturum çerezleri yalnızca işlemci yükü azaltmak için varsayılan olarak her beş dakikada bir güncellenir. Bir sayfayı tekrar tekrar yüklerseniz, "son etkinlik" süresinin, çerezin son yazıldığı tarihten itibaren beş dakika veya daha fazla süre geçtiğinde güncelleneceğini fark edersiniz. Bu süre, sisteminizdeki/config/config.php dosyasındaki $ config ['sess_time_to_update'] satırını değiştirerek yapılandırılabilir.

Soru: hangi bilgileri oturumu sınıfıyla bir sayfa yüklendiğinde bir oturum varsa güncellenir

  1. ? Bu, çerezde saklanan oturum kimliğidir veya oturum verilerinin kendisi veritabanında saklanır mı?
  2. Oturum çerezleri yalnızca 5 dakikada bir güncellenir. Kullanıcı 5 dakika içinde sayfa A'dan B sayfasına geçerse, bu yeni oturum verilerinin eklenmesini gerektirir mi? Mantıksal olarak oturum verileri güncellenmeli, bu yüzden bu satırı yanlış anlıyorum sanırım ... Bu durumda, oturum çerezinin her 5 dakikada bir yeni oturum kimliği aldığını tahmin edeceğim.

Herhangi bir açıklama size yardımcı olacaktır!

+0

Ben de bir karışıklığa yaşıyorum. ve CI 1.7.2'de garip bir davranış demeliyim. DB tipi oturum uygulamasını kullandığımda iyi çalışıyor. ancak DB tipi false durumunda uygulamayı çok yavaş yapar. baska öneri? Bu yararlı bilgiler için –

cevap

2

Evet, çerezde saklanan oturum kimliğiyle ilgili. Bu her 5 dakikada bir rejenere edilir. Yenileme zamanı geldiğinde, önce mevcut oturum verilerini alacak ve yeni oturum kimliğine atayacaksınız. CI oturumu kütüphane, fonksiyon sess_update() den

kodu:

// Save the old session id so we know which record to 
// update in the database if we need it 
$old_sessid = $this->userdata['session_id']; 
$new_sessid = ''; 
while (strlen($new_sessid) < 32) 
{ 
    $new_sessid .= mt_rand(0, mt_getrandmax()); 
} 

// To make the session ID even more secure we'll combine it with the user's IP 
$new_sessid .= $this->CI->input->ip_address(); 

// Turn it into a hash 
$new_sessid = md5(uniqid($new_sessid, TRUE)); 

// Update the session data in the session data array 
$this->userdata['session_id'] = $new_sessid; 
$this->userdata['last_activity'] = $this->now; 
+0

gerçekten teşekkürler ve programlama sevgisi için SO. –