一个非常基本的问题。我在一个文件form.php
中有一个表单,我将其发布到另一个文件processForm.php
,该文件进行服务器端验证和处理。我没有使用任何框架。
现在,在表单验证失败的情况下,我需要再次显示表单,并预先填充所有值,而不使用processForm.php
的javascript history.back()
。什么是干净和正确的方法来做到这一点,以便我在form.php
中再次提供所有发布的值,并可以预填充它们?
如果表单提交发生在同一页面上,这很容易,但这就是我如何得到这个,我不能使提交到同一页面。那么你会怎么做呢?将值存储在会话中?旋度职位?使用GET
发送值到form.php
?
为什么或为什么不?
去阅读MVC模式。
如果不实现模型、视图和控制器,你就不能实现交互式程序——关键是你的代码应该结构化,将这三个关注点作为一个单独的实体来实现,可以是函数(或函数树)、类(或类树)或文件。模式中的三个组件应该在结构上进行分组。
所以如果你想让用户在第一页成功填写表单后到达(比如说)第二页,但在表单验证失败时留在第一页,那么实现这一点的一个简单方法是让第一页实现模型视图和控制器,即填充/生成表单并成为表单的目标。然后,如果它收到来自表单的有效请求,则发送重定向到第二个页面。
这避免了每个页面都需要加载和处理前一页以及当前页面的MVC代码,尽管这种方法减少了与浏览器的往返次数,这有助于提高性能。
注意:使用POST并不排除在URL中使用变量——实际上,我建议使用GET变量来指示您希望操作的数据,并使用POST变量来显示应该如何操作它们。