2011-11-16 85 views
0

在http中处理表单的正确方法是什么?处理表单的正确方法

上/ SomePage的

<form method="POST" action="/someaction.html"> 
    <input type="text" name="name"> 
    <input type="submit"> 
</form> 

假设,即用户没有填写 “姓名”。所以我应该产生一些错误。我应该怎么做:

第一种方法

  1. POST/someaction和302重定向到/ posterror错误= 1
  2. GET/posterror错误= 1和200 OK与有关错误的内容?并形成

  1. POST/someaction和200 OK与有关错误和形式

三含量

  1. POST/someaction,记得在会议形式错误和302重定向到/ posterror
  2. GET/posterror和200 OK与有关错误的内容和形式

哪一个是正确的方法是什么?也许是第四个?

回答

1

正确的做法被称为post/redirect/get,由维基百科中描述:

邮政/重定向/获取(PRG)是Web开发人员 常见的设计模式,以帮助避免某些重复的表单提交,并允许用户代理 与书签和刷新更直观地表现按钮。

+0

谢谢。那么适当的GET请求呢? URL查询或会话中的参数错误?用表单或错误获取页面?你有什么意见? – Oroboros102

+0

我通常会使用flashdata(仅持续一页刷新的会话数据)在窗体顶部显示错误。如果页面刷新,错误消失,但如果再次提交表单,错误将在必要时重新出现,或者如果全部修复,则会消失(以及用户重定向)。 – Matthew

0

我会建议有某种验证使用javascript在发送之前进行。 那么当然你也应该验证服务器端的表单输入。至于是否使用重定向,我不知道那里有任何事实标准​​。

如果你想跟着使用HTTP协议,因为它是指你应该有一个信息的消息发送4xx状态码回(例如400错误的请求)说的话是错误的输入。

+0

“_400坏请求 - 由于语法错误,请求无法完成” - 请不要认为400是合适的状态。 – Oroboros102

0

是利用客户端验证的方程?使用javascript,您可以避免发布表单(并减少服务器端处理),并让客户端(用户端:浏览器)执行验证。你有什么其他验证?

下面是基本的验证一个链接,你可以申请使用javascript:

http://www.w3schools.com/js/js_form_validation.asp

+1

客户端验证可以为用户提供方便,但绝对不可信。用户可以发送他们喜欢的任何HTTP请求;没有什么会迫使他们运行你在表单页面提供的JS。 – N3dst4

1

第三个。它允许用户安全地进行刷新或为页面添加书签。第一个虽然相似,但要求你通过网络来回传递表单的内容,这是效率低下的。由于轻微的改进,你可能会考虑:

  • 重定向回的形式,而不是一个单独的错误页面,给用户一个机会改正自己的错误
  • 而不是仅仅存储在会话中的错误数据,用一些唯一的ID存储它,然后将其包含在重定向url中。这样用户可以在两个浏览器窗口中打开该页面,并且他们不会踩到彼此的脚趾。
  • 在一段设定的时间后,或最终正确提交表格时,将存储的错误过期。
+0

将数据存储在会话中或包含在URL查询中 - 这对我来说是一个重要问题。我认为,在URL中存储错误代码可能是个坏主意 - 安全问题和用户可以用错误消息为书签添加书签。 – Oroboros102

相关问题