node.js实现登录注册页面


Posted in Javascript onApril 08, 2017

本文实例为大家分享了node.js登录注册页面展示的具体代码,供大家参考,具体内容如下

首先需要新建四个文件

一个服务器js

一个保存数据的txt

一个登陆、一个注册页面html

1、注册页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>regist</title>
</head>
<body>
  <div>
    <label for="user">用户名</label><input type="text" id="user">
  </div>
  <div>
    <label for="password">密   码</label><input type="password" id="password">
  </div>
  <div>
    <button id="register">注册</button>
  </div>
</body>
<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) {
          alert(res);
        },
        error:function (err) {
          console.log(err);
        }
      })
    })
  });
</script>
</html>

2、登录界面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>login</title>
</head>
<body>
  <div>
    <label for="user">用户名</label><input type="text" id="user">
  </div>
  <div>
    <label for="password">密   码</label><input type="password" id="password">
  </div>
  <div>
    <button id="login">登录</button>
    <button id="register"><a href="regist.html">注册</a></button>
  </div>
</body>
<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) {
          alert("登录成功!")
        },
        error:function (err) {
          console.log(err);
        }
      })

    })
  });
</script>
</html>

3、搭建服务器

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);
//同步写入db.txt文件,必须是同步进行
                fs.writeFileSync("db.txt" , JSON.stringify(arr) , "utf-8");
                res.end("注册成功!");
                return;
              }
            }else {
              console.log("文件中有数据");
//把数据转成JSON对象,以便我们使用
              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("服务器启动成功,正在监听port3000...");
  }
});

4、在db.txt文件中可以查看注册信息

node.js实现登录注册页面

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 覆盖和重载 函数
Sep 25 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
May 07 Javascript
目前流行的JavaScript库的介绍及对比
Sep 29 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
JS中跳出循环的示例代码
Sep 14 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 Javascript
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
详解vue2路由vue-router配置(懒加载)
Apr 08 #Javascript
js仿微信公众平台打标签功能
Apr 08 #Javascript
详解node.js搭建代理服务器请求数据
Apr 08 #Javascript
无循环 JavaScript(map、reduce、filter和find)
Apr 08 #Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 #Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 #Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 #Javascript
You might like
PHP调用三种数据库的方法(2)
2006/10/09 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python基于DES算法加密解密实例
2015/06/03 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python 互换字典的键值对实例
2019/02/12 Python
python多线程同步之文件读写控制
2021/02/25 Python
python中with用法讲解
2020/02/07 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
计算机专业自荐信
2013/10/14 职场文书
团队精神演讲稿
2013/12/31 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS