简单 node.js实现注册登录

整个功能需要创建四个文档 “app.js” , "db.txt" , "login.html" , "regist.html'。

具体思路相信你在看的过程中很快就能理顺

“app.js”

var http = require("http");

var url = require("url");

var qs = require("querystring");

var fs = require("fs");

http.createServer(function (req , res) {
    res.setHeader("Access-Control-Allow-Origin" ,"*");

    if(req.method == "POST"){



        //接受发过来的用户名和密码
        var result = "";
        var pathName = url.parse(req.url).pathname;


        req.addListener("data" , function (chunk) {
            result += chunk;
        });

        req.on("end" , function () {


            var user = qs.parse(result);
            //判断用户是否存在
            if(user.username){
                fs.readFile("db.txt" , "utf-8" , function (err , data) {
            if(!err){
               console.log("读取文件成功");
               if(!data){
                   if(pathName == "/login"){
                       res.end("该用户不存在");
                       return;
                   }
                   if(pathName == "/register"){

                       var arr = [];
                       var obj = {};
                       obj.username = user.username;
                       obj.password = user.password;
                       arr.push(obj);
                       fs.writeFileSync("db.txt" , JSON.stringify(arr), "utf-8");
                       res.end("注册成功");
                       return;


                   }
               }else {
                   console.log("文件中有数据");
                   var arr = JSON.parse(data);
                   for(var i = 0 ; i< arr.length;i++){
                       var obj = arr[i];
                       if(obj.username == user.username){
                           if(pathName == "/login"){
                               if(obj.password == user.password){
                                   res.end("登录成功");
                                   return;
                               }else {
                                   res.end("密码错误");
                                   return;
                               }
                           }
                           if(pathName == "/register"){
                               res.end("密码错误");
                               return;
                           }
                       }
                   }
                   if(pathName == "/login"){
                       res.end("用户名不存在");
                       return;
                   }
                   if(pathName == "/register"){
                       var obj = {};
                       obj.username = user.username;
                       obj.password = user.password;
                       arr.push(obj);
                       fs.writeFileSync("db.txt" , JSON.stringify(arr) , "utf-8");
                       res.end("注册成功");
                       return;
                   }
               }
            }else {
                console.log("读取文件失败");
            }
                })
            }
        });

    }else {
        res.end("get请求");
    }

}).listen(3000 , function (err) {
    if(!err){
        console.log("服务器启动成功,端口号3000...")
    }
});

"login.html"

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <label>用户名</label>
        <input type="text" id="user">
    </div>
    <div>
        <label>密码</label>
        <input type="text" id="password">
    </div>
    <div>
        <button id="register">注册</button>
    </div>
</body>
</html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
    $(function () {
        $("#register").click(function () {
            $.ajax({
                url:"http://localhost:3000/register",
                type:"POST",
                data:{
                    username:$("#user").val(),
                    password:$("#password").val()
                },
                success:function (res) {
                    console.log(res);
                    alert("注册成功")
                },
                error:function (err) {
                    console.log(err);
                }
            })

        });
    });
</script>

"regist.html'

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <label>用户名</label>
    <input type="text" id="user">
</div>
<div>
    <label>密码</label>
    <input type="text" id="password">
</div>
<div>
    <button  id="login">登录</button>
    <button id="register"><a href="regist.html">注册</a></button>
</div>
</body>
</html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
    $(function () {
        $("#login").click(function () {
            if($("#user").val().length == 0){
                return alert("请输入用户名")
            }
            if($("#password").val().length == 0){
                return alert("请输入密码")
            }
            $.ajax({
                url:"http://localhost:3000/login",
                type:"POST",
                data:{
                    username:$("#user").val(),
                    password:$("#password").val()
                },
                success:function (res) {
                    console.log(res);
//                    alert("登录成功")
                },
                error:function (err) {
                    console.log(err);
                }
            });
        });
    });
</script>

"db.txt"文档功能是记录传过的内容,只需要自己创建一个就可以了。 

原文地址:https://www.cnblogs.com/zhaoyong1/p/6677612.html