zoukankan      html  css  js  c++  java
  • 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 });
  • 相关阅读:
    28完全背包+扩展欧几里得(包子凑数)
    HDU 3527 SPY
    POJ 3615 Cow Hurdles
    POJ 3620 Avoid The Lakes
    POJ 3036 Honeycomb Walk
    HDU 2352 Verdis Quo
    HDU 2368 Alfredo's Pizza Restaurant
    HDU 2700 Parity
    HDU 3763 CDs
    POJ 3279 Fliptile
  • 原文地址:https://www.cnblogs.com/peilanluo/p/7282008.html
Copyright © 2011-2022 走看看