Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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 在会话中存储用户信息还是从mysql中提取?_Php_Performance_Session_Login - Fatal编程技术网

Php 在会话中存储用户信息还是从mysql中提取?

Php 在会话中存储用户信息还是从mysql中提取?,php,performance,session,login,Php,Performance,Session,Login,选项1: 登录后,使用基本用户信息(姓名、用户ID、帐户权限等)填充会话。 赞成:通常用户信息都不会改变,所以不需要数据库调用。由于会话已经被调用,它还不如将信息存储在那个里 Con:当数据库中的用户信息发生更改时,必须进行会话更新 选项2: 仅存储uid,每次提取信息 赞成:没有会话更新的问题。信息总是最新的 Con:MySQL查询用户数据(用户基本信息、权限等) 我看到一些帖子声称session方法也比MySQL快(尽管我怀疑它会有什么真正的区别)。 问:什么可能是最好的方式,为什么

选项1: 登录后,使用基本用户信息(姓名、用户ID、帐户权限等)填充会话。

  • 赞成:通常用户信息都不会改变,所以不需要数据库调用。由于会话已经被调用,它还不如将信息存储在那个里
  • Con:当数据库中的用户信息发生更改时,必须进行会话更新
选项2: 仅存储uid,每次提取信息

  • 赞成:没有会话更新的问题。信息总是最新的
  • Con:MySQL查询用户数据(用户基本信息、权限等)
我看到一些帖子声称session方法也比MySQL快(尽管我怀疑它会有什么真正的区别)。
问:什么可能是最好的方式,为什么?我的直觉告诉我#2…

将你的数据加载到会话中(没有必要为了大多数静态信息而敲打你的数据库),如果数据库有更新,请同时更新你的会话。

你可以将两者结合使用,加载只能由用户更改的数据(姓名或任何个人信息)在会话中,从数据库中获取其他用户(如管理员)可以更改的数据(如权限)。

选择选项2并添加一些安全功能。会话劫持是一件严肃的事情。夏洛特,谢谢你的想法。你有理由选择2号吗?会话劫持是另外一件事。只需谷歌“php会话劫持”。“XSS”这个话题也很有趣,我对它们都很了解。会话劫持可能发生在我问题的选项1和选项2中,所以这无关紧要。你做什么并不重要。这两种方法各有利弊。而开发者只是担心这一点的人,用户并不真正关心。只要你实现了你选择正确的方法,你就可以做任何你想做的事情。我还将跟踪MySQL中的会话,以禁止同时登录、黑客攻击、统计数据等。如果管理员调整用户,则会将该会话标记为需要更新。