NodeJs+MySQL实现注册登录功能

NodeJs+MySQL实现注册登录功能

本文实例为大家分享了NodeJs+MySQL实现注册登录功能的具体代码,供大家参考,具体内容如下

之前写过一个没有连接数据库的注册与登陆的实现,这次加上了数据库

刚刚接触后端,很多不完善的地方,有错误请指正

nodejs中mysql的写法:

//连接池 let db=mysql.createPool({'配置'})    db.query(`sql语句`,(err,data)=>{})

并且在数据库中存储的密码应该是密文

function md5(str){   let obj=crypto.createHash('md5');   obj.update(str);   return obj.digest('hex') } function md5_2(str){   return md5(md5(str)) }

服务端操作,在用户名与密码上添加了简单的校验,不完善,还需要改进

const http=require('http'); const fs=require('fs'); const mysql=require('mysql'); const url=require('url'); const zlib=require('zlib'); const crypto=require('crypto'); const _key='bsjhjqbj1;dqwxsxx+'; let server=http.createServer((req,res)=>{   let {pathname,query}=url.parse(req.url,true);   let {user,password}=query;   switch(pathname){     case '/reg':       if(!user){         res.write('{"err":1,"msg":"用户名不能为空"}');         res.end();       }else if(!password){         res.write('{"err":1,"msg":"密码不能为空"}');         res.end();       }else if(!/\w{4,16}$/.test(user)){         res.write('{"err":1,"msg":"用户名应为大小写字母数字或下划线"}');         res.end();       }else if(/['|"]/.test(password)){         res.write('{"err":1,"msg":"密码非法"}');         res.end();       }else{         db.query(`SELECT username FROM users_table WHERE username='${user}'`,(err,data)=>{           if(err){             res.write('{"err":1,"msg":"数据库错误"}');             console.log(err)             res.end()           }else{             if(data.length>0){               res.write('{"err":1,"msg":"用户名已存在"}');               res.end();             }else{               res.write('{"err":0,"msg":"注册成功"}');               db.query(`INSERT INTO users_table (ID,username,password) VALUES (0,'${user}','${md5_2(password)}')`);               res.end();             }           }         })       }       break;     case '/login':       if(!user){         res.write('{"err":1,"msg":"用户名不能为空"}');         res.end();       }else if(!password){         res.write('{"err":1,"msg":"密码不能为空"}');         res.end();       }else if(!/\w{4,16}$/.test(user)){         res.write('{"err":1,"msg":"用户名应为大小写字母数字或下划线"}');         res.end()       }else if(/["|']/.test(password)){         res.write('{"err":1,"msg":"密码非法"}');         res.end();       }else{         db.query(`SELECT username,password FROM users_table WHERE username='${user}'`,(err,data)=>{           if(err){             res.write('{"err":1,"msg":"数据库错误"}');             res.end()           }else if(data.length>0){             if(md5_2(password)!=data[0].password){               res.write('{"err":1,"msg":"用户名或密码不正确"}');               res.end();             }else{               res.write('{"err":0,"msg":"登陆成功"}');               res.end();             }           }else{             res.write('{"err":1,"msg":"用户不存在"}')           }         })       }     break;     default:       let rs=fs.createReadStream(`www${pathname}`);       let gz=zlib.createGzip();       res.setHeader('content-encoding','gzip');       rs.pipe(gz).pipe(res);       rs.on('error',err=>{         res.writeHeader(404);         res.write('Not Found');         res.end();       });   } }); server.listen(8888);

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565