上一节我们讲了关于简单的表单的概念和简单的例子,本节我们来看表单输入的验证,我们来看看常见的验证都有那些,然后我们还是一样,通过例子来演示。
首先我们看看表单的验证起什么作用的,为什么需要表单验证呢?
表单的验证其实就是验证数据的合规性,过滤输入中的错误及危险,我们常见的某某网站被入侵了,某某网站漏洞,总结为两点数据合规性、安全。
通过GO语言来实现上面的输入,我们看看怎么验证呢?
必填字段:不管在那种语言中判断必填,我们只要获取值,判断值的长度就可以判断是否为填写。
if len(r.Form[“name”][0]==0){
//为空的处理,提示
fmt.Println(“姓名不能为空!请输入!”)
}
数字验证:我们看看年龄的验证是怎样的。
getint,err:=stroconv.Atoi(r.Form.Get(“age”))//转换年龄字段为正整数int型
if err!=nil{
//错误不为空,转换失败,那么可能就不是数字
}
if getint>130{
//如果输入的岁数大于130岁,当今没有几个能活到这么大岁数,所以输入数值太大。也就是通过验证来控制数值的范围。
}
单选按钮:男女选择其一的验证
<input type=”radio”name=”gender” value=”1”> 男
<input type=”radio”name=”gender” value=”2”> 女
当然我们采用下拉菜单的方式也一样可以的
slice:=[]int{1,2}
for _, v:=rangeslice{
if v ==r.Form.Get(“gender”){
Return true
}
}
return false
日期和时间验证:验证生日是否有效或者控制某个时间段等;在GO语言中有一个time的处理包,我们可以把用户输入的年月日转化成相应的时间,然后根据要求验证。
if PbBirthday !="" {
birthday :=strings.Split(order.PbBirthday,"-")
if len(birthday) < 3 {
return nil,errors.New("出生日期格式解析错误")
}
} else {
return nil,errors.New("出生日期为空")
}
身份证号:我们知道身份证有15位和18位,我们看看怎么验证?这里我们采用正则表达式验证方式来验证。
//验证15为身份证
ifm,_=:=regexp.MatchString(‘^(\d{15})$’,r.Form.Get(“UserCard”));!m{
return false
}
//验证18位身份证,前17位为数字,最后一位是效验码,可能为数字或字符X。
ifm,_=:=regexp.MatchString(‘^(\d{17})([0-9]|X)$’,r.Form.Get(“UserCard”));!m{
return false
}
手机号:我们也通过正则表达式验证。
ifm,_=:=regexp.MatchString(‘^(1[3|4|5|8][0-9]\d{4,8})$’,r.Form.Get(“mobile”));!m{
return false
}。
邮箱验证:邮箱验证使用非常广泛,我们还是采用正则表达式来验证
ifm,_=:=regexp.MatchString(‘^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$’,r.Form.Get(“email”));!m{
fmt.Println(“no”)
}else{
fmt.Println(“yes”)
}
下拉菜单验证:用户选择自己的学历。
<select name=” Education”>
<option value=”JuniorCollege”>大专</option>
<option value=”HighSchool”>高中</option>
<option value=”JuniorMiddleSchool”>初中</option>
<option value=”Undergraduate”>本科</option>
</select>
slice:=[string]{” JuniorCollege”, ” HighSchool”, ” JuniorMiddleSchool”, ” Undergraduate”}
for _,v:=reangesilce{
if v==r.Form.Get(“Education”){
return true
}
}
return false
最后我们来看看多选按钮的验证:用户选择自己的爱好。
<input type=”checkbox”name=”like” value=”Basketball”> 篮球
<input type=”checkbox”name=”like” value=”Football”> 足球
<input type=”checkbox”name=”like” value=”Tennis”> 网球
<input type=”checkbox”name=”like” value=” TableTennis”> 乒乓球
<input type=”checkbox”name=”like” value=” Rugby”> 橄榄球
slice:=[string]{” Basketball”, ” Football”, ” Tennis”, ” TableTennis”,” Rugby”}
a:=slice_diff(r.Form[“like”],slice)
if a==nil{
return true
}
return false
以上就是我们今天所讲的内容,下一节我们继续讲表单中我们要学习的内容。老话重提,实践是检验真理的一种很恰当的方式也是最直接的方式。
请开始你的表演,践行,践行,再践行。未完待续。。。
网友评论