GO Web编程(四——表单)

  • 预防跨站脚本

func HTMLEscape (w io.Writer, b [] byte) // 把 b 进行转义之后写到 w
func HTMLEscapeString (s string) string // 转义 s 之后返回结果字符串
func HTMLEscaper (args ...interface {}) string // 支持多个参数一起转义,返回结果字符串

fmt.Println("username:", template.HTMLEscapeString(r.Form.Get("username"))) // 输出到服务器端
fmt.Println("password:", template.HTMLEscapeString(r.Form.Get("password")))
template.HTMLEscape(w, []byte(r.Form.Get("username"))) // 输出到客户端
  • 验证表单的输入

我们平常编写 Web 应用主要有两方面的数据验证,一个是在页面端的 js 验证 (目前在这方面有很多的插件库,比如 ValidationJS 插件),一个是在服务器端的验证。

  • 必填字段

确保从表单元素中得到一个值

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
}
  • 正则表达式
//手机号
if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`,r.Form.Get("mobile")); !m {
    return false
}
//电子邮件
if m, _ := regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,})\.([a-z]{2,4})$`, r.Form.Get("email")); !m {
    fmt.Println("no")
}else{
    fmt.Println("yes")
}
  • 下拉菜单

判断表单里的

GO Web编程(四——表单)

上一篇:Ajax


下一篇:微信小程序(原名微信应用号)开发工具0.9版安装教程