GO随笔-表单验证

栏目: Go · 发布时间: 6年前

内容简介:新发现:举个例子:在提交表单后,打印

新发现: 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
}

还有很多验证,都有不止一种方法能够达到验证效果,不再一一赘述了。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码大全(第2版)

代码大全(第2版)

[美] 史蒂夫·迈克康奈尔 / 金戈、汤凌、陈硕、张菲 译、裘宗燕 审校 / 电子工业出版社 / 2006-3 / 128.00元

第2版的《代码大全》是著名IT畅销书作者史蒂夫·迈克康奈尔11年前的经典著作的全新演绎:第2版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初......一起来看看 《代码大全(第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码