-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
142 lines (117 loc) · 3.07 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package main
import (
"database/sql"
"fmt"
_ "mysql"
"net/http"
)
//定义全局变量
var (
Db *sql.DB
err error
username string
password string
)
//打开数据库,我用的mysql,创建了database:login,然后里面有一张table: logincheck,然后有两个属性username和password
func init() {
Db, err = sql.Open("mysql", "root:123123@/login")
if err != nil {
fmt.Println(err)
}
}
//这是个检查注册信息的函数,思路是:
//传入注册的用户名username。用sql语句把所有的username导入一个切片
//遍历切片看传入的username是否和切片中元素重复,如果重复则传出false,否则true
func check_register(username string) bool {
//写sql语句
sqlStr := "select username from logincheck "
//执行
row, err := Db.Query(sqlStr)
if err != nil {
fmt.Println(err)
}
//创建切片
n := make([]string, 30)
for row.Next() {
//声明
var id string
err := row.Scan(&id)
if err != nil {
fmt.Print(err)
}
n = append(n, id)
}
for _, i := range n {
if i == username {
return false
}
}
return true
}
//这是个检查登录信息的函数。如果输入的用户名和密码与数据库中的一组用户名密码重复,则传出false,否则true
func check_login(username string, password string) bool {
//写sql语句
sqlStr := "select username,password from logincheck "
//执行
row, err := Db.Query(sqlStr)
if err != nil {
fmt.Println(err)
}
//创建切片
for row.Next() {
//声明
var a, b string
err := row.Scan(&a, &b)
if err != nil {
fmt.Print(err)
}
if a == username && b == password {
return true
}
}
return false
}
//如果注册用户名不重复,则将此用户名&密码导入数据库
func insert(username string, password string) {
sqlStr := "insert into logincheck(username,password) values(?,?)"
_, err := Db.Exec(sqlStr, username, password)
if err != nil {
fmt.Println("导入异常")
} else {
fmt.Println("导入成功")
}
}
//注册端口
func register(w http.ResponseWriter, r *http.Request) {
username = r.FormValue("username")
password = r.FormValue("password")
a := check_register(username)
if a {
//如果注册用户名不重复,则将此用户名&密码导入数据库
go insert(username, password) //此insert函数在上面
fmt.Fprintln(w, "恭喜您注册成功")
} else {
fmt.Fprintln(w, "抱歉,用户名重复,请重新选择用户名")
}
}
//登录端口
func login(w http.ResponseWriter, r *http.Request) {
username = r.FormValue("username")
password = r.FormValue("password")
a := check_login(username, password)
if a {
fmt.Fprintln(w, "恭喜您登录成功")
} else {
fmt.Fprintln(w, "用户名或密码错误,请重新输入")
}
}
func main() {
servemux := http.NewServeMux()
serve := &http.Server{
Addr: ":2233",
Handler: servemux,
}
servemux.HandleFunc("/login", login)
servemux.HandleFunc("/register", register)
serve.ListenAndServe()
}