GO—-验证表单的输入

上一节,咱们简单说了如何获取表单的信息,现在简单说一下验证表单的输入.

GO文件

package main

import (
	"fmt"
	"html/template"
	"log"
	"net/http"
	"regexp"
	"strconv"
	"strings"
)

func saygo(w http.ResponseWriter, r *http.Request) {
	if r.Method == "GET" {
		t, _ := template.ParseFiles("form.html")
		t.Execute(w, nil)
	} else {
		w.Header().Set("Content-Type", "text/html;charset=utf-8")
		r.ParseForm()

		//必填判断
		fmt.Fprintf(w, r.Form["uid"][0]+"<br/>")
		if len(r.Form["uid"][0]) == 0 {
			fmt.Fprintf(w, "必填不能为空"+"<br/>")
		}

		//数字判断
		fmt.Fprintf(w, r.Form.Get("age")+"<br/>")
		getint, err := strconv.Atoi(r.Form.Get("age"))
		if err != nil {
			fmt.Fprintf(w, "不是数字"+"<br/>")
		} else if getint > 100 {
			fmt.Fprintf(w, "数字不能大于100"+"<br/>")
		}

		//电子邮件
		fmt.Fprintf(w, r.Form.Get("email")+"<br/>")
		if m, _ := regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$`, r.Form.Get("email")); !m {
			fmt.Fprintf(w, "不是合法的邮件"+"<br/>")
		}

		//下拉菜单
		fmt.Fprintf(w, r.Form.Get("area")+"<br/>")
		slice := []string{"1111", "2222", "333"}
		is_slice := false
		for _, v := range slice {
			if v == r.Form.Get("area") {
				is_slice = true
			}
		}
		if is_slice != true {
			fmt.Fprintf(w, "不是合法的下拉菜单"+"<br/>")
		}

		//单选按钮
		fmt.Fprintf(w, r.Form.Get("gender")+"<br/>")
		slice2 := []int{1, 2}
		is_slice2 := false
		for _, v := range slice2 {
			if strconv.Itoa(v) == r.Form.Get("gender") {
				is_slice2 = true
			}
		}
		if is_slice2 != true {
			fmt.Fprintf(w, "不是合法的单选"+"<br/>")
		}

		//复选框
		slice3 := r.Form["interest"]
		fmt.Fprintf(w, strings.Join(slice3, ",")+"<br/>")
		m := make(map[string]int)
		m["football"] = 1
		m["basketball"] = 1
		m["tennis"] = 1
		is_slice3 := true
		for _, v := range slice3 {
			if int(m[v]) <= 0 {
				is_slice3 = false
			}
		}
		if is_slice3 != true {
			fmt.Fprintf(w, "不是合法的复选"+"<br/>")
		}

		fmt.Fprintf(w, "<br/>")
		t, _ := template.ParseFiles("form.html")
		t.Execute(w, nil)
	}
}

func main() {
	http.HandleFunc("/", saygo)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

模板文件:

<html>
<head>
<title>form示例</title>
</head>
<body>
<form action="" method="post">
    必填:<input type="text" name="uid"><br/>
    数字:<input type="text" name="age"><br/>
	电子邮件:<input type="text" name="email"><br/>
	下拉菜单:<select name="area">
			<option value="0000">0000</option>
			<option value="1111">1111</option>
			<option value="2222">2222</option>
			<option value="3333">3333</option>
			</select><br/>
	单选按钮:<input type="radio" name="gender" value="1">男
			<input type="radio" name="gender" value="2">女<br/>
	复选框:<input type="checkbox" name="interest" value="football">足球
			<input type="checkbox" name="interest" value="basketball">篮球
			<input type="checkbox" name="interest" value="tennis">网球
			<input type="checkbox" name="interest" value="0000">不合法
    <input type="submit" value="提交">
</form>
</body>
</html>

这里只是简单说明,哈哈!

Those people shouldn’t be allowed to do that
gay porn Oscars 2010 Red Carpet Best and Worst Dressed photos

I will not stop wearing the high end tie dye clothing
how to lose weight fastJoico K Pack Reconstructor Conditioner best High End for dry
black porn
此条目发表在 网站开发 分类目录,贴了 标签。将固定链接加入收藏夹。

评论功能已关闭。