为什么要使用数组来存储PHP的登录信息?

为什么要使用数组来存储PHP的登录信息?,php,database,security,login,Php,Database,Security,Login,这个答案是基于。 Cha使用数组来存储登录信息,这与我的代码不同 这可能会提高搜索登录数据的效率,并使数据保持有序。 但是,我不确定这是否是存储所有登录信息的最佳数据结构 我的解决方案总是在需要信息时从数据库获取passhash,然后在使用后销毁它,而不是将其存储到PHP中的数组中进行会话。它还将所有变量保持为自变量。它大量使用PostgreSQL,而不是通过脚本语言进行数据操作 在PHP中使用数组存储登录数据的优缺点是什么? [编辑] 目前,我使用以下代码从数据库中获取数据 $result

这个答案是基于。 Cha使用数组来存储登录信息,这与我的代码不同

这可能会提高搜索登录数据的效率,并使数据保持有序。 但是,我不确定这是否是存储所有登录信息的最佳数据结构

我的解决方案总是在需要信息时从数据库获取passhash,然后在使用后销毁它,而不是将其存储到PHP中的数组中进行会话。它还将所有变量保持为自变量。它大量使用PostgreSQL,而不是通过脚本语言进行数据操作

在PHP中使用数组存储登录数据的优缺点是什么?

[编辑]

目前,我使用以下代码从数据库中获取数据

 $result = pg_prepare($dbconn, "query22", "SELECT passhash_md5 FROM users
         WHERE email=$1;");                                                                                                                      
 $passhash_md5 = pg_execute($dbconn, "query22", array($_REQUEST['email']));

因此,应该将其更改为PDO以使其更好。研究这一点。

使用基于会话的登录系统保存数据的好处在于它不会对数据库造成太大的冲击。数据库是一个单独的实体,就像连接到数据库和表一样。如果你有数百万页在做这件事,事情可能会变得棘手

另一方面,在会话数组中存储内容时,您有许多小文件,每个文件都是各自独立的实体,每个文件在特定访问者的页面视图中仅访问一次

会话文件也更小,每次都更容易抓取。在数据库中,您必须搜索大量记录(如果您有很多用户),并找到特定的记录。相反,会话只是获取特定会话的特定文件中的数据



从Ryeguy补充的内容开始。我强烈建议反对选择每一条记录,然后在
循环查找正确的用户时执行
。我建议您查看
Where
语句,这样您就可以让数据库只给您与用户用户名匹配的记录。

使用基于会话的登录系统保存数据的好处在于它不会对数据库造成太大的冲击。数据库是一个单独的实体,就像连接到数据库和表一样。如果你有数百万页在做这件事,事情可能会变得棘手

另一方面,在会话数组中存储内容时,您有许多小文件,每个文件都是各自独立的实体,每个文件在特定访问者的页面视图中仅访问一次

会话文件也更小,每次都更容易抓取。在数据库中,您必须搜索大量记录(如果您有很多用户),并找到特定的记录。相反,会话只是获取特定会话的特定文件中的数据



从Ryeguy补充的内容开始。我强烈建议反对选择每一条记录,然后在
循环查找正确的用户时执行
。我建议您查看
Where
语句,这样您就可以让数据库只提供与用户用户名匹配的记录。

这只是偏好的问题,实际上并不重要。不过,一个可能的用途是一种名称空间。假设您在一个页面上有两个表单:登录和注册。显然,至少这些表单都有用户名和密码字段。为了区分这两个字段,您可以使用名为register[username]和login[username](与密码相同)的字段,这样您就可以区分哪个是哪个

另外,请不要在其他问题中使用SQL查询。您是否意识到每次有人登录时都会返回整个用户表?想象一下,如果你的网站上有100000个用户,会发生什么情况。你的登录需要几分钟,你的数据库就会瘫痪。我认为在解决这个问题之前,您应该先学习一些基本的sql


另外,请研究使用PDO而不是过程数据库函数。PDO更干净、更简单,在某些情况下可以更快。

这只是偏好的问题,其实并不重要。不过,一个可能的用途是一种名称空间。假设您在一个页面上有两个表单:登录和注册。显然,至少这些表单都有用户名和密码字段。为了区分这两个字段,您可以使用名为register[username]和login[username](与密码相同)的字段,这样您就可以区分哪个是哪个

另外,请不要在其他问题中使用SQL查询。您是否意识到每次有人登录时都会返回整个用户表?想象一下,如果你的网站上有100000个用户,会发生什么情况。你的登录需要几分钟,你的数据库就会瘫痪。我认为在解决这个问题之前,您应该先学习一些基本的sql


另外,请研究使用PDO而不是过程数据库函数。PDO更干净、更简单,在某些情况下可以更快。

你是指我的答案还是其他问题?我是指你答案中的SQL,但我意识到你只是复制了OP的内容。为了清楚起见,我将进行编辑。只是检查一下以确保我的答案中没有出现错误:)@ryeguy:我已经改进代码一段时间了。请参阅问题中我最近的代码。你会改进什么?你是指我的答案还是其他问题?我指的是你答案中的SQL,但我意识到你只是复制了OP的内容。为了清楚起见,我将进行编辑。只是检查一下以确保我的答案中没有出现错误:)@ryeguy:我已经改进代码一段时间了。请参阅问题中我最近的代码。你会改进什么?