我尝试使用Fprintf打印用户键入表单的用户名:
GO代码:
const logPage = `
<html>
<form action="/login" method="POST">
<label for="name">Username</label>
<input type="text" id="Username" name="name"></input>
...
</form>
</html>
`
const homePage = `
<html>
<h1>hi %s</h1>
</html>
`
func homehandler(w http.ResponseWriter, r *http.Request) {
a = r.FormValue("name")
fmt.Fprintf(w, homePage, a) ---> how do I insert the a value in the required interface{} form?
}
func main() {
http.HandleFunc("/home", homehandler)
...
}
根据这个:http://golang.org/pkg/net/http/#Request.FormValue,FormValue返回一个字符串,但是Fprintf似乎需要一个接口类型:http://golang.org/pkg/fmt/#Fprintf。如何插入&#34; a&#34;的正确值/类型?就像我上面的代码一样?或者,有更好的方法吗?
答案 0 :(得分:0)
我实际上不确定您的代码是否可以按照您的意图运行。
这是一个略有修改的工作示例:
const logPage = `
<html>
<form action="/login" method="POST">
<label for="name">Username</label>
<input type="text" id="Username" name="name"></input>
...
</form>
</html>
`
const homePage = `
<html>
<h1>hi %s</h1>
</html>
`
func loginhandler(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
fmt.Fprint(w, homePage)
} else if r.Method == "POST" {
// Here you can check the credentials
// or print the page you wanted to
// BUT please DON'T DO THIS
a = r.FormValue("name")
fmt.Fprint(w, logpage, a)
// DON'T DO THIS FOR THE SAKE OF YOUR USERS
}
}
func main() {
// http.HandleFunc("/home", homehandler) not needed
http.HandleFunc("/login", loginhandler)
...
}
这是怎么回事:
GET
页面发出/login
个请求,并调用loginHandler
。loginhandler
中,您将登录页面html返回给用户的浏览器。POST
请求。但是,您应该始终清理用户数据。 template/html
为您做到了,所以请看一下。如果您对该套餐的使用有其他疑问,请离开!