【问题标题】:PHP - Alternatives for storing values than session-cookiesPHP - 存储值的替代方法,而不是 session-cookies
【发布时间】:2019-04-01 21:11:53
【问题描述】:

最近我在这里提出了一个问题,是关于我在修改其他用户会话的会话值时遇到的问题。

问题链接:PHP Session: How to Edit Other user's Session / Editting Session file

情况描述:我试图为每个用户直接编辑存储在服务器中的文件。但是由于保护和文件锁定,我能做的最好的事情是在会话需要任何强制更新时结束会话,方法是使用实​​现 SessionHandlerInterface 的类。 好吧,现在,我想知道我可以存储值的其他类型的方式,而不是 URL 上的会话 cookie 或参数(数据库不计算在内)。有没有办法把它收集到内存中?

示例 1:我用户进入系统并更改系统语言。我将当前语言保存在 Session 中。

示例 2:用户通过实现的功能启用网站的移动版本,并在其会话中存储该网站是移动的。

示例 3:用户已登录,其对象存储在会话中。

【问题讨论】:

  • 最常用的存储用户设置的方法是数据库。您验证用户并创建帐户,然后将设置存储在专用表中。会话是可以过期的临时状态。
  • 我也使用 JS localstorage,但仅用于 UI 元素的状态,例如用户打开的选项卡(jQuery-ui 选项卡)等...喜欢为我的客户做。他们可能甚至不欣赏它....
  • 我去看看 JS LocalStorage,谢谢。关于数据库策略,这个我知道,我只是不想每次都去检查数据库,但还是谢谢你。

标签: php session session-cookies


【解决方案1】:

在会话中保存临时日期是可以的,但请记住,下次它不会在那里。 cookie 也是如此,但对于 cookie,您还必须考虑用户可以更改它们的事实。

在登录时加载数据并将其存储在会话中并不是一个坏主意,尤其是当您必须考虑性能时,实际上没有理由在每次页面加载时从数据库中提取所有数据,除非您只想杀死 MySQL 服务器(一旦您有更多数据和并发用户)。

【讨论】:

  • 会话使用cookies....会话cookie告诉服务器使用哪个会话数据。我相信你知道这一点,但听起来 Session 与 cookie Same goes with cookies, but with cookies 有点不同 - 它是,但它是相关的。不同之处在于会话数据存储在服务器上(通常在文件中),然后与存储在会话 cookie 中的会话 ID 相关联。
  • 是的,我只是想指出 cookie 可以被修改并可能被滥用,更改会话数据要困难得多。
  • 那么,您从不在会话中存储任何敏感信息,同意吗?
  • 存储在会话中并没有那么糟糕,存储在 cookie 中是。用户可以文学编辑或添加他们想要的任何 cookie。对于会话,他们只能在猜到会话 ID 的情况下劫持会话,但他们不能修改会话中的数据,除非他们有权访问服务器上的文件系统。
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多