golang後台 實現使用者登入註冊

來源:互聯網
上載者:User

第一步 註冊models

models 下建立 models.go

models.go檔案

package models

import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)

func RegisterDB() {

//註冊驅動
orm.RegisterDriver("mysql", orm.DRMySQL)
//資料庫連結
//註冊預設資料庫
var db_url string = beego.AppConfig.String("username_DB") + ":" + beego.AppConfig.String("password_DB") + "@tcp(" + beego.AppConfig.String("host_DB") + ")/" + beego.AppConfig.String("name_DB") + "?charset=" + beego.AppConfig.String("charset")
beego.Info(db_url)
orm.RegisterDataBase("default", "mysql", db_url)
// orm.RegisterDataBase("default", "mysql", "an:111@tcp(127.0.0.1:3306)/yoo_home?charset=utf8")
// //註冊model
orm.RegisterModel(new(TUser))

}

******************************************************************************************************************************

第二步 資料庫連接的需要

conf下的app.conf檔案

 

appname = an
httpport = 8080
runmode = dev
sessionon = true

#資料庫為mysql
host_DB = "127.0.0.1"
port_DB = "3306"
charset = "utf8"
name_DB = "ancg"
username_DB = "an"
password_DB = 111

*********************************************************************************************************************************

第三步 寫個簡單的前端 view介面

views 下建立client.html檔案

<!DOCTYPE html>
<html>
<head>
<title>用戶端介面測試</title>
</head>
<body>
<label>註冊</label>
<form action="/client " method="POST">
<label>[options == register 註冊]</label>
<div>options:<input type="text" value="register" name="options"></div>
<div>tel:<input type="text" name="Tel"></div>
<div>pwd:<input type="text" name="Pwd"></div>
<input type="submit" name="註冊"Submit/>
</form>
<br>
<label>登入</label>
<form action="/client " method="POST">
<label>[options == login 登入]</label>
<div>options:<input type="text" value="login" name="options"></div>
<div>tel:<input type="text" name="Tel"></div>
<div>pwd:<input type="text" name="Pwd"></div>
<input type="submit" name="註冊"Submit/>
</form>
</body>
</html>

*********************************************************************************************************************

第四步 在models中 建立TUser 用來為資料庫自動建表使用

TUser.go

 

package models

import (
"github.com/astaxie/beego/orm"
//_"github.com/go-sql-driver/mysql"
)

//使用者表
type TUser struct {
//使用者序號
Id int64
//電話號碼
Tep string
//密碼
Pwd string
//收款人
Payee string
//地址
Address string
//收款帳號
Amount string
//帳號類別
AmountType string
//是否消費者
IsCustomer bool
//是否商家
IsSeller bool
//是否配送員
IsDiliver bool
//是否管理員
IsManager bool
//openId
Vid string
//是否凍結
IsLock bool
//建立時間 --- 時間戳記
AddTime int64
}

//建立使用者
func AddUser(user *TUser) (int64, error) {
o := orm.NewOrm() //資料庫
userId, err := o.Insert(user) //插入資料
return userId, err
}

//查詢帳號
func GetUserById(userId int64) (*TUser, error) {
o := orm.NewOrm() //資料庫
user := new(TUser) //TUser就是第9行struct的資料庫,就是mysql的表
qs := o.QueryTable("t_user") //表名為t_user
err := qs.Filter("id", userId).One(user) //One是指查詢一條資料,One(user)是查詢mysql表中一條資料
return user, err
}

//手機號查詢帳號
func GetUserByTel(tel string) (*TUser, error) {
o := orm.NewOrm()
user := new(TUser) //TUser就是第9行struct的資料庫,就是mysql的表
qs := o.QueryTable("t_user") //表名為t_user
err := qs.Filter("tel", tel).One(user) //One是指查詢一條資料,One(user)是查詢mysql表中一條資料
return user, err
}

//Id查詢帳號
func GetUserByVid(vid int64) (*TUser, error) {
o := orm.NewOrm()
user := new(TUser) //TUser就是第9行struct的資料庫,就是mysql的表
qs := o.QueryTable("t_user") //表名為t_user
err := qs.Filter("vid", vid).One(user) //One是指查詢一條資料,One(user)是查詢mysql表中一條資料
return user, err
}

***********************************************************************************************************************************

第五步 controllers 裡面建立一個主接options的檔案,用對應option來調用其它的controllers

client.go檔案

package controllers

import (
"github.com/astaxie/beego"
"time"
)

type ClientController struct {
beego.Controller
}

func (this *ClientController) Get() {
this.TplName = "client.html"
}

func (this *ClientController) Post() {
options := this.Input().Get("options")
beego.Info(options)
//請求檢查方法
if options != "" {
switch options {
case "login":
this.login()
case "register":
this.register()
default:
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "無對應處理方法!", "time": time.Now().Format("2006-12-12 12:12:12")}
this.ServeJSON()
return
}
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "options為空白", "time": time.Now().Format("2006-12-12 12:12:12")}
this.ServeJSON()
return

}

}

 

**************************************************************************************************************************************

第六步 主的client檔案調用新檔案client_user.go中的登陸,註冊方法

client_user.go

package controllers

import (
"an/models"
"github.com/astaxie/beego"
"time"
)

//登入
func (this *ClientController) login() {

//從前端擷取資料資訊
pwd := this.Input().Get("Pwd")
tel := this.Input().Get("Tel")

beego.Info(pwd)
beego.Info(tel)

if tel == "" || pwd == "" {
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "帳號或密碼不可為空白", "time": time.Now().Format("2006-12-12 12:12:12")}
this.ServeJSON()
return
}

//判斷該手機號是否註冊
user, err := models.GetUserByTel(tel)

if err != nil { //如果有錯誤
beego.Info(err)
}
if user != nil { //如果有該使用者
if user.Pwd == pwd {
user.Pwd = ""
this.Data["json"] = map[string]interface{}{"status": 200, "user": user, "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return

}
}

this.Data["json"] = map[string]interface{}{"status": 400, "msg": "帳號或密碼不為空白,請重新登入", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}

//註冊
func (this *ClientController) register() {
tel := this.Input().Get("Tel")
beego.Info(tel)
if tel == "" { //如果手機號為空白
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "帳號或密碼不為空白 ,請檢查後重新登入!", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
//判斷該手機號是否已經註冊
user, err := models.GetUserByTel(tel)
if err != nil { //如果有錯誤
beego.Info(err)
this.Data["json"] = map[string]interface{}{"status": 400, "msg": err.Error(), "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}
if user != nil { //如果有該使用者
this.Data["json"] = map[string]interface{}{"status": 400, "msg": "該手機號登入!", "time": time.Now().Format("2006-01-02 15:04:05")}
this.ServeJSON()
return
}

}

*********************************************************************************************************************************

第七步 在routers裡面註冊路徑,由於views中檔案註冊的路徑為/client,因此新加路徑為

beego.Router("/client", &controllers.ClientController{})

router.go檔案

package routers

import (
"an/controllers"
"github.com/astaxie/beego"
)

func init() {
beego.Router("/client", &controllers.ClientController{})
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.