Skip to content

form表单常见问题 #3

Open
Open
@Leon68

Description

@Leon68

1.form表单有什么作用?有哪些常用的input标签,分别有什么作用?

form表单主要用来收集用户输入信息并传输给服务器。
常用的input标签:
input标签使用不同的type属性值来实现不同类型。

type值 input作用
text 单行文本输入
password 密码输入,字符会被掩码
radio 单选框
checkbox 复选框
file 文件上传
submit 提交
reset 重置
button 定义可点击的按钮
hidden 定义隐藏的输入字段
image 定义图像形式的提交按钮

2.post和get方式的区别

POST和GET是使用HTTP协议在客户机和服务器之间进行请求-响应时,两种最常用到的方法。

区别参考

1.GET在浏览器回退时是无害的,而POST会再次提交请求.
2.GET产生的URL地址可以被Bookmark,而POST不可以。
3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
4.GET请求只能进行url编码,而POST支持多种编码方式。
5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
6.GET请求在URL中传送的参数是有长度限制的,而POST么有。
7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
8.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
9.GET参数通过URL传递,POST放在Request body中。

如果表单处理服务器既支持 POST 方法又支持 GET 方法,那么你该选择哪种方法呢?下面是有关这方面的一些规律:

  • 如果希望获得最佳表单传输性能,可以采用 GET 方法发送只有少数简短字段的小表单。
    一些服务器操作系统在处理可以立即传递给应用程序的命令行参数时,会限制其数目和长度,在这种情况下,对那些有许多字段或是很长的文本域的表单来说,就应该采用 POST 方法来发送。
  • 如果你在编写服务器端的表单处理应用程序方面经验不足,应该选择 GET 方法。如果采用 POST 方法,就要在读取和解码方法做些额外的工作,也许这并不很难,但是也许你不太愿意去处理这些问题。
  • 如果安全性是个问题,那么我们建议选用 POST 方法。GET 方法将表单参数直接放在应用程序的 URL 中,这样网络窥探者可以很轻松地捕获它们,还可以从服务器的日志文件中进行摘录。如果参数中包含了信用卡帐号这样的敏感信息,就会在不知不觉中危及用户的安全。而 POST 应用程序就没有安全方面的漏洞,在将参数作为单独的事务传输给服务器进行处理时,至少还可以采用加密的方法。
  • 如果想在表单之外调用服务器端的应用程序,而且包括向其传递参数的过程,就要采用 GET 方法,因为该方法允许把表单这样的参数包括进来作为 URL 的一部分。而另一方面,使用 POST 样式的应用程序却希望在 URL 后还能有一个来自浏览器额外的传输过程,其中传输的内容不能作为传统 标签的内容。

总结:get一般在向服务器查询/获取信息,安全性要求低数据量小的时候使用。
post一般用于向服务器提交信息,安全性要求高数据量大的时候使用。

3.在input里,name有什么作用?

name 属性规定 input 元素的名称,用于对提交到服务器后的表单数据进行标识,或者在客户端提供给 JavaScript,使其可以引用表单数据。

4.radio如何分组?

具有相同name值的radio为一组。

5.placeholder属性有什么作用?

提供可描述输入字段预期值的提示信息,该提示会在输入字段为空时显示,并会在字段获得焦点时消失。

6.type=hidden隐藏域有什么作用?

type属性值定义为hidden可定义隐藏字段。隐藏字段对于用户是不可见的。隐藏字段通常会存储一个默认值,它们的值也可以由 JavaScript 进行修改。
一方面隐藏数据可以暂存数据,例如用户不需要见到,但操作网页时可能用到的数据;
另一方面可以提高安全性,例如,页面提交表单时可通过type=hidden设置一段隐藏的按照预先算法约定好的随机字段,服务器在受到表单数据时对这个隐藏字段进行校验,来识别该表单数据来源是否可靠,从而避免服务器数据被假页面提交的数据攻击篡改。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions