PHP的良好设计和流程 - 提交后保留表单值

mau*_*ris 4 php forms

我一直在搜索关于SO的这个主题,而且找不到这个主题非常头疼.

我已经开发了一段时间的网站,并发现当前的问题是在回发后,如果提交有任何错误并且用户重定向回到表单,则表单值全部消失.

是否有一种好的方法/流程/设计来实现,以便在回发后保留值?另外,我需要考虑默认值,数据库中的值和回发中的值 - 那么哪一个优先?

此外,我希望遵循Post-Redirect-Get并使用相同的表格.

我想到的是:

  1. 使用唯一ID标识每个表单
  2. 提交后,使用表单的唯一ID将所有数据保存到会话中
  3. 再次请求表单时,显示表单中的值.
  4. 如果提交成功,请清除会话中的数据.

lee*_*ers 10

这是我通常的工作流程:

POST失败后,我立即输出表单,而不重定向到初始表单页面.使用任何体面的模板系统都很容易实现.然后,您可以使用POST数据重新填充表单.

如果表单绑定到视图(作为MVC模式的一部分),您可以初始化默认值并从数据库加载模型(填充下拉菜单等) - 重用整个显示/前端逻辑.

如果当前代码库使用重定向,则可以include()在回发处理的偶然点处简单地获得所需的表单/视图文件.

那么它是怎样工作的?简而言之:

  • 从模型,数据库和配置中定义初始默认值和用户选择选项.
  • 使用用户提交的$ _POST数据覆盖任何默认值.
  • 消毒产量
  • 重复,直到验证用户输入.