gpt4 book ai didi

php - 使用,还是不使用,session_set_save_handler?

转载 作者:可可西里 更新时间:2023-11-01 08:22:33 33 4
gpt4 key购买 nike

我正在尝试用 php 创建一个用户登录系统。

我一直在研究这篇文章 ( http://www.evolt.org/node/60384 ) 作为解决这个问题的一种方式。

在上面的文章中,作者使用$_SESSION和他自己定制的数据库表的组合来存储用户信息。

然而...

我也看到过许多推荐使用 session_set_save_handler 来配置 php session 以在本地使用数据库的文章。 (我想这是一种较新的技术。)

我想知道:如果我打算在数据库中设置一个“activeUsers”表以无论如何记录 session 数据,那么使用 session_set_save_handler 是否更有意义? (看来如果我正在使用数据库来存储一些 session 信息,我也可以免除文件系统 session 。)

或者以默认文件系统形式保留 php session ,然后根据我的自定义数据库表对用户登录进行 x 检查是否有一些优势?

(提前)感谢您的帮助。

最佳答案

在数据库中存储 session 数据一开始可能有点棘手,但是一旦您设置了一个类或函数来执行此操作,您就会获得一些优于文件系统存储的潜在优势。问题是您的系统是否需要这些优势。我认为,这些是将 session 数据存储在数据库中的最常见原因之一:

安全性:如果使用共享主机, session 数据可能保存在系统其他用户可以访问的磁盘区域中。这可能会对您的应用构成安全风险。

可扩展性:如果您的应用程序由多个服务器(例如一个服务器场)处理,您需要确保来自同一客户端的多个请求,这些请求可能由不同的服务器处理,每个接收相同的 session 数据。如果 session 数据在数据库中,这很容易做到。

性能:数据库存储可能比文件系统存储有更高的性能,但这在很大程度上受服务器配置的影响。

数据库交互:根据您的 session 数据的作用以及您的应用程序如何使用它,如果 session 数据和相关信息都在数据库中,检索它们可能会更容易。 p>

还有一点需要考虑的是,您可以通过存储附加信息来增强 session 信息,例如 IP 地址、登录和注销时间等。在尝试防止 session 劫持时,此类信息可能很有用。

因此,除了可扩展性问题之外,我认为这一切都非常主观。您需要权衡实现数据库 session 存储所需的额外工作以及可能带来的好处。

关于php - 使用,还是不使用,session_set_save_handler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140060/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com