保持Web应用程序表单中的主键值以进行更新

时间:2012-05-10 11:22:34

标签: php oop web-applications

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

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

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

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

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

RGDS Rifky

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

三种方式:

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

  • 您可以在获取更新网址的get字段中输入id。(如
    update.php?pk_id=17)因此,当您将表单发布到自身时,您仍然可以 得到身份。

  • 如果要隐藏,可以在会话中存储ID。

答案 2 :(得分:1)

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

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

顺便提一下,在修改数据时,使用POST而不是GET是一种很好的形式 - 因此隐藏字段在风格上比URL参数更好。

使用会话有点痛苦 - 您必须担心负载平衡和Cookie过期,但攻击者更难以更改您不希望他们更改的数据。

答案 3 :(得分:-1)

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