node+html+Mysql实现登录注册

 更多demo源码已上传github 

goblinModeL/js-demo (github.com)icon-default.png?t=N7T8https://github.com/goblinModeL/js-demo

node.js 代码:命名随意 代码有注释 node连接数据库

const express = require('express');

const app = express();
const mysql = require('mysql');
const db = mysql.createConnection({
    user: 'root',          //用户名
    password: '123456',	//密码
    host: 'localhost',		//主机(默认都是local host)
    database: 'node_demo'       //数据库名
})
app.use(express.urlencoded({ extended: true }));
//跨域 推荐用cors 更方便 这种太臃肿
app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
})

db.connect(err => { //检测

})
// 开启服务器
app.listen(3000, () => {
})
const Detection=/^(?=.*[a-zA-Z])(?=.*\\d).{1,9}$///正则表达式 检测密码 至少包含字母、数字,1-9位

    app.post('/add', (req, res) => {
        const { name, password } = req.body;
        //先查询是否存在
        let sqlname = `SELECT * FROM node WHERE name='${name}'`
        db.query(sqlname, (err, data) => {
            if (data.length!==0) {
          console.log(typeof data)
           res.send('用户名已存在')
            }
            else {
                if(Detection.exec(password)!==null) {
                    let sqlStr = `INSERT INTO node ( name, password )VALUES('${name}','${password}')`

                    db.query(sqlStr, (err) => {
                        console.log(err,)
                    })
                    //成功后的页面显示
                    res.send('插入成功')
                }
                else{
                    res.send('密码 至少包含字母、数字,1-9位')
                }
            }
        })
    })


    app.post('/login', (req, res) => {
        const name = req.body.username; // 获取用户名字段的值
        const password = req.body.password;
        console.log(name, password)

        let sqlname = `SELECT * FROM node WHERE name='${name}'`
        db.query(sqlname, (err, data) => {
            if (data.length === 0) {
                res.send('用户名不存在')

            } else {
                if (data[0].password === password) {
                    res.send('登录成功')

                } else {
                    res.send('密码错误')

                }
            }
        })
    })




html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 <div>

     <label for="username">用户名:</label>
     <input type="text" id="username" name="username">
     <label for="password">密码:</label>
     <input type="password" id="password" name="password">
     <input type="button" value="登录" onclick="getUser()">

 </div>

</body>
<script>

  const  getUser=()=>{
      const username=document.getElementById('username').value
      const password=document.getElementById('password').value
      fetch('http://localhost:3000/login', {
          method: 'POST',
          body: `username=${username}&password=${password}`,
          headers: {
              'Content-Type': 'application/x-www-form-urlencoded',
          },
      })
          .then((res) => {
              // 检查响应是否成功
              if (!res.ok) {
                  throw new Error('网络请求失败');
              }

              // 解析响应数据为文本
              return res.text();
          })
          .then((data) => {
              // 打印响应的文本内容
              console.log(data);
          })
          .catch((err) => {
              console.error('发生错误:', err);
          });


  }

</script>

</html>

 命令行可以看到登录状态,如果需要添加到页面改变样式在下面代码块进行判断修改

代码实现了登录根本原理,具体样式和改变渲染需要自己完善,注册的js代码已经写好,只需要把url替换,自行添加输入框

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值