【问题标题】:Where should be data stored? Session variables OR Hidden fields?数据应该存储在哪里?会话变量或隐藏字段?
【发布时间】:2013-12-20 18:07:29
【问题描述】:

我正在构建一个网络应用程序,该应用程序基本上在 PHASE 1 中进行预订。 我计划分 4/5 步完成预订。一是检查设备是否准备好,二是查看设备的分配情况,三是获取客户信息,四是支付信息。

我只想知道数据是如何存储的,直到我们将所有数据存储在数据库中的最后一页。到那时,如何将数据从一页移动到另一页。

哪种技术最好? 如果有任何其他技术可以逐页存储信息,请我需要知道我的项目。 我还需要保护这些信息不被黑客入侵。

我使用的是 PHP,框架是 Codeigniter

【问题讨论】:

  • <input type="hidden" /> 字段无法保存数据。提交表单时,它们会将数据发送到服务器,如果您不持久保存它,它就会永远消失。然而,会话是跨请求维护的(除非另有配置)。

标签: php codeigniter


【解决方案1】:

主要基于意见,但各有利弊。

存储在 $_SESSION 中:

  • 专业版: 允许您存储您不一定想要回馈给用户的私有数据,即:应用程序内部数据或用户的私有数据不应返回页面,例如信用卡详细信息、密码和其他个人信息。
  • 缺点:会话将在其配置的超时后过期,并且用户将丢失他们的工作。

存储在隐藏字段中:

  • 基本上颠倒了 $_SESSION 的利弊。
  • 恕我直言,使用像这样的隐藏字段是个大杂烩。

理想的方法是使用custom session handler 来存储会话数据,以在会话到期时不会丢失。

【讨论】:

    【解决方案2】:

    如果您正在构建一个多部分表单,我会将每个部分的信息存储在 MySQL 数据库中,这将使最终用户能够保存并稍后返回,因为会话将过期。

    【讨论】:

    • 会话不会过期,除非浏览器关闭。不是吗??您是说将每个页面表单保存在数据库中吗??
    • 这一切都取决于会话的到期时间。在任何一种情况下,存储在 mySQL 中对于小型站点来说都很好,但不能很好地扩展 - 将 $_SESSION 放入 memcache 并不经常将 memcached 会话数据刷新到 mySQL 以避免瓶颈。
    • 会话过期通常默认为 1440 秒或 24 分钟不活动,即用户在页面打开的情况下进入 AFK。因此,如果他们填写了 4 页信息中的 3 页,如果这些信息都存储在 $_SESSION 变量中,然后他们的孩子开始打架或其他任何事情,并且他们被拉走 30 分钟,那么除非已配置服务器,否则该数据就会失效否则。
    【解决方案3】:

    使用会话。隐藏字段可以通过 Google Dev Tools 或 Firebug 或任何其他工具修改并暴露给用户。所以最好使用Sessions。

    【讨论】:

    • 在服务器上保护这些数据的安全措施是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多