GO隨筆 表單驗證

2021-09-13 01:35:53 字數 1098 閱讀 3559

新發現:r.form裡面包含了所有請求的引數,比如url中query-string、post的資料、put的資料,所有當你在url的query-string欄位和post衝突時,會儲存成乙個slice,裡面儲存了多個值

舉個例子:

//get方法傳遞username=go

使用者名稱://用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
還有很多驗證,都有不止一種方法能夠達到驗證效果,不再一一贅述了。

go驗證表單的輸入

開發web的乙個原則就是,不能信任使用者輸入的任何資訊,所以驗證和過濾使用者的輸入資訊就變得非常重要,我們經常會在微博 新聞中聽到某某 被入侵了,存在什麼漏洞,這些大多是因為 對於使用者輸入的資訊沒有做嚴格的驗證引起的,所以為了編寫出安全可靠的web程式,驗證表單輸入的意義重大。我們平常編寫web應...

python表單驗證 表單驗證

django有乙個form類為我們提供了強大的表單驗證提交。1 建立form from django import forms class commentform forms.form name forms.charfield label 您的姓名 max length 100 email form...

antd 如何清除表單驗證(聯動表單驗證)

備註 投標的3種狀態 當我們使用antd的form表單時,可能會遇到2個表單聯動的情況,試想一下以下場景 投標利率我們設定在 3 7 以內,也就是說,輸入框不能取值的範圍是3 7 符合3 7就觸發不了表單驗證了!當投標狀態是 投標 共三種 時,該投標利率表單驗證生效,如果選擇其他狀態,則不生效,如果...