我对代码点火器框架中的会话机制有一些疑问:
1.它与使用cookie完全一样吗?因为我所看到的是所有会话数据都作为cookie发送回浏览器。所以当另一个请求发出时,所有数据都会与cookie会话一起发回。
2.会话数据被发送回浏览器。即使它是加密的,我仍然可以识别所有会话项,因此不容易将该项的加密值更改为加密值,例如将名为loged_in的项从false更改为true
3.在数据库中保存会话数据时,会话数据是否自动删除?
4.为什么在代码点火器文档中写入"会话ID永远不能更新,它们只能在创建新会话时生成"。所以当在cookie会话中重新生成会话ID时,我们如何将它与存储在数据库中的会话ID进行比较?
答案 0 :(得分:0)
Session类不使用本机PHP会话。在CodeIgniter中初始化会话时,CI会话库会生成cookie。因此,CodeIgniter中的实际会话是Cookie。
在config.php文件上设置加密密钥,我确信这将解决您遇到的问题。即使CI会话文档说 - “即使您没有使用加密会话,也必须在配置文件中设置加密密钥,用于帮助防止会话数据操作。”
< / LI>我个人从未尝试过DB Session,但YES CI删除了存储在DB中的过期会话。 CI文档说 - “ Session类具有内置的垃圾收集功能,可以清除过期的会话”,这几乎解释了这个问题。
CI已经处理好这种情况。重新生成会话ID时,CI将使用新会话ID替换存储在DB中的旧会话ID。如果你可以看一下Session库;检查 sess_update()方法以获取更多详细信息,您可以看到CI如何更新数据库中的新会话ID。