Node.js實(shí)現(xiàn)登陸注冊(cè)功能
本文實(shí)例為大家分享了Node.js實(shí)現(xiàn)登陸注冊(cè)的具體代碼,供大家參考,具體內(nèi)容如下
1.服務(wù)器端
在項(xiàng)目里創(chuàng)建一個(gè)json文件用來(lái)存儲(chǔ)數(shù)據(jù),通過(guò)express創(chuàng)建服務(wù)器對(duì)象,fs模塊對(duì)文件進(jìn)行讀寫。
運(yùn)用post請(qǐng)求
代碼如下:
var express = require('express') var fs = require("fs") var app = express() app.use(express.static("www")) app.use(express.urlencoded({extended:false})) // 先獲取user.json里面的數(shù)據(jù)和req.body進(jìn)行對(duì)比 fs.readFile("./user.json",function(err,data){ ? ? if (err) { ? ? ? ? userArr = [] ? ? }else{ ? ? ? ? userArr = JSON.parse(data) ? ? } }) app.post("/zhuce",function(req,res,next){ ? ? // 輸入框要驗(yàn)證的數(shù)據(jù)判斷機(jī)制: ? ? // 可以把正則表達(dá)式判斷放在前端:用戶體驗(yàn)好,判斷快 ? ? // 也可以把正則表達(dá)式判斷放在后端:判斷相對(duì)安全,判斷慢 ? ? // console.log(req.body); ? ? var u = req.body.v1 ? ? var p = req.body.v2 ? ? var isZhuce = userArr.some(function(v,i,a){ ? ? ? ? return v.user === u ? ? }) ? ? if (isZhuce) { ? ? ? ? res.json({ ? ? ? ? ? ? code:201, ? ? ? ? ? ? shibai:"該賬號(hào)已注冊(cè)" ? ? ? ? }) ? ? }else{ ? ? ? ? userArr.push({user:`${req.body.v1}`,psw:`${req.body.v2}`}) ? ? ? ? fs.writeFile("./user.json",JSON.stringify(userArr),function(){ ? ? ? ? ? ? res.json({ ? ? ? ? ? ? ? ? code:200, ? ? ? ? ? ? ? ? chenggong:"index2.html" ? ? ? ? ? ? })? ? ? ? ? }) ? ? } ? }) ? app.post("/denglu",function(req,res,next){ ? ? var deng = userArr.findIndex(function(v,i,a){ ? ? ? ? ? ? return v.user === req.body.v1 ? ? }) ? ? console.log(deng); ? ? if (deng != -1) { ? ? ? ? if (userArr[deng].psw === req.body.v2) { ? ? ? ? ? ? res.json({ ? ? ? ? ? ? ? ? code:251, ? ? ? ? ? ? ? ? mima:"登錄成功" ? ? ? ? ? ? }) ? ? ? ? }else{ ? ? ? ? ? ? res.json({ ? ? ? ? ? ? ? ? code:252, ? ? ? ? ? ? ? ? mima:"密碼錯(cuò)誤" ? ? ? ? ? ? }) ? ? ? ? } ? ? }else{ ? ? ? ? res.json({ ? ? ? ? ? ? code:250, ? ? ? ? ? ? mima:"該賬號(hào)未注冊(cè)" ? ? ? ? }) ? ? } }) ? app.listen(3000,function(){ ? ? console.log("run"); })
2.注冊(cè)頁(yè)面
在前端發(fā)送post請(qǐng)求傳送數(shù)據(jù),代碼如下:
<!DOCTYPE html> <html lang="en"> <head> ? ? <meta charset="UTF-8"> ? ? <meta http-equiv="X-UA-Compatible" content="IE=edge"> ? ? <meta name="viewport" content="width=device-width, initial-scale=1.0"> ? ? <title>注冊(cè)界面</title> </head> <body> ? ? <form action=""> ? ? ? ? <!-- pattern 正則判斷 ? ? ? ? required 允許輸入框提交進(jìn)行正則判斷--> ? ? ? ? 用戶名:<input type="text" name="user" required id="user" pattern="^1[3578]\d{9}$"><br> ? ? ? ? 密 碼:<input type="text" name="psw" required id="psw" pattern="^.{6,}$"><br> ? ? ? ? 確認(rèn)密碼:<input type="text" name="cpsw" id="cpsw"><br> ? ? ? ? <button id="b1">提交</button> ? ? </form> ? ? <script src="./jquery.js"></script> ? ? <script> ? ? ? ? $("#b1").on("click",function(e){ ? ? ? ? ? ? e.preventDefault() ? ? ? ? ? ? if (psw.value!=cpsw.value) { ? ? ? ? ? ? ? ? alert("兩次密碼不一致,傻逼") ? ? ? ? ? ? ? ? return ? ? ? ? ? ? } ? ? ? ? ? ? $.post({ ? ? ? ? ? ? ? ? url:"http://127.0.0.1:3000/zhuce", ? ? ? ? ? ? ? ? data:{ ? ? ? ? ? ? ? ? ? ? v1:user.value, ? ? ? ? ? ? ? ? ? ? v2:psw.value, ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? success:res=>{ ? ? ? ? ? ? ? ? ? ? if (res.shibai) { ? ? ? ? ? ? ? ? ? ? ? ? alert(`${res.shibai}`) ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if (res.chenggong) { ? ? ? ? ? ? ? ? ? ? ? ? location.href = `${res.chenggong}` ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? }) ? ? ? ? ? ? }) ? ? </script> ? </body> </html>
3.登錄頁(yè)面
依然使用post請(qǐng)求
<!DOCTYPE html> <html lang="en"> <head> ? ? <meta charset="UTF-8"> ? ? <meta http-equiv="X-UA-Compatible" content="IE=edge"> ? ? <meta name="viewport" content="width=device-width, initial-scale=1.0"> ? ? <title>Document</title> </head> <body> ? ? <form action=""> ? ? ? ? <!-- pattern 正則判斷 ? ? ? ? required 允許輸入框提交進(jìn)行正則判斷--> ? ? ? ? 用戶名:<input type="text" name="user" required id="user" pattern="^1[3578]\d{9}$"> ? ? ? ? 密 碼:<input type="text" name="psw" required id="psw" pattern="^.{6,}$"> ? ? ? ? <button id="b1">提交</button> ? ? </form> ? ? <script src="./jquery.js"></script> ? ? <script> ? ? ? ? $("#b1").click(function(e){ ? ? ? ? ? ? e.preventDefault() ? ? ? ? ? ? $.post({ ? ? ? ? ? ? ? ? url:"http://127.0.0.1:3000/denglu", ? ? ? ? ? ? ? ? data:{ ? ? ? ? ? ? ? ? ? ? v1:user.value, ? ? ? ? ? ? ? ? ? ? v2:psw.value, ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? success:function(res){ ? ? ? ? ? ? ? ? ? ? console.log(res); ? ? ? ? ? ? ? ? ? ? alert(`${res.mima}`) ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }) ? ? ? ? }) ? ? </script> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Node.js利用Express實(shí)現(xiàn)用戶注冊(cè)登陸功能(推薦)
- Java與JavaScript前后端實(shí)現(xiàn)手機(jī)號(hào)驗(yàn)證碼一鍵注冊(cè)登陸抖音流程
- JSP動(dòng)態(tài)實(shí)現(xiàn)web網(wǎng)頁(yè)登陸和注冊(cè)功能
- js實(shí)現(xiàn)登陸與注冊(cè)功能
- js操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)注冊(cè)和登陸的簡(jiǎn)單實(shí)例
- mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸
相關(guān)文章
基于html5和nodejs相結(jié)合實(shí)現(xiàn)websocket即使通訊
HTML5 擁有許多引人注目的新特性,如 Canvas、本地存儲(chǔ)、多媒體編程接口、WebSocket 等等。雖然現(xiàn)在大家把它捧的很火的樣子,但是個(gè)人認(rèn)為它還需要其他平臺(tái)的支持才能真正的"火起來(lái)"2015-11-11Egret引擎開發(fā)指南之發(fā)布項(xiàng)目
當(dāng)我們制作完成一個(gè)項(xiàng)目后,我們需要把項(xiàng)目發(fā)布為正式版本,并放到網(wǎng)上提供給玩家。那么在egret中簡(jiǎn)單的使用build命令并非打包最終的正式版文件。你還需要進(jìn)行最終的發(fā)布操作。2014-09-09autojs的nodejs打包成品app經(jīng)驗(yàn)分享
這篇文章主要為大家介紹了autojs的nodejs打包成品app經(jīng)驗(yàn)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01nodejs基礎(chǔ)之多進(jìn)程實(shí)例詳解
這篇文章主要介紹了nodejs基礎(chǔ)之多進(jìn)程,結(jié)合實(shí)例形式分析了nodejs多進(jìn)程的概念、原理、相關(guān)函數(shù)使用方法及操作注意事項(xiàng),需要的朋友可以參考下2018-12-12