node.js代码二

  1 var express = require('express');
  2 var app = express();
  3 var server = require('http').Server(app);
  4 var io = require('socket.io')(server);
  5 var formidable = require('formidable');
  6 var mysql = require('mysql');
  7 var session = require('express-session');
  8 var cookieParser = require('cookie-parser');
  9 
 10 // 静态。
 11 app.use(express.static('public'));
 12 app.use(express.static('node_modules'));
 13 app.use(cookieParser());
 14 app.use(session({
 15     secret:'randomstring',
 16     resave: false,
 17     saveUninitialized:true,
 18     cookie:{
 19         maxAge:600000,
 20         hostOnly:true
 21     }
 22 }));
 23 
 24 // 配置 模版引擎。
 25 app.set('view engine', 'ejs');
 26 app.set('views', './views');
 27 
 28 // 路由设置。
 29 // 引入登录。
 30 app.post('/doLogin', function(req, res){
 31 
 32     var form = new formidable.IncomingForm();
 33 
 34     // 表单处理。
 35     form.parse(req, function(error, fields, files){
 36 
 37         // 获取用户名和密码。
 38         var username = fields.username;
 39         var password = fields.password;
 40         var rememberme = fields.rememberme;
 41 
 42         // 查询数据库。
 43         var con = mysql.createConnection({
 44             host:'localhost',
 45             user:'root',
 46             password:'',
 47             database:'lamp183'
 48         });
 49 
 50         // 连接。
 51         con.connect();
 52 
 53         // 执行查询。
 54         con.query("SELECT * FROM user WHERE username='"+ username +"'", function(err, results, fields){
 55 
 56             // console.log(results[0].password);
 57             // res.send('ok');
 58 
 59             if(results.length <= 0)
 60             {
 61 
 62                 res.json({'login': 0, 'data':'没有这个用户'});
 63                 return ;
 64             }
 65 
 66             // 判断密码。
 67             if(results[0].password != password)
 68             {
 69 
 70                 res.json({'login': 0, 'data':'密码错误'});
 71 
 72             }
 73             else
 74             {
 75 
 76                 // 判断是否记住我。
 77                 if(rememberme == 1)
 78                 {
 79 
 80                     res.cookie('admin', results[0], {maxAge: 600000000, hostOnly:true});
 81 
 82                 }
 83 
 84                 // 将用户数据存入session
 85                 req.session.admin = results[0];
 86 
 87                 // 发送登录成功指令
 88                 res.json({'login': 1, 'data':results[0]});
 89 
 90             }
 91 
 92         });
 93 
 94         con.end();
 95         return ;
 96 
 97     });
 98 
 99 });
100 
101 // 注册功能。
102 app.post('/doRegist', function(req, res){
103 
104     var form = new formidable.IncomingForm();
105 
106     // 表单处理。
107     form.parse(req, function(error, fields, files){
108 
109         // console.log(fields);
110         var username = fields.username;
111         var password = fields.password;
112         var nickname = fields.nickname;
113 
114         // 查询数据库。
115         var con = mysql.createConnection({
116             host:'localhost',
117             user:'root',
118             password:'',
119             database:'lamp183'
120         });
121 
122         // 连接。
123         con.connect();
124 
125         // 执行添加。
126         con.query("INSERT INTO user(username,password,nickname) VALUES('"+ username +"','"+ password +"','"+ nickname +"')", function(err, results, fields){
127 
128             // console.log(results);
129             if(results.affectedRows > 0)
130             {
131 
132                 res.json({'regist':1, 'info':'注册成功,请登录'});
133 
134             }
135             else
136             {
137 
138                 res.json({'regist':0, 'info':'注册失败'});
139 
140             }
141 
142         });
143 
144         con.end();
145         return ;
146 
147     });
148 
149 });
150 
151 // 监听。
152 server.listen(8080);
153 
154 // 引入聊天室页面。
155 app.get('/', function(req, res){
156 
157     // 判断用户是否已经登录。
158     if(req.session.admin || req.cookies.admin)
159     {
160 
161         res.render('index2');
162 
163         io.on('connection', function(socket){
164 
165             if(req.session.admin)
166             {
167         
168                 socket.emit('nolog', req.session.admin);
169 
170             }
171             else if(req.cookies.admin)
172             {
173 
174                 socket.emit('nolog', req.session.admin);
175 
176             }
177 
178         });
179 
180     }
181     else{
182 
183         res.render('index');
184 
185     }
186 
187     // res.render('index');
188     // console.log(req.session.admin);
189 
190 });
191 
192 var users = [];
193 
194 // 建立连接
195 io.on('connection', function(socket) {
196 
197     socket.on('login', function(data){
198 
199         // console.log(data.data.nickname);
200         // 保存所有用户。
201         var u = {nickname:data.data.nickname};
202         users.push(u);
203 
204     });
205 
206     socket.on('users', function(){
207 
208         // 发送给所有客户端。
209         socket.emit('users', users);
210 
211     });
212 
213     // 监听消息
214     socket.on('send', function(data){
215         // console.log(data);
216         // 发送给所有用户。
217         socket.broadcast.emit('receiver', data);
218            
219     });
220 
221 });
222 
223 // 退出登录功能。
224 app.get('/logout', function(req, res){
225 
226     // 清空session和cookie
227     if(req.session.admin)
228     {
229 
230         var name = req.session.admin.nickname
231         delete(req.session.admin);
232 
233     }
234     else
235     {
236         var name = req.session.admin.nickname
237         res.cookie('admin', 1, {maxAge: -1, hostOnly:true});
238     }
239 
240     // 跳转登录页面。
241     res.redirect('/');
242     return ;
243 
244 });

 

posted @ 2017-08-03 21:38  Leur  阅读(296)  评论(0编辑  收藏  举报