zoukankan      html  css  js  c++  java
  • node.js(四)小结

    用之前的内容写一个简单的注册登录

    const http = require('http')
    const urlLib = require('url')
    const fs = require('fs')
    const querystring = require('querystring')
    
    var users = {} // {"name":"password"} 模拟数据库存储数据
    
    var server = http.createServer(function (req, res) {
        // 解析数据
        var str = ''
        req.on('data', function (data) {
            str += str
        })
        req.on('end', function () {
            var obj = urlLib.parse(str, true);
            const url = obj.pathname
            const GET = obj.query
            const POST = querystring.parse(str)
    
            if (url == '/user') {
                //console.log(GET)
                switch (GET.act) {
                    case 'reg':
                        //1、用戶是否存在
                        if (users[GET.user]) {
                            res.write('{"ok":false,"msg":"用戶已存在"}')
                        } else {
                            //2、插入
                            users[GET.user] = GET.pass
                            res.write('{"ok":true,"msg":"註冊成功"}')
                        }
                        break;
                    case 'login':
                        //1、用戶是否存在
                        if (users[GET.user] == null) {
                            res.write('{"ok":false,"msg":"用戶不存在"}')
                            res.end();
                        } else if (users[GET.user] != GET.pass) {
                            res.write('{"ok":false,"msg":"用戶名或密碼有誤"}')
                            res.end();
                        } 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)
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    用戶名:<input type="text" name="user" id="user"><br>
    密碼:<input type="password" name="pass" id="pass"><br>
    <input type="button" value="註冊" id="reg_btn">
    <input type="button" value="登錄" id="login_btn">
    
    <script>
        window.onload = function () {
            var oTxtUser = document.getElementById('user');
            var oTxtPass = document.getElementById('pass');
            var oBtnReg = document.getElementById('reg_btn');
            var oBtnLongin = document.getElementById('login_btn');
    
            function ajaxFun(act) {
                var xhr = new XMLHttpRequest();
                xhr.open('GET', '/user?user=' + oTxtUser.value + '&pass=' + oTxtPass.value + '&act=' + act, true);
                xhr.send();
                xhr.onreadystatechange = function () {
                    // readyState == 4说明请求已完成
                    if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) {
                        // 从服务器获得数据
                        console.log(xhr.responseText)
                    }
                };
            }
            oBtnReg.onclick = function () {
                ajaxFun("reg")
            }
            oBtnLongin.onclick = function () {
                ajaxFun("login")
            }
        }
    </script>
    </body>
    </html>
    

      

    运行代码 node xxx.js

    在浏览器输入http://localhost:8080/user.html

  • 相关阅读:
    C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
    opencv中的vs框架中的Blob Tracking Tests的中文注释。
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
  • 原文地址:https://www.cnblogs.com/YAN-HUA/p/10893438.html
Copyright © 2011-2022 走看看