php-使用还是不使用session_set_save_handler?

我正在用php创建用户登录系统.

我一直在研究这篇文章(http://www.evolt.org/node/60384),以此作为一种解决方法.

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

然而…

我也遇到过许多文章,建议使用session_set_save_handler配置php会话以本地使用数据库. (我猜这是一种较新的技术.)

我想知道:如果我打算在数据库中设置一个“ activeUsers”表来记录会话数据,那么使用session_set_save_handler有意义吗? (似乎无论如何我正在使用数据库来存储一些会话信息,我也可以省去文件系统会话.)

还是将php会话保留为默认文件系统形式,然后根据我的自定义db表对用户登录进行x检查,是否有一些优势?

在此先感谢您的帮助.

解决方法:

首先,将会话数据存储在数据库中可能有点棘手,但是一旦设置了类或函数来执行此操作,那么与文件系统存储相比,您将获得一些潜在的优势.问题是您的系统是否需要这些优势.我认为,这些是将会话数据存储在数据库中的最常见原因之一:

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

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

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

数据库交互:根据会话数据的角色以及应用程序的使用方式,如果会话数据和相关信息全部在数据库中,则检索起来可能会更容易.

还需要考虑的其他事情是,您可以通过存储IP地址,登录和注销时间等其他信息来增强会话信息.尝试防止会话劫持时,此类信息可能很有用.

因此,除了可伸缩性问题之外,我认为这都是非常主观的.您需要权衡实现数据库会话存储所需的额外工作,并可能带来好处.

上一篇:javascript-jQuery身份验证


下一篇:python-Django 1.2:登录问题(GET参数:next)