node mysql实现登陆注册_使用 NodeJs 链接 mysql 的实现登录与注册
基础要求:
电脑安装NodeJs ,熟悉javascript语法 ;
会使用工具 wamp
废话不多说,开始正文;
创建一个文件夹用来操作下面步骤;
使用 npm 安装 mysql插件; 完成后创建js文件;
$ npm install mysql --save
完成上面步骤后 目录结构会是这样的安装完mysql后,目录结构会变成这样
首先在 http.js 中引入所需模块与工具;
var http = require('http'); //引入httpvar querystring = require('querystring');
var url = require('url'); //引入urlvar fs = require('fs'); //引入文件管理
创建一个可以访问的端口;
http.createServer(function(req, res) {
console.log('链接成功');_
//向请求的客户端发送响应头 res.writeHead(200,{'Content-Type': 'text/html; charset=urf-8'});
res.end('hello word');
}.listen(3000)
用node 运行 http.js;
运行后在浏览器地址栏中输入 localhost:3000;成功后会显示
到这里表示可以创建端口并且可以访问;
然后我们创建3个页面; 分别是 index.html login.html regsiter.html;
index.html body代码
登录
注册
login.html body代码
登录页面
用户名:
密 码:
regsiter.html body 代码
注册页面
用户名:
密 码:
开始写页面路由; 在之前的http.js 中修改
http.createServer(function(req, res) {
if (req.url == '/favicon.ico') {
return; //加载图标也会被当做一次http请求};
var pathname = url.parse(req.url).pathname; //解析地址栏地址var body = '';
//使用fs文件管理读取相对应文件fs.readFile(pathname.substring(1) + '.html', function(err, data) {
if (err) { //如果错误存在说明文件不存在res.writeHead(404, {
'Content-Type': 'text/html; charset=utf-8'
});
res.write('404页面不存在');
} else { //否则文件读取成功res.writeHead(200, {
'Content-Type': 'text/html; charset=urf-8'
});
res.write(data); //写入文件};
res.end();
})
}).listen(3000);
写完后在node中 启动 http.js,
要执行的文件每次有更新都要重新用node执行一次;
或者可以安装subline text3的插件 nodeJs 在工具栏 选择nodeJs编译 按 ctrl+b 执行
在浏览器中输入 localhost:3000/index 会看到 ndex.html页面
先创建一个自己使用的表;
复制代码 在mysql中执行,执行成功后会创建一个my_sql的新表;
CREATE DATABASE IF NOT EXISTS my_sql CHARACTER SET UTF8;
USE my_sql;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`UserName` varchar(64) NOT NULL COMMENT '用户名',
`UserPass` varchar(64) NOT NULL COMMENT '用户密码',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';复制执行sql语句, 创建完后会出现一个my_sql的新表
回到node中, 开始连接mysql数据库;
var mysql = require('mysql'); //引入mysql模块
var mysql_user = { //编写数据库链接数据host: 'localhost', //地址user: 'root', //用户名password: '', //密码database: 'my_sql' //要链接的数据库名字 就是开始创建的那个表的名字};
var connection = mysql.createConnection(mysql_user); //建立数据库链接connection.connect(function(err) { //链接数据库if (err) { //链接错误执行console.log('[错误]' + err);
connection.end();
return;
};
console.log('链接成功'); //否则链接成功});
用 node 执行 http.js 后会链接成功后 会显示;
能够连接mysql数据库了后 我们还需要修改http.js
因为 login.html 和 regsiter.html 都用的是post 请求 所以获取数据 才能去查询数据库
http.createServer(function(req, res) {
if (req.url == '/favicon.ico') {
return;
};
var pathname = url.parse(req.url).pathname;
var body = ''; //定义一个放post数据的变量
req.on('data', function(chunk) { //接受post参数并赋值给bodybody = '';
body += chunk;
body = querystring.parse(body);
});
fs.readFile(pathname.substring(1) + '.html', function(err, data) {
if (err) {
res.writeHead(404, {
'Content-Type': 'text/html; charset=utf-8'
});
res.write('404页面不存在');
} else {
res.writeHead(200, {
'Content-Type': 'text/html; charset=urf-8'
});
if (body) { //如果body存在 说明进行了post请求switch (pathname) { //判断登录还是注册case '/login': //执行登录事件 并传入对应参数query.emit('login', body.username, body.password, connection);
break;
case '/regsiter': //执行注册事件 并传入对应参数query.emit('regsiter', body.username, body.password, connection);
break;
}
};
res.write(data);
};
res.end();
})
}).listen(3000);
定义了登陆和注册的事件执行,但是还没有写他们的事件函数;
不要急下面开始写注册/登录事件,并连接数据库;
var Event = require('events').EventEmitter; //引入事件模块var query = new Event(); //创建事件对象
//绑定login事件 传入 username password 链接数据库对象query.on('login', function(username, password, connection) {
//编写sql查询语句;var find = 'SELECT * FROM userinfo WHERE UserName = ' + username;
//执行sql语句connection.query(find, function(err, result) {
if (err) { //链接失败 直接return;console.log('[错误]' + err);
return;
};
if (result.length) { //如果查到了数据console.log('------------start----------------');
var string = JSON.stringify(result);
var json = JSON.parse(string)[0];
console.log(string)
if (json.UserPass == password) {
console.log('密码校验正确');
} else {
console.log('密码校验错误');
}
console.log('--------------end-----------------');
} else {
console.log('账号不存在')
}
})
})
密码校验成功后会node会显示
密码校验失败后会显示
登录事件写完了,开始写注册事件;
//定义注册事件 传入 username password 链接数据库对象query.on('regsiter', function(username, password, connection) {
//编写查询语句var find = 'SELECT * FROM userinfo WHERE UserName = ' + username;
//编写添加语句var insert = 'INSERT INTO userinfo (Id,UserName,UserPass) VALUES (0,?,?)';
//执行sql语句connection.query(find, function(err, result) {
if (err) { //链接失败 直接return;console.log('[错误]' + err);
return;
};
if (result.length) { //如果数据库返回数据 说明账号已存在console.log('账号已存在');
return;
} else { //否则不存在 可以进行注册var inserInfo = [username, password]; //定义插入数据 //执行插入数据语句connection.query(insert, inserInfo, function(err, result) {
if (err) { //链接失败 直接return;console.log('[注册错误]' + err);
return;
};
console.log('------------start----------------');
console.log('注册成功');
console.log(result);
console.log('--------------end-----------------');
});
};
});
})
随便创建一个账号;
成功后 node会显示
到数据库中查看 也会发现userinfo表中插入了一条数据
----------------------------------end------------------------------------------------------
第一次发文章,有不足的地方还请各位看官老爷指出来,谢谢观看!
node mysql实现登陆注册_使用 NodeJs 链接 mysql 的实现登录与注册相关推荐
- node mysql登录注册_图解NodeJS实现登录注册功能
该Demo根据菜鸟教程的练手项目,请提前到菜鸟教程的官网查看nodejs的相关教程,根据教程实际操作一遍,然后自己动手去实现登录.注册功能,此Demo只作参考,不符合前端相关规范. 使用的技术栈 no ...
- mysql运维命令_运维常用 MySQL 命令
设置用户密码 方法一 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPassword'); mysql> SET PASSWORD FOR ...
- mysql connection是什么_记一次MySQL出现too many connection
今天中午的时候突然接到报警,MySQL连接数暴增..本来设置的max_conntion=6000, 这个数值连接已经够用.接到报警速度连接服务器连接mysql总是报如下错误: [mysql@local ...
- mysql设置success信息_【原创】MySQL Cluster安装部署(Success)
参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...
- amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...
- golang mysql连接池原理_[Go] golang实现mysql连接池
golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...
- mysql 数据库字符集转换_字符集介绍及mysql数据库编码转换
一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...
- mysql 查询编码转换_字符集介绍及mysql数据库编码转换
一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...
- java检查手机号是否被注册_【java】如何开发一个检测手机号注册过哪些网站的应用?...
问题描述 使用python或其它语言开发一个检测手机号注册过哪些网站的应用 问题出现的环境背景及自己尝试过哪些方法 在登陆一个很久没使用的网站时,原注册的手机号已弃用无法找回密码.所以希望有这么一款应 ...
最新文章
- [翻译]Python中yield的解释
- python templates_python templates在哪
- 在气候灾难的时代,这些游戏正在用自己的方式去重新审视自然
- js 判断是否是IE浏览器及ie版本
- 五年级下册电子计算机与多媒体,语文人教版五年级下册《电子计算机与多媒体》.doc...
- http:(4):http请求方法
- redis rdb aof区别_理解Redis的持久化机制:RDB和AOF
- mysql 给指定用户指定数据库
- 探讨 | SpringBoot + MyBatis 多数据源事物问题
- strcpy()、memcpy()、memmove()、memset()及其应用
- mvn spring-boot 打包成可运行的
- vs2012 有效产品密钥
- 生信-记一次NCBI-R语言-淋巴癌突变与未突变基因的差异分析
- 3.cesium雨、雪、雾天气场景效果
- if语句的基本使用语法
- 怎么给图片批量加边框
- NVME格式硬盘SSD安装WIN7蓝屏(0x000007B)解决方法
- UE4 后处理材质 镜头光晕(Lensflare)效果
- 【Matlab学习手记】Matlab积分问题
- 常用git 命令备忘
热门文章
- 【笔记整理】通信原理第七章复习——数字信号的最佳接受
- 【表面缺陷检测】基于yolov5的布匹表面缺陷检测(附代码和数据集)
- 极光笔记 | 极光推送业务无中断迁移上云实践
- 教学案例一python初探
- 论文框架和目录一样吗_毕业论文提纲怎么写?过来人:手把手帮你打造完美论文写作模板...
- 自然语言处理nltk分词断句(2)
- 【ECCV2018 UPDT】Unveiling the Power of Deep Tracking[特征融合]
- Windows 去除桌面烦人的小箭头
- Kubernetes v1.10.4 安装记录
- JavaScript返回上一页后并刷新页面