Лучшая библиотека для сеансов PHP
Я использую систему CodeIgniter какое-то время, но он имеет короткие номера. Я благодарен за то, чему он меня научил, но теперь мне нужна библиотека для нового проекта, не являющегося когнинификатором, и поэтому я ищу варианты, по которым библиотеки имеют все правильно, а какие нет. Мне, вероятно, придется брать кусочки из нескольких библиотек, чтобы получить все, что мне нужно.
Я просто просмотрел библиотеку Kohana PHP session, и мне нравится, как она возвращается к собственному PHP-способу использования $_SESSION superglobal вместо того, чтобы принудительно изменить сеанс $this- > для доступа к данным.
Во всяком случае, я хотел знать, есть ли там другие хорошие библиотеки сеансов, которые могут быть беспорядочными. Существует много вопросов, которые необходимо обрабатывать в сеансе, кроме CRUD, функционально.
- Поддержка прохождения сеанса на основе cookie (например, Facebook или Flash)
- "Данные Flash", которые сохраняются только для загрузки следующей страницы, а затем автоматически удаляются.
- Работает с $_SESSION или $this- > session, так что программистам не нужно менять существующий код.
- Поддерживает установку нового идентификатора сеанса (т.е. session_id ('новый id')), если вы хотите изменить идентификатор в середине страницы.
- Сохраняет все данные в конце запроса страницы, а не каждый раз, когда данные добавляются или удаляются (сохраняются дополнительные запросы к БД).
- Поддерживает использование файлов, куки или базы данных для хранения. (или memcached будет хорошо)
- Попытка запретить доступ в случае захвата сеанса. (IP, useragent или отпечаток пальца)
Я просто потратил некоторое время на логику для сессионных библиотек CodeIgniter и Kohana, и я придумал следующее о том, как каждый начинает и заканчивает сеансы для страницы.
/**************
** 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
Вы посмотрели Zend_Session
?
- вы можете передавать идентификатор сеанса через URL-адрес с помощью настроек PHP
- вы можете истечь определенные переменные сеанса по времени или путем переходов (запросов)
- миграция в другие приложения не будет такой простой, и я думаю, что это не очень хорошо, когда вы возитесь с
$_SESSION
, когда используете Zend_Session
-
Zend_Session
имеет подход, основанный на использовании adpater для сохранения данных сеанса. A save-handler для БД, но его архитектура позволяет передавать пользовательские обработчики.
-
Zend_Session
поддерживает валидаторы для проверки правильности сеанса. Здесь также есть открытая архитектура, которая позволяет передавать в пользовательские объекты для проверки.
- вы можете заблокировать сеанс, ака сделать его только для чтения
- вы можете предотвратить создание экземпляров нескольких экземпляров одного и того же пространства имен сеанса
- плюс есть еще много возможностей для поиска с помощью
Zend_Session
, таких как восстановление идентификаторов сеансов, выпуск mem-me-cookies, аннулирование mem-me-cookies и т.д.
Ответ 2
Вы можете использовать это в CI: EchoSession.
Ответ 3
Хорошо, после того, как вы выкапывали пользовательскую, не-$ _ основанную на SESSION codeigniter lib, две библиотеки Kohana и Zend (которые используют $_SESSION) и несколько других сессионных библиотек из других проектов, я считаю, что я строю ответ на мой проблема. Что-то, что удовлетворяет всем вещам, перечисленным выше (кроме флэш-данных).
Вот код, если кто-то хочет его использовать или прочитать, создавая собственную библиотеку. Я оставил много комментариев, полностью объяснив все это и хотел бы получить от него некоторые отзывы. Он поддерживает токены, флеш файлы, куки файлы, регенерацию сеанса каждые 5 минут (или все, что вы установили) с удалением старых сеансов и поддержку хранения сеансов в любой базе данных, файловой системе, memchache или любой другой форме, набор.
Ответ 4
Посмотрите Zebra_Session, оболочка для функций обработки сессий по умолчанию PHP, используя MySQL для хранения
-
действует как оболочка для функций обработки сессий по умолчанию PHP, но вместо хранения данных сеанса в плоских файлах он хранит их в базе данных MySQL, обеспечивая лучшую безопасность и лучшую производительность
-
это вставка и кажущаяся замена для обработчика сеанса по умолчанию для PHP: сеансы PHP будут использоваться так же, как и до использования библиотеки; вам не нужно менять какой-либо существующий код!
-
реализует блокировки строк, гарантируя, что данные корректно обрабатываются в сценариях с несколькими параллельными запросами AJAX.
-
только один файл
-
зрелые, высоко оптимизированные и постоянно развитые
-
очень хорошая документация