用go語言做一個簡單的登入,大家不妨來看一下
現在的網站可以說登入註冊幾乎就是首要的,所以今天就給大家來一個簡約版的登入吧
先來給大家看一下效果吧
有些過分簡潔,大家別見怪啊
接下來是成功的效果
我只是提供一個思路和方法至於美化,大家隨意
接下來是失敗的效果
接下來就是程式碼了
前端程式碼
<html>
<head><title>使用者登入</title></head>
<body>
<form action="http://localhost:8080/test" method="post">
使用者名稱:<input type="text" name="name">
密 碼:<input type="text" name="pasw">
<input type="submit" value="登入">
</form>
</body>
</html>
後端程式碼
package main
import (
"fmt"
"io/ioutil"
"net/http"
"database/sql"
_"github.com/Go-SQL-Driver/MySQL"
"reflect"
)
func main() {
http.HandleFunc("/test", hand)
http.HandleFunc("/register",register)
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("err")
}
}
func hand(w http.ResponseWriter, r *http.Request) {
db,err := sql.Open("mysql" ,"root:[email protected](localhost:3306)/yttzcom?charset=utf8")
nam := r.FormValue("name")
pas := r.FormValue("pasw")
query, err := db.Query("select * from tmpdb.tmptab where name = '"+nam+"' and psw = '"+pas+"'")
checkErr(err)
v := reflect.ValueOf(query)
fmt.Println(v)
//number := printResult(query)
dates :=printResult(query)
w.Write([]byte(dates))
defer r.Body.Close()
}
func register(w http.ResponseWriter, r *http.Request){
fmt.Println("register")
w.Write([]byte("there is register!"))
defer r.Body.Close()
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("read err")
}
fmt.Println(string(body))
}
func checkErr(errMasg error) {
if errMasg != nil {
panic(errMasg)
}
}
func printResult(query *sql.Rows) string {
column, _ := query.Columns() //讀出查詢出的列欄位名
values := make([][]byte, len(column)) //values是每個列的值,這裡獲取到byte裡
scans := make([]interface{}, len(column)) //因為每次查詢出來的列是不定長的,用len(column)定住當次查詢的長度
for i := range values { //讓每一行資料都填充到[][]byte裡面
scans[i] = &values[i]
}
results := make(map[int]map[string]string) //最後得到的map
i := 0
for query.Next() { //迴圈,讓遊標往下移動
if err := query.Scan(scans...); err != nil { //query.Scan查詢出來的不定長值放到scans[i] = &values[i],也就是每行都放在values裡
fmt.Println(err)
return "3"
}
row := make(map[string]string) //每行資料
for k, v := range values { //每行資料是放在values裡面,現在把它挪到row裡
key := column[k]
row[key] = string(v)
}
results[i] = row //裝入結果集中
i++
}
for k, v := range results { //查詢出來的陣列
fmt.Println(k)
fmt.Println(v)
record :="<b>登陸成功</b>\nid:"+results[k]["id"]+"\n"+"使用者名稱:"+results[k]["name"]+"\n"+"密碼:"+results[k]["psw"]
return record
}
return "<b>使用者名稱或密碼錯誤</b>"
}
是不是有人就會問,如果登入成功了怎麼跳轉頁面呢是不?其實很簡單到時只需要在登陸成功的時候加個模板,可是模板要怎麼用呢,怎樣修改模板裡面的內容呢,下面就給大家一個簡單的同樣是登入的效果,到時只需將登陸成功的模板,修改成你自己的登入成功的頁面即可,接下來是效果
前端程式碼
<html>
<head><title>使用者登入</title></head>
<body>
<form action="http://localhost:8080/test" method="post">
使用者名稱:<input type="text" name="name">
密 碼:<input type="text" name="pasw">
<input type="submit" value="登入">
</form>
<p><b> {{.Stutas}}</b></P>
</body>
</html>
後端程式碼
package main
import (
"fmt"
"io/ioutil"
"net/http"
"html/template"
"database/sql"
_"github.com/Go-SQL-Driver/MySQL"
"reflect"
)
type stu struct{
Stutas string
}
func main() {
http.HandleFunc("/test", hand)
http.HandleFunc("/register",register)
http.HandleFunc("/",login)
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("err")
}
}
func login(w http.ResponseWriter, r *http.Request){
t, _ := template.ParseFiles("loginss.html")
t.Execute(w,"")
}
func hand(w http.ResponseWriter, r *http.Request) {
db,err := sql.Open("mysql","root:[email protected](localhost:3306)/yttzcom?charset=utf8")
nam := r.FormValue("name")
pas := r.FormValue("pasw")
query, err := db.Query("select * from tmpdb.tmptab where name = '"+nam+"' and psw = '"+pas+"'")
checkErr(err)
v := reflect.ValueOf(query)
fmt.Println(v)
dates :=printResult(query)
data :=stu{dates}
t, _ := template.ParseFiles("loginss.html")
t.Execute(w,data)
defer r.Body.Close()
}
func register(w http.ResponseWriter, r *http.Request){
fmt.Println("register")
w.Write([]byte("there is register!"))
defer r.Body.Close()
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("read err")
}
fmt.Println(string(body))
}
func checkErr(errMasg error) {
if errMasg != nil {
panic(errMasg)
}
}
func printResult(query *sql.Rows) string {
column, _ := query.Columns() //讀出查詢出的列欄位名
values := make([][]byte, len(column)) //values是每個列的值,這裡獲取到byte裡
scans := make([]interface{}, len(column)) //因為每次查詢出來的列是不定長的,用len(column)定住當次查詢的長度
for i := range values { //讓每一行資料都填充到[][]byte裡面
scans[i] = &values[i]
}
results := make(map[int]map[string]string) //最後得到的map
i := 0
for query.Next() { //迴圈,讓遊標往下移動
if err := query.Scan(scans...); err != nil { //query.Scan查詢出來的不定長值放到scans[i] = &values[i],也就是每行都放在values裡
fmt.Println(err)
return "3"
}
row := make(map[string]string) //每行資料
for k, v := range values { //每行資料是放在values裡面,現在把它挪到row裡
key := column[k]
row[key] = string(v)
}
results[i] = row //裝入結果集中
i++
}
for k, v := range results { //查詢出來的陣列
fmt.Println(k)
fmt.Println(v)
record :="登陸成功"+"\n"+"id:"+results[k]["id"]+"\n"+"使用者名稱:"+results[k]["name"]+"\n"+"密碼:"+results[k]["psw"]
return record
}
return "使用者名稱或密碼錯誤"
}
如果有不懂的地方,可以在下方評論和留言
相關推薦
用go語言做一個簡單的登入,大家不妨來看一下
現在的網站可以說登入註冊幾乎就是首要的,所以今天就給大家來一個簡約版的登入吧 先來給大家看一下效果吧 有些過分簡潔,大家別見怪啊 接下來是成功的效果 我只是提供一個思路和方法至於美化,大家隨意 接下來是失敗的效果 接下來就是程式碼了 前
用C語言寫一個簡單的三子棋,實現玩家與電腦的對戰
原始碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 寫一個三子棋 */ //邏輯: //1. 畫
用c語言做一個棧,完成逆波蘭表示式
先用c語言,實現了一個棧結構,在用棧完成逆波蘭表示式。 包含中綴表示式 -》 字尾表示式, 用棧完成計算。 // main.m // 逆波蘭表示式 // // Created by 郭朝順 on 2018/5/10星期四. // Copyright © 201
用Java GUI做一個簡單的管理系統
java 管理系統 gui 1.先完成主頁面MainUI(代碼如下)package com.pag_1; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.
用python語言寫一個簡單的計算器
ali pla ket 列表 調用 語言 括號 lac 跳出循環 假如我們有這樣一個式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )思
用c語言實現一個簡單的通訊錄
通訊錄的c語言實現原始碼 簡單通訊錄的實現還是包括三個原始檔,test.c(實現通訊錄主邏輯),txl.c(實現用到的各個函式),txl.h(存放txl中用到的各種標頭檔案與宣告)。 txl.h #ifndef __TXL_H__//**txl.h** #defi
爬蟲教程」Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發
用C語言寫一個簡單的掃雷小遊戲
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 語言寫一個簡單的掃雷遊戲 */ // 1.寫一個遊戲選單 M
Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發環境,對於必須的
「爬蟲教程」Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發
為什麼我堅持用Go語言做Web應用開發框架?
點選上方“CSDN”,選擇“置頂公眾號”關鍵時刻,第一時間送達!【CSDN編者按】很多情況下,企
go 語言實現一個簡單的 web 伺服器
學習Go語言的一些感受,不一定準確。假如發生戰爭,JAVA一般都是充當航母戰鬥群的角色。一旦出動,就是護衛艦、巡洋艦、航母艦載機、預警機、電子戰飛機、潛艇等等浩浩蕩蕩,殺將過去。(JVM,數十個JAR包,Tomcat中介軟體,SSH框架,各種配置檔案...天生就是重量級的,
做一個簡單登入介面
先寫好登入介面的佈局,記住要寫一個Checkbox。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an
[計網] 用python語言開發一個簡單的web伺服器和客戶端
伺服器: 當客戶聯絡時建立一個連線套接字 從這個連線接收HTTP請求(*) 解釋該請求所請求的特定檔案 從伺服器的檔案系統獲取該檔案 併發送檔案內容
GO語言實現一個簡單的網頁爬蟲
具體思路是利用go語言提供的遠端包github.com/PuerkitoBio/goquery,但是有時候連結會出錯,導致程式編譯不通過,我們可以直接將這個包下載到本地,然後將import匯入地址修改為本地的goquery地址即可首先建立檔案,儲存從網頁上扒下來的內容接下來使
用C語言編寫一個簡單的詞法分析程序
c++語言 bool mage com span 如果 txt文件 需要 關閉 問題描述: 用C或C++語言編寫一個簡單的詞法分析程序,掃描C語言小子集的源程序,根據給定的詞法規則,識別單詞,填寫相應的表。如果產生詞法錯誤,則顯示錯誤信息、位置,並試圖從錯誤中恢復。簡單的
用 Go 語言實現一個 telegram 的 bot
嘗試 用 Go 語言做了一個 telegram 的 bot . 用來簡單實現對話(復讀)。 獲得 tele
Unity連線MySql,做一個簡單的登入系統
有過開發經驗的同學都應該知道,資料庫在與程式連線時,一般都需要相應的驅動包,這裡我們以MySql與Unity3D連線為例 一、準備所需要的全部程式集 1、首先從D:\Unity\Editor\Data\Mono\lib\mono\2.0(Unity安裝目錄)中找到以下5個
閒來無事,在微信推文中看到一個炫酷的具有動態特效的中國地圖,是用R語言做的,於是嘗試了一下
[toc] # 最終的效果圖如下: ![](https://img2020.cnblogs.com/blog/1692343/202103/1692343-20210330160758328-1708125696.png) ![](https://img2020.cnblogs.com/blog/16923
Go語言建立一個最簡單的服務端點
一個 nds Coding port struct pac quest com handler handlers/handlers.go package handlers import ( "encoding/json" "net/http" )