node简单模拟用户注册、登录

www目录下的内容:

//(ajax.js)
/**
 *  Author:strive
 *  Date: 2016/1/13
 */
function json2url(json){
    
    
    var arr=[];
    for(var name in json){
    
    
        arr.push(name+'='+json[name]);
    }
    return arr.join('&');
}

function ajax(json){
    
    
    json=json || {
    
    };
    if(!json.url)return;
    json.data=json.data || {
    
    };
    json.type=json.type || 'get';

    var timer=null;

    if(window.XMLHttpRequest){
    
    
        var oAjax=new XMLHttpRequest();
    }else{
    
    
        var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
    }

    switch(json.type){
    
    
        case 'get':
            oAjax.open('GET',json.url+'?'+json2url(json.data),true);
            oAjax.send();
            break;
        case 'post':
            oAjax.open('POST',json.url,true);
            oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            oAjax.send(json2url(json.data));
            break;
    }

    oAjax.onreadystatechange=function(){
    
    
        if(oAjax.readyState==4){
    
    
            clearTimeout(timer);
            if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){
    
    
                json.success && json.success(oAjax.responseText);
            }else{
    
    
                json.error && json.error(oAjax.status);
            }
        }
    };
}

/*user.html*/
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="ajax.js"></script>
  <script>
    window.onload=function(){
     
     
      var oTxtUser=document.getElementById("user");
      var oTxtPass=document.getElementById("pass");
      var oBtnReg=document.getElementById("reg_btn");
      var oBtnLogin=document.getElementById("login_btn");
      oBtnLogin.onclick=function(){
     
     
        ajax({
     
     
          url:'/user',
          data:{
     
     act:'login',user:oTxtUser.value,pass:oTxtPass.value},
          type:'get',
          success:function(str){
     
     
            var json=eval('('+str+')');
            if(json.ok){
     
     
              alert('登录成功');
            }else{
     
     
              alert('登录失败'+json.msg);
            }
          },
          error:function(){
     
     
            alert('通信失败');
          }
        })
      };
      oBtnReg.onclick=function(){
     
     
        ajax({
     
     
          url:'/user',
          data:{
     
     act:'reg',user:oTxtUser.value,pass:oTxtPass.value},
          type:'get',
          success:function(str){
     
     
            var json=eval('('+str+')');
            if(json.ok){
     
     
              alert('注册成功');
            }else{
     
     
              alert('注册失败'+json.msg);
            }
          },
          error:function(){
     
     
            alert('通信错误');
          }
        })
      }
    }
  </script>
</head>
<body>
用户:<input type="text" id="user"/><br/>
密码:<input type="password" id="pass"/><br/>
<input type="button" value="注册" id="reg_btn"/>
<input type="button" value="登录" id="login_btn"/>
</body>
</html>

server.js

const http=require('http');
const fs=require('fs');
const querystring=require('querystring');
const urlLib=require('url');

var server=http.createServer(function(req,res){
    
    
  var str='';
  //{"blue":"123","zhangsan":"1234"}
  var users={
    
    };//模拟用户数据(实际上应存在数据库)
  req.on('data',function(data){
    
    
    str+=data;
  });
  req.on('end',function(){
    
    
    var obj=urlLib.parse(req.url,true);
    const url=obj.pathname;
    const GET=obj.query;
    const POST=querystring.parse(str);

    //区分——接口还是文件
    if(url=='/user'){
    
    //接口
      switch(GET.act){
    
    
        case 'reg':
          //1.检查用户名是否已经存在
          //2.插入users
          if(users[GET.user]){
    
    
            res.write('{"ok":false,"msg":"此用户已经存在"}');
          }else{
    
    
            users[GET.user]=GET.pass;
            res.write('{"ok":true,"msg":"注册成功"}');
          }

          break;
        case 'login':
          //1.检查用户是否存在
          if(users[GET.user]==null){
    
    
            res.write('{"ok":false,"msg":"此用户不存在"}');
          }else if(users[GET.user]!=GET.pass){
    
    
            res.write('{"ok":false,"msg":"用户名或密码有错误"}');
          }else{
    
    
            res.write('{"ok":true,"msg":"登录成功"}');
          }
          //2.检查用户密码
          break;
        default:
          res.write('{"ok":false,"msg":"未知的act"}');
      }
      res.end();
    }else{
    
    //文件
      //读取文件
      var file_name='./www'+url;
      fs.readFile(file_name,function(err,data){
    
    
        if(err){
    
    
          res.write('404');
        }else{
    
    
          res.write(data);
        }
        res.end();
      })
    }
  })
});
server.listen(8080);

猜你喜欢

转载自blog.csdn.net/tozeroblog/article/details/85220509