内容简介:新发现:举个例子:在提交表单后,打印
新发现: r.Form
里面包含了所有请求的参数,比如URL中query-string、POST的数据、PUT的数据,所有当你在URL的query-string字段和POST冲突时,会保存成一个slice,里面存储了多个值
举个例子:
<form action="/login?username=go" method="post">//get方法传递username=go 用户名:<input type="text" name="username">//用post方法传递username
在提交表单后,打印 r.Form
fmt.Println(r.Form);
得到
map[username:[postname go]
发生冲突的字段,值会被保存成为slice。
在取值的时候有两种方法。
r.Form
可以取到键所对应的全部值。但如果键不存在则会报错。一般单选框或复选框,在不选中的情况下,form表单根本不会提交这些字段,所以很容易出现 r.Form
获取键不存在的字段。
r.Form.GET
只能够拿到字段中的第一个值。如果键不存在,不会报错,会返回空值。
对比不难发现,一般单选框和复选框等字段需要 r.Form.GET
方法获取,而会出现多值的字段则需要用 r.Form
的方式获取。
言归正传,这次想说一些关于表单验证的方法。表单验证一般前端后端都会做,不过区别是,“前端防君子,后端防小人”。
必填字段
if len(r.Form["username"][0])==0{ //为空的处理 }
数字
getint,err:=strconv.Atoi(r.Form.Get("age"))//字符串转整 if err!=nil{ //数字转化出错了,那么可能就不是数字 } //接下来就可以判断这个数字的大小范围了 if getint >100 { //太大了 }
或是使用正则
if m, _ := regexp.MatchString("^[0-9]+$", r.Form.Get("age")); !m { return false }
还有很多验证,都有不止一种方法能够达到验证效果,不再一一赘述了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机网络(第4版)
[美] James F. Kurose、[美] Keith W. Ross / 陈鸣 / 机械工业出版社 / 2009-11 / 66.00元
本书采用了独创的自顶向下方法,即从应用层开始沿协议栈向下讲解计算机网络的基本原理,强调应用层范例和应用编程接口,内容深入浅出,注重教学方法,理论与实践相结合。第3版的内容相应更新并反映了网络领域的最新进展,如增加了无线和移动网络一章,扩充了对等网络、BGP、MPLS、网络安全、广播选路和因特网编址及转发方面的材料;还增加了一套实用的实验,并修订了习题。本书适合作为计算机、电子、通信工程相关专业的本......一起来看看 《计算机网络(第4版)》 这本书的介绍吧!