[Day7] Node.js利用Express實現使用者註冊登陸功能(2)
[Day7] Node.js利用Express實現使用者註冊登陸功能(2)
文章目錄
要求
- 瞭解Express框架
- 瞭解node.js常用模組:express,body-parser,mysql
- 瞭解express Router
- 瞭解HTML form表單
- 瞭解MySQL Server 及安裝使用
- 瞭解SQLyog使用
環境
- OS: Win10
- Node.js: v12.19.0
- Express: v4.17.1
- Yarn: v1.22.10
- 使用VScode IDE
- body-parser:1.19.0
- mysql: 2.18.1
- MySQL Server:5.7
- SQLyog:V12.9
準備
首先在Win10上安裝Mysql,一路Next就行。安裝完成使用SQLyog連線MySQL Server。連線成功需要建立資料庫和資料表
Schema:
CREATE TABLE
user
(
username
char(20) NOT NULL,
password
char(20) NOT NULL,
address
char(20) DEFAULT NULL,
phonenumber
char(20) DEFAULT NULL,
logintime
int(20) DEFAULT NULL,
id
int(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id
),
KEYusername
(username
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
實戰
前端
3個page, login.html, register.html.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸註冊</title>
<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" />
</head>
<body>
<a href="./register.html">註冊</a>
<a href="./login.html">登入</a>
</body>
</head>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸註冊</title>
<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" />
</head>
<body>
<form action="/login" method="GET" >
<label for="">賬號:</label>
<input name="user" type="text" placeholder="請輸入賬號">
<br>
<label for="">密碼:</label>
<input type="password" name="password" placeholder="請輸入密碼">
<br>
<input type="submit" value="登入">
</form>
</body>
</head>
</html>
register.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陸註冊</title>
<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" />
</head>
<body>
<form action="/register" method="POST">
<label for="">賬號:</label>
<input name="user" type="text" placeholder="請輸入賬號">
<br>
<label for="">密碼:</label>
<input name="psw" type="password" placeholder="請輸入密碼">
<br>
<label for="">重複密碼:</label>
<input name="pswa" type="password" placeholder="請重複密碼">
<br>
<input type="submit" value="註冊">
</form>
</body>
</head>
</html>
後端
server.js
var express = require("express");
var bodyParser = require("body-parser");
var router = require("./routers");
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.use('/', router);
module.exports = app;
Router
router/index.js, 呼叫封裝好的資料庫介面:queryUer, addUser
const express=require("express");
const dao = require("../dao/db");
const router=express.Router();
router.get("/login", function(req,res){
console.dir(req.query);
try{
dao.queryUser({username:req.query.user},function(err,record){
if(err){
console.log(err);
throw error;
}
console.log(record);
if(record && record.password == req.query.password){
res.send(`${req.query.user}:登陸成功`);
}else{
res.send(`${req.query.user}:登陸失敗,檢查登陸資訊是否正確`);
}
});
} catch(error){
console.log(error);
res.send(`${req.body.user}: 登陸失敗`);
}
})
router.post("/register", function(req,res){
console.dir(req.body);
try{
if(req.body.psw == req.body.pswa){
dao.addUser({username:req.body.user,password:req.body.psw});
res.send(`${req.body.user}: 註冊成功`);
} else {
console.log(error);
res.send(`${req.body.user}: 註冊失敗:,檢查登陸資訊是否正確`);
}
} catch(error){
console.log(error);
res.send(`${req.body.user}: 註冊失敗`);
}
})
module.exports = router;
資料庫介面db.js
dao/db.js
var mysqlClient= require("./mysql");
function addUser (userInfo,callabck){
console.log("addUser:"+ userInfo);
var sql= `insert into user(username,password) values('${userInfo.username}','${userInfo.password}')`;
console.log("sql:"+ sql);
mysqlClient(sql,function(err,rows){
if(err){
console.log("err:"+err);
callabck(err,null);
} else{
console.log("addUser result:");
console.log(rows);
callabck(null,rows);
}
})
}
function queryUser (userInfo,callabck){
console.log("queryUser:"+ userInfo);
var sql= `select * from user where username='${userInfo.username}'`;
console.log("sql:"+ sql);
mysqlClient(sql, function(err,rows){
if(err){
console.log("err:"+err);
callabck(err,null);
} else{
rows && rows.length>0 ? callabck(null,rows[0]): callabck(null,null);
}
})
}
exports.addUser = addUser;
exports.queryUser = queryUser;
dao/mysql.js
const mysql = require("mysql");
const pool = mysql.createPool({
host:"localhost",
user:"root",
password:"*****",
database:"test"
});
function query(sql,callback){
pool.getConnection(function(err,connection){
if(err){
callback(err,null);
return
}
connection.query(sql, function (err,rows) {
callback(err,rows);
connection.release();
});
});
}
module.exports = query;
mysql module
yarn add mysql
執行index.js
cd src/ && node index.js
結果及演示
瀏覽器看效果及整個過程。
相關文章
- Vue.js + element-ui + express + mongoDB 實現註冊登入功能Vue.jsUIExpressMongoDB
- Struts2+AJAX+JQuery 實現使用者登入與註冊功能。jQuery
- 快速搭建Node.js(Express)使用者註冊、登入以及授權Node.jsExpress
- 使用集合實現註冊登陸功能,第一步: 提示使用者選擇功能, A(註冊) B(登陸) 。 要求: 功能選擇 的時候要忽略大小寫。
- express+vue+mongodb+session 實現註冊登入ExpressVueMongoDBSession
- 使用者登陸註冊【JDBC版】JDBC
- node+express+mongDB實現簡單登入註冊Express
- express基於JWT實現使用者登陸授權ExpressJWT
- 藉助小程式雲開發實現小程式的登陸註冊功能
- node.js郵箱註冊,啟用,登陸相關案例Node.js
- Laravel 實現 passport 使用者註冊登入LaravelPassport
- AJAX+JAVA使用者登陸註冊驗證Java
- 前端開發--登陸註冊前端
- PHP會話(Session)實現使用者登陸功能PHP會話Session
- 前端利用ajax實現使用者註冊頁面前端
- 微信授權註冊或微信登陸 微信授權登陸 基於若依vue 實現Vue
- Node.js實現前後端互動——使用者登陸Node.js後端
- PHP 會話(Session)如何實現使用者登陸功能PHP會話Session
- Laravel5.8 入門系列二,快速實現使用者註冊登入功能Laravel
- SSM 重構註冊登陸介面SSM
- PHP+AJAX實現賬號註冊和登陸,附可用demoPHP
- 簡單實現登陸註冊gui介面以及打包成exe檔案GUI
- 商城系統:包含使用者註冊/使用者登陸/商品瀏覽/我的購物車功能.
- vue+elementUI完成註冊及登陸VueUI
- 10.註冊和登入功能實現(3)—— 註冊資料寫入資料庫資料庫
- koa2+vue實現登陸以及是否登陸控制Vue
- Node.js+Mysql+Vue+ElementUI 實現登入註冊登出功能Node.jsMySqlVueUI
- 使用者註冊/登入模組實踐
- PHP+MySQL實現使用者登入註冊API介面PHPMySqlAPI
- 網站實現一個全域性的方法,實現導航欄顯示登陸註冊按鈕或者登入使用者的資訊網站
- Java Web簡單登陸功能的實現JavaWeb
- Django2 Web 實戰02-使用者註冊登入退出DjangoWeb
- Nuxt 實現使用者鑑權登陸UX
- 不同使用者登陸模組的實現
- QQ登陸功能的實現2 - rolends1986 - 部落格園
- laravel使用者登入註冊Laravel
- 登陸註冊按鈕的樣式設計
- 登陸註冊頁面html程式碼(仿知乎)HTML