go语言的简单注册登陆
2018-03-11 14:55
405 查看
实现逻辑很简单
先注册路由,前端调用路由方法,将数据传递给go程序,后端接受到数据后,或执行登陆或执行注册,并返回相应结果
涉及到 路由,mysql
main.go文件代码:
package main
有些代码部分重复了,暂时懒得弄了(其实是不知道怎么抽象出来好)
目录结果如上
运行的时候先 go run main.go
然后把html目录下的login.html拖进浏览器
酱紫
GitHub项目路径 https://github.com/donghuabubai/simpleLogin-go- PS:记得先配置好本地mysql
PS:如果对你有那么一点用处,记得点个星哈
先注册路由,前端调用路由方法,将数据传递给go程序,后端接受到数据后,或执行登陆或执行注册,并返回相应结果
涉及到 路由,mysql
main.go文件代码:
package main
import (
"crypto/md5"
"database/sql"
"encoding/json"
"fmt"
_ "go-sql-driver/mysql"
"io"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/login", login)
mux.HandleFunc("/register", register)
http.ListenAndServe(":8080", mux) //监听8080端口
}
type result struct { //定义返回数据格式
Code int
Msg string
Data []string
}
func login(w http.ResponseWriter, r *http.Request) { //登陆
w.Header().Set("Access-Control-Allow-Origin", "*") //允许跨域
r.ParseForm()
username, found1 := r.Form["username"]
password, found2 := r.Form["password"]
if !(found1 && found2) {
io.WriteString(w, "请勿非法访问")
return
}
db, err := sql.Open("mysql", "root@tcp(127.0.0.1:3306)/test?charset=utf8") //登陆msyql
if err != nil {
fmt.Println(err)
}
defer db.Close()
var post_data PostData
post_data.user_name = username[0]
post_data.pass_word = password[0]
var filter_data FilterData = post_data
post_data = filter_data.formatData()
var row *sql.Row
row = db.QueryRow("select * from users where username = ? and password = ?", post_data.user_name, post_data.pass_word)
var user_name, pass_word string
var id int
err = row.Scan(&id, &user_name, &pass_word) //遍历结果
if err != nil {
arr := &result{
500,
"登陆失败",
[]string{},
}
b, json_err := json.Marshal(arr) //json化结果集
if json_err != nil {
fmt.Println("encoding faild")
} else {
io.WriteString(w, string(b)) //返回结果
}
} else {
arr := &result{
200,
"登陆成功",
[]string{},
}
b, json_err := json.Marshal(arr) //json化结果集
if json_err != nil {
fmt.Println("encoding faild")
} else {
io.WriteString(w, string(b)) //返回结果
}
}
}
func register(w http.ResponseWriter, r *http.Request) { //注册
w.Header().Set("Access-Control-Allow-Origin", "*") //允许跨域
r.ParseForm()
username, found1 := r.Form["username"]
password, found2 := r.Form["password"]
if !(found1 && found2) {
io.WriteString(w, "请勿非法访问")
return
}
db, err := sql.Open("mysql", "root@tcp(127.0.0.1:3306)/test?charset=utf8")
if err != nil {
io.WriteString(w, "连接数据库失败")
return
}
defer db.Close() //在返回前关闭资源(延迟)
var post_data PostData
post_data.user_name = username[0]
post_data.pass_word = password[0]
var filter_data FilterData = post_data
post_data = filter_data.formatData()
_, err = db.Exec("insert into users(username, password) values(?,?)", post_data.user_name, post_data.pass_word) //插入数据
if err != nil {
arr := &result{
500,
"注册失败",
[]string{},
}
b, json_err := json.Marshal(arr) //json化结果集
if json_err != nil {
fmt.Println("encoding faild")
} else {
io.WriteString(w, string(b)) //返回结果
}
} else {
arr := &result{
200,
"注册成功",
[]string{},
}
b, json_err := json.Marshal(arr) //json化结果集
if json_err != nil {
fmt.Println("encoding faild")
} else {
io.WriteString(w, string(b)) //返回结果
}
}
}
type FilterData interface { //定义数据接口
formatData() PostData
}
type PostData struct { //定义传递数据结构体
user_name string
pass_word string
}
func (post_data PostData) formatData() PostData { //格式化数据
post_data.pass_word = mdFormat(post_data.pass_word)
return post_data
}
func mdFormat(data string) string { //对字符串进行md5加密
t := md5.New()
io.WriteString(t, data)
return fmt.Sprintf("%x", t.Sum(nil))
}
有些代码部分重复了,暂时懒得弄了(其实是不知道怎么抽象出来好)
目录结果如上
运行的时候先 go run main.go
然后把html目录下的login.html拖进浏览器
酱紫
GitHub项目路径 https://github.com/donghuabubai/simpleLogin-go- PS:记得先配置好本地mysql
PS:如果对你有那么一点用处,记得点个星哈
相关文章推荐
- Go语言操作mysql数据库简单例子
- Android SharedPreferences应用 实现本地注册登陆 功能简单易懂(实例)
- 利用websocket,go语言和h5做了一个简单的聊天功能
- Go语言 实现简单的 Set
- asp.net简单的注册或者登陆三层架构的例子
- go语言if/else语句简单用法示例
- Go语言Windows程序设计(1)--简单弹出消息窗口
- c# asp.net 简单窗体注册登陆(3)
- GO 语言 http 服务端(简单实例)
- Go Web编程(Go语言性能好、语法简单、开发效率高!)
- 28.笔记go语言——并发简单示例
- php面向对象实现简单的用户注册登陆
- go语言实现一个http服务器完成静态页面的账号和密码登陆
- 简单的纯java语言登录和注册功能
- Go语言实现简单的文件服务器
- Go语言几大命令简单介绍
- Go语言实现简单的留言本
- go语言简单教程
- Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
- go语言实现一个简单的http客户端抓取远程url的方法