表单提交无效 - 如何处理它们?

时间:2010-01-24 12:21:36

标签: php mysql model-view-controller error-handling frameworks

我最近在Web App设计方面做了大量关于最佳实践的阅读。我的专业语言是PHP / MySQL。在为我正在开发的应用程序创建MVC架构时,我总是遇到存储无效表单提交的位置的问题(这样用户就不必重新输入数据,并且可以显示有用的错误消息)

通常我已将其作为SESSION变量中的序列化对象存储,但我最新的阅读告诉我会话不好并且从无状态Web开发中拿走。我想到的一些选择是:

  1. 将其存储在数据库中,就像我使用有效输入一样,但将其标记为无效
  2. 将其存储在数据库中的特定于无效表单提交的单独表格中
  3. 将其存储在文本文件中
  4. 他们都有自己的缺点。

    1. 并非所有表单都会导致创建(单个)数据库实体。
    2. 和3.两者看起来与SESSION变量
    3. 的想法相同

      你会推荐什么?

4 个答案:

答案 0 :(得分:5)

根本不要存储它,只是向用户显示错误消息和表单的另一个副本。使用您拥有的数据(在PHP中使用$ _POST / $ _ GET)以使用先前输入的数据预填充表单。

答案 1 :(得分:0)

如果表单是公开的,并且您没有对其进行用户身份验证,则会话结束时您将失去访问者。

  • 所以SESSION是值得考虑的。
  • 如果您有用户,则可以将其作为序列化对象保存到database
  • 另一种方法是使用HTML5 local storage这是最好的方法,但只有少数浏览器支持它。

答案 2 :(得分:0)

1)如果您在循环或负载平衡方案中将应用程序分布在两个或更多服务器上,但是如果您没有计划将应用程序扩展到大于一个服务器,那么您可能会遇到会话问题,那么这将不适用

2)您可以在服务器和浏览器之间的cookie中前后传递数据。可能使用cookie数组来保存数据。这样,如果用户在负载平衡场景中被轮循,那么数据将跟随它们并且状态无关紧要。

答案 3 :(得分:0)

查看zend_form

它处理为您填写的数据。您还可以自动验证和过滤数据