PHP会话的最佳库

Xeo*_*oss 19 php session codeigniter kohana

我一直在使用CodeIgniter系统一段时间 - 但它有它的缺点.我很感激它教给我的东西,但现在我需要一个新的非codeigniter项目的库,所以我正在寻找关于哪些库有正确而哪些没有的想法.我可能不得不从几个图书馆拿走一些东西来获得我需要的一切.

我只是看了一下Kohana PHP会话库,我喜欢它如何返回使用$ _SESSION超全局的本地PHP方式,而不是强制更改$ this-> session进行数据访问.

无论如何,我想知道是否有其他好的会话库,我可能会搞乱.除了CRUD功能之外,还有很多必须在会话中处理.

  • 支持基于非cookie的会话传递(即Facebook或Flash上​​传者)
  • "Flash数据"仅持续下一页加载,然后自动删除.
  • 使用$ _SESSION或$ this-> session,以便程序员不必更改现有代码.
  • 支持设置新的会话ID(即session_id('new id')),以防您想要在页面中途更改id.
  • 在页面请求结束时保存所有数据,而不是每次添加或删除数据时(保存额外的数据库查询).
  • 支持使用文件,cookie或数据库进行存储.(或memcached会很好)
  • 在会话劫持的情况下尝试拒绝访问.(IP,使用者或指纹)

我花了一些时间来讨论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
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*rig 5

你看过了Zend_Session吗?

  • 您可以使用PHP设置通过URL传递会话标识符
  • 您可以按时间或跳数(请求)使某些会话变量到期
  • 迁移到其他应用程序并不是那么容易,我认为$_SESSION当你使用时弄乱它并不是很好Zend_Session
  • Zend_Session有一个基于adpater的方法来保存会话数据.一个保存处理程序为星展集团是包括在内,但其体系结构允许自定义处理程序中传递.
  • Zend_Session支持验证器检查会话的有效性.在这里,我们也有一个开放式架构,允许您传入自定义对象进行验证.
  • 你可以锁定会话,也称为只读
  • 您可以阻止同一会话命名空间的多个实例的实例化
  • 另外还有更多要发现的内容,Zend_Session例如重新生成会话ID,发出remember-me-cookies,撤销remember-me-cookies等等.