Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用或不使用会话\设置\保存\处理程序?_Php_Mysql_Database_Authentication_Session - Fatal编程技术网

Php 使用或不使用会话\设置\保存\处理程序?

Php 使用或不使用会话\设置\保存\处理程序?,php,mysql,database,authentication,session,Php,Mysql,Database,Authentication,Session,我正在尝试用php创建一个用户登录系统 我一直在研究这篇文章()作为解决这个问题的一种方法 在上面的文章中,作者结合使用$\u会话和他自己的自定义数据库表来存储用户信息 然而 我还遇到过许多文章,建议使用session\u set\u save\u处理程序来配置php会话,以便本机使用数据库。(我想这是一种较新的技术。) 我想知道:如果我计划在数据库中设置一个“activeUsers”表来记录会话数据,那么使用会话\设置\保存\处理程序是否更有意义?(似乎如果我使用数据库存储一些会话信息,我还不

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

我一直在研究这篇文章()作为解决这个问题的一种方法

在上面的文章中,作者结合使用$\u会话和他自己的自定义数据库表来存储用户信息

然而

我还遇到过许多文章,建议使用session\u set\u save\u处理程序来配置php会话,以便本机使用数据库。(我想这是一种较新的技术。)

我想知道:如果我计划在数据库中设置一个“activeUsers”表来记录会话数据,那么使用会话\设置\保存\处理程序是否更有意义?(似乎如果我使用数据库存储一些会话信息,我还不如省去文件系统会话。)

或者将php会话保留为默认的文件系统形式,然后根据我的自定义db表对用户登录进行x检查,有什么好处


(提前)感谢您的帮助。

首先在数据库中存储会话数据可能有点棘手,但一旦您设置了一个类或函数来实现这一点,那么您就可以获得比文件系统存储更多的潜在优势。问题是这些优势是否是您的系统所必需的。我认为,将会话数据存储在数据库中最常见的原因包括:

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

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

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

DB interaction:根据会话数据的角色和应用程序使用它的方式,如果会话数据和相关信息都在数据库中,则检索会话数据和相关信息可能会更容易

需要考虑的是,可以通过存储附加信息(例如IP地址、登录和注销时间)来增强会话信息。这种信息在防止会话劫持时可能有用。


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

如果您使用它,您需要制作自己的垃圾收集器。

感谢Mike的回答。查看这4个原因,没有一个适用于我的情况。因此,我不担心使用传统的会话-除了-我计划创建一个db表“activeUsers”无论如何。我仍然不清楚让会话以本机方式使用数据库是否更有意义,如果某些用户的“会话”信息将以任何方式进入数据库。@特拉维斯:听起来你不需要在数据库中存储会话数据,但如果这样做,你的应用程序可能会变得更干净。你可以试试pac如果不想编写自己的处理程序,请使用kage。