【问题标题】:keeping the primery key value in web application form for updation在 Web 应用程序表单中保留主键值以进行更新
【发布时间】:2012-05-10 11:22:33
【问题描述】:

我正在开发一个 php 网络应用程序。

我有点好奇人们在检索对象时如何在 Web 表单中存储对象的主键值,以便他们可以通过使用检索到的键引用同一记录来更新相关记录?

例如。我检索 pk_id=10 的员工记录。当用户对对象进行更改时,我们需要更新 pk_id 10 的对象。所以我需要将 pk_id 存储在表单中。

我想将值存储在隐藏的输入字段中。这会是个问题吗?

专业人士如何做到这一点?

rgds 鲁莽

【问题讨论】:

  • 这不是什么大问题,如果你不想把它放在隐藏字段中,你可以将pk_id存储到会话中

标签: php oop web-applications


【解决方案1】:

隐藏输入字段很好,也是一个很好的解决方案。

将其存储在会话中也是一种选择,但如果您已经经常使用会话,您也可以使用隐藏输入,但会话几乎是最安全的选择。

一个可能的问题是,有人可能会在提交表单之前更改其 html 表单隐藏输入中的值;不过这不太可能。

【讨论】:

    【解决方案2】:

    有两种方式 - 由@marvin(即客户端)标识的方式,以及在会话中。

    如果您使用客户端标识,请非常非常小心。在您的示例中,如果某人知道他们的主键,将他们的薪水设置为一百万美元将是非常容易的。 @Thomas Hudspith-Tatham 说这不太可能——我不同意,尤其是对于一个面向公众的网站。在互联网的早期,有几个电子商务商店不得不以 0.01 美元的价格接受高端产品的订单,因为该应用程序使用客户端机制在页面之间传输数据。

    顺便说一句,在修改数据时,最好使用 POST,而不是 GET - 因此隐藏字段在风格上比 URL 参数更好。

    使用会话有点麻烦 - 您必须担心负载平衡和 cookie 过期,但攻击者要更改您不希望他们更改的数据要困难得多。

    【讨论】:

      【解决方案3】:

      三种方式:

      • 使用hidden input,这就是它们的用途。

      • 你可以在get字段中携带id来更新url。(like
        update.php?pk_id=17)所以当你将表单发布到自己时,你仍然可以 获取 ID。

      • 如果你想隐藏它,你可以在会话中存储 id。

      【讨论】:

        【解决方案4】:

        是的。你说的对。将主键 ID 存储在隐藏字段中是个好主意。如果您愿意,也可以从 URL 传递相同的内容。 (获取参数)

        【讨论】:

        • -1 用于 GET 参数。这可能会导致非常不利的情况。
        • 我不知道这种不良情况。我是新来的。您能解释一下您所说的不良情况吗?
        • 有人可能会自己更改网址或意外使用旧网址。您为您的用户提供了很多控制权,他们也可能采取非常恶意的行为
        • 假设对象 id 为 10。我在 URL 中输入了 1。会发生什么?它将更新其他对象信息。将其放入会话或隐藏表单输入是一般做法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        • 2017-04-27
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多