GO随笔-表单验证
新發現:r.Form里面包含了所有請求的參數,比如URL中query-string、POST的數據、PUT的數據,所有當你在URL的query-string字段和POST沖突時,會保存成一個slice,里面存儲了多個值
舉個例子:
在提交表單后,打印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 }還有很多驗證,都有不止一種方法能夠達到驗證效果,不再一一贅述了。
總結
- 上一篇: .net MVC(存储过程+SQLHel
- 下一篇: 44、生鲜电商平台-Java后端生成To