我一直在使用CodeIgniter系统一段时间 - 但是it has它是short comings。我很感激它教给我的东西,但现在我需要一个新的非codeigniter项目的库,所以我正在寻找关于哪些库有正确而哪些没有的想法。我可能不得不从几个图书馆拿走我需要的东西。
我刚看了一下Kohana PHP session库,我喜欢它返回到使用$ _SESSION超全局的原生PHP方式,而不是强制更改为$ this->会话进行数据访问。 / p>
无论如何,我想知道是否有其他好的会话库,我可能会搞乱。除了CRUD之外,还有许多必须在会话中处理。
我花了一些时间来讨论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
}
答案 0 :(得分:5)
你看过Zend_Session
吗?
$_SESSION
Zend_Session
时效果不是很好
Zend_Session
有一个基于adpater的方法来保存会话数据。包含了save-handler个数据库,但其架构允许传入自定义处理程序。Zend_Session
支持验证程序检查会话的有效性。在这里,我们也有一个开放式架构,允许您传入自定义对象进行验证。Zend_Session
,例如重新生成会话ID,发出记住我的Cookie,撤销记住我的Cookie等等。答案 1 :(得分:3)
您可以在CI中使用此功能:EchoSession。
答案 2 :(得分:3)
好的,在深入研究自定义的非基于$ _ SESSION的codeigniter lib之后,两个Kohana和Zend库(使用$ _SESSION)以及其他项目中的其他几个会话库我相信我为我建立了答案问题。满足我上面列出的所有内容的东西(闪存数据除外)。
Here is the code如果有人想在构建自己的库时使用它或阅读它。我留下了很多评论,彻底解释了整个事情,并希望得到一些反馈。它支持令牌,基于闪存的上传者,cookie,会话每5分钟(或任何你设置)的会话重新删除旧会话,并支持在任何数据库,文件系统,memchache或任何其他你想要的表单中存储会话集。
答案 3 :(得分:3)
看看Zebra_Session, a wrapper for PHP’s default session handling functions, using MySQL for storage
充当PHP默认会话处理函数的包装器,但不是将会话数据存储在平面文件中,而是将它们存储在MySQL数据库中,从而提供更好的安全性和更好的性能
它是PHP默认会话处理程序的简单替代品:PHP会话的使用方式与使用库之前的方式相同;您无需更改任何现有代码!
实现行锁定,确保在具有多个并发AJAX请求的场景中正确处理数据
仅限一个文件
成熟,高度优化且不断发展