Подтвердить что ты не робот

Лучшая библиотека для сеансов 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
}
4b9b3361

Ответ 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.

  • только один файл

  • зрелые, высоко оптимизированные и постоянно развитые

  • очень хорошая документация