node+ajax+mysql實現登入註冊

makeFoxPlay發表於2019-02-16

簡述

我是一個前端的小白,學長推薦這個社群給我已經有一段時間了。但是始終覺得自己的水平太低,一直沒在這上

面寫點什麼。最近開始學習nodejs,就做了一個demo來分享給大家.第一次寫,不足的地方還望海涵。

註冊的html

基本的表單html程式碼就不詳細說了,這個不是重點,直接上程式碼:
 <div class="regist">
     <h2>註冊</h2>
     <div class="inputbox">
         <input type="text" name="fullname" placeholder="  暱稱" id="nikename">
         <input type="text" name="email" placeholder="  郵箱" id="email-two">
         <input type="password" name="password" placeholder="  密碼" id="password-two">
     </div>
     <button id="register">註冊</button>
 </div>

註冊的js

這裡的js主要使用的是jquery,不懂jquery的可以先去了解。jquery使用ajax是特別方便的,這裡以get的方式傳遞給後臺username,nickname,password三個引數。url裡面寫上與後臺協商的地址,然後再是成功與失敗的回撥函式,常用ajax的小夥伴是不是覺得很常規。是的,這樣寫無論後臺語言是什麼就都沒關係了。
    $("#register").click(function() {
        $.ajax({
            url: "/regist",
            type: "GET",
            data: {
                username: $("#email-two").val(),
                nickname: $("#nikename").val(),
                password: $("#password-two").val()
            },
            success: function(data){    //    alert後臺的返回值
                alert(data);
            },
            error: function(){
                alert(`訪問失敗`);
            }
        });
    });

註冊的node

這裡我使用的nodejs的express框架,不懂express框架的可以先去了解一下。這個框架上手很容易的,很適合我們這樣的新手。如果你想直接使用這裡的程式碼,肯定是會報錯的,需要你拿npm安裝express和mysql。當然至於mysql你需要在本地安裝mysql,不會一點mysql的先去了解一下mysql。其實你也可以用nodejs把資料寫到檔案裡面,就可以不用mysql了。其他的見程式碼註解。
var express=require("express");    //    匯入express
var events = require(`events`);
var emitter = new events.EventEmitter();    //    建立監聽器物件(你也可以直接返回值,不用這個)
var app=express();
var path=require("path");
var mysql=require("mysql");    //    匯入mysql
var dirname=__dirname;    //    指向當前js的路徑
app.use(express.static(path.join(__dirname, `project`)));    //    這裡你能夠直接訪問你的靜態檔案,比如你的index.html
    
/*----註冊---*/

  app.get("/regist",function(req,res){    //    獲取get的請求的路徑,拿到前臺傳來的引數
    //    建立資料庫連線
    var connection=mysql.createConnection({
        host:"localhost",
        user:"root",
        password:"您的密碼",
        database:"node"
    });
    //    連線資料庫
    connection.connect();
    //    監聽資料庫寫入返回的引數
    emitter.on("ok",function(){
        return res.end("註冊成功");    //    向前臺返回資料
    });
    emitter.on("false",function(){
        return res.end("使用者名稱已存在");    //    向前臺返回資料
    });

    var sql="insert into user(username,password,nickname) values(?,?,?)";    //    向user這個表裡寫入資料
    var sqlValue=[req.query.username,req.query.password,req.query.nickname];
    connection.query(sql,sqlValue,function(err){    //    執行sql語句
        if(err){
            console.log(err.message);    //    輸出資料庫錯誤資訊
            emitter.emit("false");    //    返回失敗
        }
        emitter.emit("ok");    //    返回成功
    });
    connection.end();    //    關閉資料庫
  });
app.listen(8081);    //    設定請求的埠號,你可以在本地訪問localhost://8081(隨便寫一個沒被佔用的埠就好)

登入html

同樣是簡單的表單內容,直接上程式碼了:
<div class="login">
   <h2>登陸</h2>
   <div class="inputbox">
     <input type="text" name="email" placeholder="  郵箱" id="email-one">
     <input type="password" name="password" placeholder="  密碼" id="password-one">
     <input type="text" name="authCode" placeholder="  驗證碼" id="authcode-one">
   </div>
   <button id="userLogin">登陸</button>
</div>

登入的js

這裡使用的同樣是一個ajax請求,基本跟註冊的請求差不多,傳使用者名稱跟密碼到後臺,就不多說了。
    $("#userLogin").click(function(){
        $.ajax({
          url: "/login",
          type: "GET",
          data: {
              username: $("#email-one").val(),
              password: $("#password-one").val()
          },
          success: function(data){    //    alert後臺返回的引數
              alert(data);
          },
          error: function(){
            alert(`訪問失敗`);
          }
      });
    });

登入的node

這裡也跟上面的註冊nodejs差不多,只是邏輯稍稍有點不同,請看註釋。這裡登入也寫在同一個js檔案裡面,就不一一地去匯入某些檔案了,處著app這個物件直接用,這裡就不用監聽器。
app.get("/login",function(req,res){    //    獲取登入傳過來的值
    //    建立資料庫連線
    var connection=mysql.createConnection({
        host:"localhost",
        user:"root",
        password:"您的密碼",
        database:"node"
    });
    //    連線資料庫
    connection.connect();
    var sql="select * from user where username=`"+req.query.username+"` and password=`"+req.query.password+"`";    //    在資料庫裡面查詢使用者名稱跟密碼
    connection.query(sql,function(err,result){    //    執行sql語句,並返回結果
        if(err){
            res.end("登入失敗");    //    資料庫錯誤
            console.log(err);
        }
        if(result.length==0){    
            res.end("使用者名稱密碼不正確");    //    資料庫裡面沒找到配對的內容返回引數
        }else{
            res.end("登陸成功");    //返回登入成功
        }
    })
    connection.end();    //    關閉資料庫
})
這是小白第一次發文章,希望與跟我一樣的小白共享。本文有什麼不足之處希望各大神斧正。

相關文章