PHP会话的最佳库 [已关闭]
2022-08-30 21:18:36
我已经使用CodeIgniter系统一段时间了 - 但它有缺点。我很感激它教给我的东西,但现在我需要一个新的非代码标记项目的库,所以我正在寻找关于哪些库有正确和哪些没有的想法。我可能不得不从几个图书馆中获取一些东西才能获得我需要的一切。
我刚刚看了一下Kohana PHP会话库,我喜欢它如何返回到使用$_SESSION超全球的本机PHP方式,而不是强制更改为$this>会话以进行数据访问。
无论如何,我想知道是否有其他好的会话库,我可能会搞砸。除了CRUD在功能上之外,会话中还必须处理很多事情。
- 支持非基于cookie的会话传递(即Facebook或Flash上传者)
- 仅在下一页加载时持续存在的“Flash数据”,然后被自动删除。
- 使用 $_SESSION 或 $this->session,以便程序员不必更改现有代码。
- 支持设置新的会话ID(即session_id(“新id”)),以防您想要在页面中途更改ID。
- 在页面请求结束时保存所有数据,而不是每次添加或删除数据时保存(保存额外的数据库查询)。
- 支持使用文件、Cookie 或数据库进行存储。(否则膜卡奇会很好)
- 在会话劫持的情况下尝试拒绝访问。(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
}