在網路時代,隨著網路科技的不斷進步和人們對資訊的需求不斷提高,網站和APP的註冊登入功能也變得越來越常見。本文將介紹如何使用golang語言來實現註冊登入功能。
一、golang簡介
golang是Google公司開發的一種程式語言,它擁有高效的並發處理、垃圾自動回收、極低的編譯時間等特點,具有天然的並發能力和適用於大規模系統的特性。這些特性使得golang成為一個非常優秀的伺服器端語言。因此,使用它來實現註冊登入功能是一個非常好的選擇。
二、環境搭建
要使用golang實作註冊登入功能,首先需要在本機環境中安裝golang語言。在安裝之前,需要先確定自己電腦的作業系統類型 (Windows、Linux、Mac等),並選擇對應的golang版本進行下載和安裝。
安裝完成後,可以在命令列中輸入以下命令來檢查是否安裝成功:
go version
如果顯示golang的版本號,則表示安裝成功。
三、註冊功能實作
#建立一個名為「login」的資料夾,用來放置本次項目的文件。在該資料夾中建立兩個資料夾:controller和model。其中,controller用來放置Web介面的控制器程式碼,model用來放置資料庫操作的程式碼。
在model資料夾中建立一個名為「db.go」的文件,並在其中編寫如下程式碼來建立資料庫連接:
package model import ( "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語句,即可在資料庫中建立使用者表。
在controller資料夾中建立一個名為「register.go」的文件,用來編寫註冊介面的控制器程式碼。在該文件中,需要匯入第三方函式庫“net/http”,並編寫如下程式碼:
package controller import ( "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」的文件,傳回該文件的內容至瀏覽器端。這樣瀏覽器端就可以顯示出我們的註冊介面。
在login資料夾中建立一個名為「register.html」的文件,用來編寫註冊頁面的程式碼。在該頁面中,需要使用