当前位置:Gxlcms > 数据库问题 > node js实战:带数据库,加密的注册登录表单

node js实战:带数据库,加密的注册登录表单

时间:2021-07-01 10:21:17 帮助过:6人阅读

crypto = require("crypto"); module.exports = function(mingma){ var md5 = crypto.createHash(md5); var password = md5.update(mingma).digest(base64); return password; }

模板:

login.ejs

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>请登录</h1>
    <div>
        <form action="" method="post">
            <p>
                登录名: <input type="text" id="dengluming"/>
            </p>
            <p>
                密码: <input type="password" id="mima"/>
            </p>
            <p>
                <input id="denglu" type="button" value="登陆"/>
            </p>
        </form>
    </div>

    <script type="text/javascript" src="/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
        //用ajax提交表单
        $("#denglu").click(function(){
            $.post("/dologin",{
                "dengluming" : $("#dengluming").val(),
                "mima" : $("#mima").val()
            },function(result){
                if(result == "1"){
                    alert("登陆成功");
                }else if(result == "-2"){
                    alert("没有这个注册用户");
                }else if(result == "-1"){
                    alert("密码不正确");
                }
            })
        });
    </script>
</body>
</html>

regist.ejs

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div>
        <p>
            登录名: <input type="text" name="dengluming" id="dengluming"/>
        </p>
        <p>
            密码: <input type="password" name="mima" id="mima"/>
        </p>
        <p>
            <input id="zhuce" type="button" value="注册"/>
        </p>
    </div>

    <script type="text/javascript" src="/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
        //用ajax提交表单
        $("#zhuce").click(function(){
            $.get("/doregist",{
                "dengluming" : $("#dengluming").val(),
                "mima" : $("#mima").val()
            },function(result){
                if(result == "1"){
                    alert("注册成功");
                }else{
                    alert("注册失败");
                }
            })
        });
    </script>
</body>
</html>

  登陆注册:

var express = require("express");
var app = express();
var formidable = require(‘formidable‘);
var db = require("./model/db.js");

var md5 = require("./model/md5.js");

app.set("view engine","ejs");

app.use(express.static("./public"));

//注册页面
app.get("/regist",function(res,res,next){
    res.render("regist");
});

//登陆页面
app.get("/login",function(res,res,next){
    res.render("login");
});

//执行注册
app.get("/doregist",function(req,res,next){
    var dengluming = req.query.dengluming;
    var mima = req.query.mima;
    //加密
    mima = md5(md5(mima).substr(4,7) + md5(mima));

    //把用户名和密码存入数据库
    db.insertOne("users",{
        "dengluming" : dengluming,
        "mima" : mima
    },function(err,result){
        if(err){
            res.send("-1");
            return;
        }
        res.send("1");
    })
});

app.post("/dologin",function(req,res,next){
    var form = new formidable.IncomingForm();

    form.parse(req, function(err, fields, files) {
        var dengluming = fields.dengluming;
        var mima = fields.mima;
        mima = md5(md5(mima).substr(4,7) + md5(mima));

        //检索数据库,按登录名检索数据库,查看密码是否匹配
        db.find("users",{"dengluming":dengluming},function(err,result){
           if(result.length == 0){
               res.send("-2");  //-2没有这个人
               return;
           }
            var shujukuzhongdemima = result[0].mima;
            //要对用户这次输入的密码,进行相同的加密操作。然后与
            //数据库中的密码进行比对
            if(mima == shujukuzhongdemima){
                res.send("1");  //成功
            }else{
                res.send("-1"); //密码不匹配
            }
        });
    });

    return;
});

app.listen(3000);

数据库地址:

settings.js

module.exports = {
"dburl" : "mongodb://localhost:27017/day7"
}





node js实战:带数据库,加密的注册登录表单

标签:input   throw   htm   col   cti   ports   create   let   use   

人气教程排行