您的位置:首页 > 技术中心 > 其他 >

golang实现注册登录

时间:2023-05-10 19:32

在互联网时代,随着互联网技术的不断进步和人们对信息的需求不断提高,网站和APP的注册登录功能也变得越来越常见。本文将介绍如何使用golang语言来实现注册登录功能。

一、golang简介

golang是谷歌公司开发的一种编程语言,它拥有高效的并发处理、垃圾自动回收、极低的编译时间等特点,具有着天然的并发能力和适用于大规模系统的特性。这些特性使得golang成为一个非常优秀的服务器端语言。因此,使用它来实现注册登录功能是一个非常好的选择。

二、环境搭建

要使用golang实现注册登录功能,首先需要在本地环境中安装golang语言。在安装之前,需要先确定自己电脑的操作系统类型 (Windows、Linux、Mac等),并选择对应的golang版本进行下载和安装。

安装完成后,可以在命令行中输入以下命令来检查是否安装成功:

go version

如果显示golang的版本号,则说明安装成功。

三、注册功能实现

  1. 创建项目文件夹

创建一个名为“login”的文件夹,用来放置本次项目的文件。在该文件夹中创建两个文件夹:controller和model。其中,controller用来放置Web接口的控制器代码,model用来放置数据库操作的代码。

  1. 数据库连接和建表

在model文件夹中创建一个名为“db.go”的文件,并在其中编写如下代码来建立数据库连接:

package modelimport (    "database/sql"    "fmt"    _ "github.com/go-sql-driver/mysql")const (    USERNAME = "root"    PASSWORD = ""    NETWORK  = "tcp"    SERVER   = "localhost"    PORT     = 3306    DATABASE = "login_system")func DbConn() (db *sql.DB) {    dbDriver := "mysql"    dbUser := USERNAME    dbPass := PASSWORD    dbName := DATABASE    db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@tcp("+SERVER+":"+strconv.Itoa(PORT)+")/"+dbName)    if err != nil {        fmt.Println("无法连接数据库:", err)    } else {        fmt.Println("成功连接数据库!")    }    return db}

上述代码中,使用了第三方库“go-sql-driver/mysql”来实现数据库的连接。在代码中,我们还需要设置一些数据库的基本信息,如用户名、密码、主机地址、端口号以及数据库名称等。

下一步,我们需要创建一个名为“user.sql”的文件,用来编写建立用户表的SQL语句,其中包含用户ID、用户名和密码等字段。

CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(20) NOT NULL,  `password` varchar(40) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

通过执行上述SQL语句,即可在数据库中创建用户表。

  1. 编写控制器代码

在controller文件夹中创建一个名为“register.go”的文件,用来编写注册接口的控制器代码。在该文件中,需要导入第三方库“net/http”,并编写如下代码:

package controllerimport (    "crypto/md5"    "database/sql"    "encoding/hex"    "fmt"    "io/ioutil"    "net/http"    "server/model")func Register(w http.ResponseWriter, r *http.Request) {    if r.Method == "POST" {        username := r.FormValue("username")        password := r.FormValue("password")        // 密码加密        h := md5.New()        h.Write([]byte(password))        password = hex.EncodeToString(h.Sum(nil))        // 数据库操作        db := model.DbConn()        defer db.Close()        stmt, err := db.Prepare("INSERT INTO user(username, password) VALUES (?, ?)")        if err != nil {            fmt.Println("SQL语句执行失败:", err)            return        }        _, err = stmt.Exec(username, password)        if err != nil {            fmt.Println("用户注册失败:", err)            return        }        fmt.Println("用户注册成功!")    }    // 返回页面内容    data, err := ioutil.ReadFile("register.html")    if err != nil {        fmt.Println("读取文件失败:", err)        return    }    w.Write([]byte(data))}

上述代码中,我们首先判断请求方式是否为POST。如果是POST请求,则获取到用户名和密码,并对密码进行MD5加密,将加密后的密码和用户名存入数据库中。

在文件最后,使用ioutil.ReadFile()函数来读取一个名为“register.html”的文件,返回该文件的内容至浏览器端。这样浏览器端就可以显示出我们的注册界面。

  1. 注册界面编写

在login文件夹中创建一个名为“register.html”的文件,用来编写注册页面的代码。在该页面中,需要使用<form>标签和<input>标签来获取到用户名和密码信息,并将这些信息提交到后端进行处理。具体代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>注册</title></head><body>    <form action="/register" method="post">        <p>用户名:<input type="text" name="username" /></p>        <p>密码:<input type="password" name="password" /></p>        <input type="submit" value="注册" />    </form></body></html>

在上述代码中,<form>标签的action属性表示该表单的提交地址,即注册接口的URL地址,method属性表示该表单的提交方式,即使用POST方法提交。

  1. 启动服务器

在login文件夹中创建一个名为“main.go”的文件,用来启动服务器。在该文件中,需要导入第三方库“net/http”,并编写如下代码:

package mainimport (    "net/http"    "login/controller")func main() {    // 注册接口路由    http.HandleFunc("/register", controller.Register)    // 启动服务器    http.ListenAndServe(":8080", nil)}

在上述代码中,我们使用http.HandleFunc()函数来为注册接口指定路由地址。在程序启动后,可以通过浏览器访问“http://localhost:8080/register”来打开注册界面。

四、登录功能实现

  1. 编写控制器代码

在controller文件夹中创建一个名为“login.go”的文件,用来编写登录接口的控制器代码。在该文件中,需要导入第三方库“net/http”和“database/sql”,并编写如下代码:

package controllerimport (    "crypto/md5"    "database/sql"    "encoding/hex"    "fmt"    "io/ioutil"    "net/http"    "server/model"    )func Login(w http.ResponseWriter, r *http.Request) {    if r.Method == "POST" {        username := r.FormValue("username")        password := r.FormValue("password")        h := md5.New()        h.Write([]byte(password))        password = hex.EncodeToString(h.Sum(nil))        // 根据用户名和密码查询数据库        db := model.DbConn()        defer db.Close()        rows, err := db.Query("SELECT * FROM user WHERE username=? AND password=?", username, password)        if err != nil {            fmt.Println("SQL语句执行失败:", err)            return        }        defer rows.Close()        if rows.Next() {            fmt.Println("登录成功!")            // 返回登录成功页面            data, err := ioutil.ReadFile("success.html")            if err != nil {                fmt.Println("读取文件失败:", err)                return            }            w.Write([]byte(data))        } else {            fmt.Println("用户名或密码不正确!")            // 返回登录失败页面            data, err := ioutil.ReadFile("fail.html")            if err != nil {                fmt.Println("读取文件失败:", err)                return            }            w.Write([]byte(data))        }    }    // 返回登录页面    data, err := ioutil.ReadFile("login.html")    if err != nil {        fmt.Println("读取文件失败:", err)        return    }    w.Write([]byte(data))}

上述代码中,我们首先判断请求方式是否为POST。如果是POST请求,则获取到用户名和密码,并对密码进行MD5加密。然后,我们根据用户名和密码查询数据库,如果查询结果不为空则表示登录成功,否则则表示登录失败。

在文件最后,我们再读取两个名为“success.html”和“fail.html”的文件,分别用于表示登录成功和失败后的页面内容。

  1. 登录界面编写

在login文件夹中创建一个名为“login.html”的文件,用来编写登录页面的代码。该页面与注册页面类似,也需要使用<form>标签和<input>标签来获取到用户名和密码信息,并将这些信息提交到后端进行处理。具体代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>登录</title></head><body>    <form action="/login" method="post">        <p>用户名:<input type="text" name="username" /></p>        <p>密码:<input type="password" name="password" /></p>        <input type="submit" value="登录" />    </form></body></html>
  1. 成功和失败页面编写

在login文件夹中创建一个名为“success.html”的文件,用来编写登录成功后的页面代码。具体代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>登录成功</title></head><body>    <h1>恭喜,登录成功!</h1></body></html>

在login文件夹中再创建一个名为“fail.html”的文件,用来编写登录失败后的页面代码。具体代码如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>登录失败</title></head><body>    <h1>对不起,用户名或密码错误!</h1></body></html>
  1. 注册接口路由修改

在“main.go”文件中,将注册接口路由的地址改为“/”即可。最终代码如下:

package mainimport (    "net/http"    "login/controller")func main() {    // 注册接口路由    http.HandleFunc("/", controller.Register)    // 登录接口路由    http.HandleFunc("/login", controller.Login)    // 启动服务器    http.ListenAndServe(":8080", nil)}

五、总结

本文介绍了如何使用golang语言来实现注册登录功能。通过本文的学习,我们可以看到golang语言实现简洁高效、性能优越,适合用于实现服务器端开发。同时,本文也向读者展示了如何使用golang与数据库进行交互,以及如何使用golang实现Web接口的功能。希望本文能够为读者带来一些参考和启发。

以上就是golang实现注册登录的详细内容,更多请关注Gxl网其它相关文章!

热门排行

今日推荐

热门手游