2010-06-04 90 views
3

我想知道处理表单处理的最佳做法是什么?处理表单处理的最佳做法

在我来说,我做这样的事情:

  • 如果用户没有submited形式
    • 显示形式
  • 其他
    • 如果有是表格错误
      • 显示错误
      • 再次
    • 别的
      • 显示一则成功消息
      • 显示形式
      • (和)显示形式再次

我问题是我重复表单的HTML代码3次,我不认为这是一个很好的做法(长文件,难以阅读)。

+0

您使用什么技术来处理表单? – skyfoot 2010-06-04 15:03:41

+0

我通常使用PHP。 – Psyche 2010-06-04 15:18:13

+1

我已将PHP标记添加到问题中。您可能会以这种方式获得更具体的回复。 – 2010-06-04 18:07:33

回答

-1

鉴于在每种情况下您都显示表单,您是否可以默认显示相同的表单,然后添加错误消息等附加内容?

您还在使用哪些其他技术?

2

您的工作流看起来正确。我不明白为什么你需要重复表单的HTML代码。重组您的代码,以便成功消息显示在表单顶部(如果存在),并且错误显示在输入框旁边(如果存在)。在(PHP?)文件的顶部,处理所有内容并设置将在下面的表单中显示的变量。

1

您可以使用相同的表单代码,并在窗体上方显示错误/成功消息。

0

您可以通过以下两种打破你的脚本:

  • 一个显示形式

  • 一个获取表单数据,对其进行检查并返回错误或成功消息

5

你应遵循Post/Redirect/Get模式来防止表单提交重复。

您可以用这种方式整合,错误处理和成功的消息显示该模式:

if POST_REQUEST: 
    ERRORS = VALIDATE_FORM() 
    if ERRORS IS EMPTY: 
    PROCESS_REQUEST 
    REDIRECT TO <Successful URL> 

DISPLAY_FORM(ERRORS) 

这些都是可能的方案:

  • 获取的形式网址:
    POST_REQUEST是假的,所以你只是显示没有错误的表单(所以一个正常的空表格)
  • 表单提交有错误:
    POST_REQUEST是真实的,你验证表单。在这种情况下,ERRORS变量中可能会返回一些错误(可能是一个数组)。 ERRORS变量为而不是为空,因此您只需显示带有错误消息的表单
  • 正确的表单提交:
    POST_REQUEST为true并验证表单。由于这次表单是有效的ERRORS变量将是空的,你执行重定向到<成功的URL >这将显示成功的消息给用户。

使用此模式可防止用户在正确提交表单后刷新页面时再次发送表单数据。

Django Framework建议以这种方式处理表单。

的一个好方法,以处理形式显示错误是有VALIDATE_FORM()函数返回一个阵列的错误,其中每个键是字段的名称和相应的项目是错误消息的数组。

一般形式错误(不与指定字段关联)应该有一个emtpy键。

这种方式,你可以,例如,显示错误,这种方式在DISPLAY_FORM()函数:

<ul class="errors"><?php foreach(ERRORS['field_name'] as $error) { echo "<li>$error</li>"; } ?></ul> 
<input name="field_name" type="text" ... /> 
1

看,这是一个鸡蛋一样简单!
只要把同样的动作在不同的顺序:

  • 如果用户submited形式
    • 如果有形式错误
      • 填写错误阵列
    • 其他
      • 个记录数据到数据库
      • 302 regirect的,因为它需要通过HTTP标准
      • 出口
  • 如果我们有一些错误
    • 显示错误
    • 填充表单字段值
  • 显示表格

如果你不能没有一个成功的消息(在我看来相当无用的东西),你可以使用get参数(少首选)或会话(最佳)

哎呀它显示!这是一个旧的。

0

我还会注意到,使用模式和HTML5是避免使用无效数据提交表单的一个很好的做法。