Ben bir süre için şimdi CodeIgniter sistemini kullanarak edilmiştir - fakat it has o short comings bulunuyor. Ben bana öğrettiği için minnettarım, ama şimdi yeni bir non-CodeIgniter proje için bir kitaplık gerekir ve bu yüzden kütüphaneler yok doğru şeyler ve hangi zorunda hangi fikirler etrafında arıyorum. Herhalde ben gereken her şeyi almak için çeşitli kütüphanelerden parçaları almak zorunda olacak.
Ben sadece aldı a Kohana PHP session kütüphane bakmak ve bunu $ _SESSION yerine kullanarak veri erişimi için $ this-> oturuma bir değişikliğini zorlama yerli PHP şekilde döner nasıl gibi.
Her neyse, ben orada ben karıştırmasını olabilir diğer iyi oturum kütüphaneler vardı bilmek istiyordu. Sadece işlevsel Crud yanı sıra bir oturumda ele alınması gereken bir çok şey var.
- (Yani Facebook veya Flash yükleyicileri) geçen OLMAYAN çerez tabanlı oturum için destek
- Ancak o zaman bir sonraki sayfa yük sürer ve "Flaş veri" auto-kaldırılır.
- Programcılar varolan kodunu değiştirmek zorunda kalmamak $ _SESSION veya $ this-> oturumu ile çalışır.
- Eğer sayfasından id orta yol değiştirmek istediğiniz durumda yeni bir oturum kimliği (yani session_id ('yeni id')) ayarını destekler.
- Yerine her zaman veri sayfa isteği sonunda tüm verileri kaydeder (ekstra DB sorguları kaydeder) eklenir veya kaldırılır.
- Dosyaları, tanımlama veya depolama için veritabanı kullanarak destekler. (Veya memcached güzel olurdu)
- Bir oturum kaçırmak durumunda erişim inkar girişimleri. (IP, useragent veya fingerprint)
Ben sadece CodeIgniter ve Kohana oturum kitaplıkları için mantık üzerinden gidiyor biraz zaman geçirdim ve ben nasıl her başlar aşağıdaki ile geldi ve sayfa için oturumları sona erer.
/**************
** Kohana Sessions
**************/
If not native file storage {
session_set_save_handler to the storage type (DB, cache, cookie...)
}
set the session_name() so php knows what cookie value to check
start session
/****** Saving ******/
session_write_close() which calls the given handler
/**************
** CI Sessions
**************/
Try to read_session() -> {
session = Get cookie (if using cookies will also contain data)
if(database) {
session .= pull data from database
}
checks if valid...
$this->userdata = session data
} else {
create a new one
}
/****** Saving ******/
session data is serialized either way
if(cookie) {
save cookie with serialized data and params like "last_activity"
}
if(database) {
save serialized data in db and session in cookie
}