在服务器端验证失败后预填写表单的正确方法,涉及两个单独的php文件


Proper way to pre-fill form after server-side validation failure, involving two separate php files

一个非常基本的问题。我在一个文件form.php中有一个表单,我将其发布到另一个文件processForm.php,该文件进行服务器端验证和处理。我没有使用任何框架。

现在,在表单验证失败的情况下,我需要再次显示表单,并预先填充所有值,而不使用processForm.php的javascript history.back()。什么是干净和正确的方法来做到这一点,以便我在form.php中再次提供所有发布的值,并可以预填充它们?

如果表单提交发生在同一页面上,这很容易,但这就是我如何得到这个,我不能使提交到同一页面。那么你会怎么做呢?将值存储在会话中?旋度职位?使用GET发送值到form.php ?

为什么或为什么不?

去阅读MVC模式。

如果不实现模型、视图和控制器,你就不能实现交互式程序——关键是你的代码应该结构化,将这三个关注点作为一个单独的实体来实现,可以是函数(或函数树)、类(或类树)或文件。模式中的三个组件应该在结构上进行分组。

所以如果你想让用户在第一页成功填写表单后到达(比如说)第二页,但在表单验证失败时留在第一页,那么实现这一点的一个简单方法是让第一页实现模型视图和控制器,即填充/生成表单并成为表单的目标。然后,如果它收到来自表单的有效请求,则发送重定向到第二个页面。

这避免了每个页面都需要加载和处理前一页以及当前页面的MVC代码,尽管这种方法减少了与浏览器的往返次数,这有助于提高性能。

注意:使用POST并不排除在URL中使用变量——实际上,我建议使用GET变量来指示您希望操作的数据,并使用POST变量来显示应该如何操作它们。