Używam systemu CodeIgniter od jakiegoś czasu - ale it has to jest short comings. Jestem wdzięczna za to, czego mnie nauczyła, ale teraz potrzebuję biblioteki do nowego projektu, który nie jest codeigniter, więc szukam pomysłów, które biblioteki mają, a które nie. Prawdopodobnie będę musiał pobrać utwory z kilku bibliotek, aby uzyskać wszystko, czego potrzebuję.Najlepsza biblioteka dla sesji PHP
Po prostu rzuciłem okiem na bibliotekę Kohana PHP session i podoba mi się sposób, w jaki wraca do natywnego sposobu użycia superglobalu $ _SESSION zamiast wymuszania zmiany na $ this-> session w celu uzyskania dostępu do danych.
W każdym razie chciałem się dowiedzieć, czy są tam inne dobre biblioteki sesyjne, które mogą mi dokuczać. Jest wiele rzeczy, które należy obsłużyć podczas sesji oprócz funkcjonalności CRUD.
- Wsparcie dla non-cookie sesji opartej przechodzącej (tj Facebooka lub przesyłające flash)
- „danych Flash”, który trwa tylko do następnego ładowania strony, a następnie jest automatycznie usuwane.
- Działa z sesją $ _SESSION lub $ this->, dzięki czemu programiści nie muszą zmieniać istniejącego kodu.
- Umożliwia ustawienie nowego identyfikatora sesji (tj. Identyfikator_sesji ("nowy identyfikator")) w przypadku, gdy chcesz zmienić identyfikator w połowie strony.
- Zapisuje wszystkie dane na końcu żądania strony zamiast za każdym razem, gdy dane są dodawane lub usuwane (zapisuje dodatkowe zapytania DB).
- Umożliwia przechowywanie plików, plików cookie lub baz danych. (lub memcached byłoby miło)
- Próba odmowy dostępu w przypadku przejęcia sesji. (IP, useragent lub fingerprint)
Właśnie spędziłem trochę czasu, wykraczających ponad logiki dla bibliotek sesji CodeIgniter i Kohana i wpadłem na następujący sposób każda zaczyna się i kończy sesje dla strony.
/**************
** 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
}
+1. To było w moim umyśle od czasu do czasu. Dziękujemy za przedstawienie szczegółów. – andyk