基础要求:

电脑安装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 的实现登录与注册相关推荐

  1. node mysql登录注册_图解NodeJS实现登录注册功能

    该Demo根据菜鸟教程的练手项目,请提前到菜鸟教程的官网查看nodejs的相关教程,根据教程实际操作一遍,然后自己动手去实现登录.注册功能,此Demo只作参考,不符合前端相关规范. 使用的技术栈 no ...

  2. mysql运维命令_运维常用 MySQL 命令

    设置用户密码 方法一 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPassword'); mysql> SET PASSWORD FOR ...

  3. mysql connection是什么_记一次MySQL出现too many connection

    今天中午的时候突然接到报警,MySQL连接数暴增..本来设置的max_conntion=6000, 这个数值连接已经够用.接到报警速度连接服务器连接mysql总是报如下错误: [mysql@local ...

  4. mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

    参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...

  5. amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离

    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...

  6. golang mysql连接池原理_[Go] golang实现mysql连接池

    golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...

  7. mysql 数据库字符集转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

  8. mysql 查询编码转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

  9. java检查手机号是否被注册_【java】如何开发一个检测手机号注册过哪些网站的应用?...

    问题描述 使用python或其它语言开发一个检测手机号注册过哪些网站的应用 问题出现的环境背景及自己尝试过哪些方法 在登陆一个很久没使用的网站时,原注册的手机号已弃用无法找回密码.所以希望有这么一款应 ...

最新文章

  1. [翻译]Python中yield的解释
  2. python templates_python templates在哪
  3. 在气候灾难的时代,这些游戏正在用自己的方式去重新审视自然
  4. js 判断是否是IE浏览器及ie版本
  5. 五年级下册电子计算机与多媒体,语文人教版五年级下册《电子计算机与多媒体》.doc...
  6. http:(4):http请求方法
  7. redis rdb aof区别_理解Redis的持久化机制:RDB和AOF
  8. mysql 给指定用户指定数据库
  9. 探讨 | SpringBoot + MyBatis 多数据源事物问题
  10. strcpy()、memcpy()、memmove()、memset()及其应用
  11. mvn spring-boot 打包成可运行的
  12. vs2012 有效产品密钥
  13. 生信-记一次NCBI-R语言-淋巴癌突变与未突变基因的差异分析
  14. 3.cesium雨、雪、雾天气场景效果
  15. if语句的基本使用语法
  16. 怎么给图片批量加边框
  17. NVME格式硬盘SSD安装WIN7蓝屏(0x000007B)解决方法
  18. UE4 后处理材质 镜头光晕(Lensflare)效果
  19. 【Matlab学习手记】Matlab积分问题
  20. 常用git 命令备忘

热门文章

  1. 【笔记整理】通信原理第七章复习——数字信号的最佳接受
  2. 【表面缺陷检测】基于yolov5的布匹表面缺陷检测(附代码和数据集)
  3. 极光笔记 | 极光推送业务无中断迁移上云实践
  4. 教学案例一python初探
  5. 论文框架和目录一样吗_毕业论文提纲怎么写?过来人:手把手帮你打造完美论文写作模板...
  6. 自然语言处理nltk分词断句(2)
  7. 【ECCV2018 UPDT】Unveiling the Power of Deep Tracking[特征融合]
  8. Windows 去除桌面烦人的小箭头
  9. Kubernetes v1.10.4 安装记录
  10. JavaScript返回上一页后并刷新页面