隐藏的输入字段与Session Vs Cookie

时间:2016-09-10 06:19:56

标签: architecture global-variables

将数据存储在以下方面的优缺点是什么:

  1. 隐藏的输入字段
  2. Cookie /本地存储
  3. 服务器端会话

1 个答案:

答案 0 :(得分:8)

这三者并非互相排斥。

隐藏输入

隐藏的输入只是发送给客户端的HTML。它不会出现在最终用户的页面上,但客户端可以完全访问它。这意味着用户可以通过浏览器中的查看源功能查看它(就像他们可以看到来自服务器的任何HTTP响应一样)。

饼干

Cookie只是另一个由cookie名称/值对组成的HTTP标头,可以在每个请求/响应中在客户端和服务器之间来回发送。通过从浏览器的开发人员工具中检查HTTP标头,最终用户也可以看到这一点。

会话

术语会话本身是可疑的,因为可以有客户端会话(存储在客户端的浏览器中,与HTML5 Sessions一样)或者它可以是一个服务器端会话。

在PHP中,您可能引用的session functions将会话数据存储在服务器上,但只向客户端发送与其会话关联的标识符。这是session_id,通常以cookie的形式发送回客户端。

这三件事通常一起一起工作以完成各种事情。所以问,哪个更好,就像问我的车哪个部分更好;发动机,车轮或转向柱?

为了了解事情是如何变得更好,你必须能够将事物与其他事物联系起来。否则,问题毫无意义。

如果你问什么时候使用东西是合适的,那么答案取决于你的需求。

  1. 会话
    • 使用服务器端会话存储您不希望客户端直接控制或访问的信息,但必须保留这些信息以便于应用程序状态。这通常被视为临时或临时存储,因此对您的应用程序代码起作用并不重要,但必须在HTTP请求之间维护用户的状态。请记住,PHP会话默认依赖于cookie。所以问题不是我使用cookie或会话,而是更多......通常用于什么会话。
  2. 缓存
    • 使用Cookie存储您希望客户端在请求之间保留的临时值。当您发送cookie时,浏览器将保持该cookie,直到到达 Expire 标头或最终用户决定删除它。因此,这对于存储小的,短期数据非常有用,这些数据主要仅对UI组件有用,但在加载时需要通知服务器。这可能是语言设置,打开/关闭音频,颜色偏好等...
  3. 隐藏输入
    • 当您不需要最终用户查看页面上的输入字段或与之交互时,使用隐藏输入,但服务器仍希望发送该值。这通常用于CSRF令牌之类的东西,或服务器期望返回的任何值,但用户不需要知道或预先提供。这些值通常由服务器在初始页面加载时发送。
  4. 当问题从" 改变时哪个更好" to" 每个"的用途是什么?答案通常会变得更有意义,因为你 更有可能使用所有这些