Format and remove 04.4.md spaces
This commit is contained in:
56
zh/04.4.md
56
zh/04.4.md
@@ -7,42 +7,42 @@
|
|||||||
我继续拿4.2小节的例子优化:
|
我继续拿4.2小节的例子优化:
|
||||||
```html
|
```html
|
||||||
|
|
||||||
<input type="checkbox" name="interest" value="football">足球
|
<input type="checkbox" name="interest" value="football">足球
|
||||||
<input type="checkbox" name="interest" value="basketball">篮球
|
<input type="checkbox" name="interest" value="basketball">篮球
|
||||||
<input type="checkbox" name="interest" value="tennis">网球
|
<input type="checkbox" name="interest" value="tennis">网球
|
||||||
用户名:<input type="text" name="username">
|
用户名:<input type="text" name="username">
|
||||||
密码:<input type="password" name="password">
|
密码:<input type="password" name="password">
|
||||||
<input type="hidden" name="token" value="{{.}}">
|
<input type="hidden" name="token" value="{{.}}">
|
||||||
<input type="submit" value="登陆">
|
<input type="submit" value="登陆">
|
||||||
```
|
```
|
||||||
我们在模版里面增加了一个隐藏字段`token`,这个值我们通过MD5(时间戳)来获取唯一值,然后我们把这个值存储到服务器端(session来控制,我们将在第六章讲解如何保存),以方便表单提交时比对判定。
|
我们在模版里面增加了一个隐藏字段`token`,这个值我们通过MD5(时间戳)来获取唯一值,然后我们把这个值存储到服务器端(session来控制,我们将在第六章讲解如何保存),以方便表单提交时比对判定。
|
||||||
```Go
|
```Go
|
||||||
|
|
||||||
func login(w http.ResponseWriter, r *http.Request) {
|
func login(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Println("method:", r.Method) //获取请求的方法
|
fmt.Println("method:", r.Method) //获取请求的方法
|
||||||
if r.Method == "GET" {
|
if r.Method == "GET" {
|
||||||
crutime := time.Now().Unix()
|
crutime := time.Now().Unix()
|
||||||
h := md5.New()
|
h := md5.New()
|
||||||
io.WriteString(h, strconv.FormatInt(crutime, 10))
|
io.WriteString(h, strconv.FormatInt(crutime, 10))
|
||||||
token := fmt.Sprintf("%x", h.Sum(nil))
|
token := fmt.Sprintf("%x", h.Sum(nil))
|
||||||
|
|
||||||
t, _ := template.ParseFiles("login.gtpl")
|
t, _ := template.ParseFiles("login.gtpl")
|
||||||
t.Execute(w, token)
|
t.Execute(w, token)
|
||||||
|
} else {
|
||||||
|
//请求的是登陆数据,那么执行登陆的逻辑判断
|
||||||
|
r.ParseForm()
|
||||||
|
token := r.Form.Get("token")
|
||||||
|
if token != "" {
|
||||||
|
//验证token的合法性
|
||||||
} else {
|
} else {
|
||||||
//请求的是登陆数据,那么执行登陆的逻辑判断
|
//不存在token报错
|
||||||
r.ParseForm()
|
|
||||||
token := r.Form.Get("token")
|
|
||||||
if token != "" {
|
|
||||||
//验证token的合法性
|
|
||||||
} else {
|
|
||||||
//不存在token报错
|
|
||||||
}
|
|
||||||
fmt.Println("username length:", len(r.Form["username"][0]))
|
|
||||||
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"))) //输出到客户端
|
|
||||||
}
|
}
|
||||||
|
fmt.Println("username length:", len(r.Form["username"][0]))
|
||||||
|
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"))) //输出到客户端
|
||||||
}
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
上面的代码输出到页面的源码如下:
|
上面的代码输出到页面的源码如下:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user