下面代碼實現的功能是:用node.js連接mysql實現用戶的注冊和登錄,這里主要實現的是后端的驗證代碼,前端顯示部分沒具體寫出。
整個程序的流程是這樣的:
1.首先建立數據庫reji,數據表user,user表中有account(主鍵)password和name三個
2.用戶進入注冊界面,用戶輸入要注冊的賬號和密碼,前端把用戶輸入的信息發送給后端,后端對數據進行判斷(查詢數據庫中是否有這個帳號),如果還未注冊就允許注冊同時把帳號密碼和名稱寫入數據庫中並給前端返回1,如果已經注冊了就不再允許注冊並給前端返回0
2用戶進入登錄界面,用戶輸入要登錄的賬號和密碼,前面把用戶輸入的信息發送給后端,后端對數據進行判斷(查詢這個帳號對應的密碼是否與用戶輸入的密碼相符),如果查詢到的密碼不符則登錄失敗后端給前面返回0,如果查詢到的密碼與用戶輸入的密碼相符后端給前面返回1.
后端部分代碼:
var mysql = require('mysql'); //導入mysql包 var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'reji' }); connection.connect(); var express = require('express'); var app = express(); app.use(express.static('public')); //參數里為'/'則是默認打開頁面 app.get('/', function (req, res) { res.sendFile( __dirname + "/" + "index.html" ); }) app.get('/login',function (req,res) { var response = { "account":req.query.account, "password":req.query.password, }; var selectSQL = "select account,password from user where account = '"+req.query.account+"' and password = '"+req.query.password+"'"; //var selectSQL = "select password from user where account='"+req.query.account+"'"; var addSqlParams = [req.query.account,req.query.password]; connection.query(selectSQL,function (err, result) { if(err){ console.log('[login ERROR] - ',err.message); return; } //console.log(result); if(result=='') { console.log("帳號密碼錯誤"); res.end("0");//如果登錄失敗就給客戶端返回0, } else { console.log("OK"); res.end("1");//如果登錄成就給客戶端返回1 } }); console.log(response); //res.end(JSON.stringify(response)); }) app.get('/register.html', function (req, res) { res.sendFile( __dirname + "/" + "register.html" ); }) //注冊模塊 var addSql = 'INSERT INTO user(account,password,name) VALUES(?,?,?)'; app.get('/process_get', function (req, res) { // 輸出 JSON 格式 var response = { "account":req.query.account, "password":req.query.password, "name":req.query.name }; var addSqlParams = [req.query.account,req.query.password,req.query.name]; connection.query(addSql,addSqlParams,function (err, result) { if(err){ console.log('[INSERT ERROR] - ',err.message); res.end("0");//如果注冊失敗就給客戶端返回0 return;//如果失敗了就直接return不會繼續下面的代碼 } res.end("1");//如果注冊成功就給客戶端返回1 console.log("OK"); }); console.log(response); //res.end(JSON.stringify(response)); }) var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port console.log("應用實例,訪問地址為 http://%s:%s", host, port) })
前端部分代碼:index.html
<html> <body> <form action="http://127.0.0.1:3000/login" method="GET"> 帳號: <input type="text" name="account"> <br> 密碼: <input type="text" name="password"> <input type="submit" value="Submit"> </form> </body> </html>
register.html
<html> <body> <form action="http://127.0.0.1:3000/process_get" method="GET"> 帳號: <input type="text" name="account"> <br> 密碼: <input type="text" name="password"><br> 姓名: <input type="text" name="name"> <input type="submit" value="Submit"> </form> </body> </html>
運行結果:首先是打開服務器
在瀏覽器中輸入127.0.0.1:3000 會跳出index.html的頁面
應為我們在index.html中沒有加上注冊按鈕所以,想進入注冊頁面需要我們手動去查看,在瀏覽器網址輸入欄中輸入127.0.0.1:3000/resiger.html 即可進入注冊頁面