Bra*_*ace 23
它们用于传递表单提交时所需的数据.其中一个更常见的情况是允许用户编辑某些现有条目的表单.您需要知道他们正在编辑哪个条目,以便您在提交表单时可以更新数据库中的正确行.用户不需要编辑(甚至知道)条目的ID,因此隐藏字段在此处工作良好.
URL参数:这也可以通过将参数构建到表单提交到的URL中来完成:
<form action="save.php?entry_id=1234">
Run Code Online (Sandbox Code Playgroud)
但这意味着您必须正确处理构建URL并自行转义数据,并且URL服务器接受的长度是有限的,因此它可能不适用于较长的数据.因此,通常使用隐藏的表单字段是更容易的方法.
会话变量:当编辑页面加载时,您将条目ID存储在会话变量中,然后在保存更改的页面上检索它.尽管如此,这更容易搞砸了; 设置和维护会话可能需要在几个不同的地方添加代码,然后他们的会话可以在加载和保存之间到期,如果他们打开了多个窗口或标签,你必须确保它有效,你必须确保它当他们回击/前进时不做奇怪的事情.由于所有这些潜在的陷阱,它不是解决这个问题的好方法 - 传递id与提交的数据是更加健壮.
Cookie:在许多语言/框架中使用Cookie跟踪会话,因此它们基本上是相同的解决方案.即使会话被其他方法跟踪,但是陷阱与会话变量相同.