• node.js代码


      1 // 1. 引入 express
      2 var express = require('express');
      3 var formidable = require('formidable');
      4 var mysql = require('mysql');
      5 var session = require('express-session');
      6 var cookieParser = require('cookie-parser');
      7 
      8 // 2. 实例化。
      9 var app = express();
     10 
     11 // 配置。
     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 
     26 // 设置 
     27 app.set('view engine', 'ejs');
     28 app.set('views', './views');
     29 
     30 
     31 
     32 // 3. 路由配置。
     33 // 登录。
     34 app.get('/admin/login', function(req, res){
     35     // res.send('ok');
     36     
     37     // console.log(req.session.info);
     38     
     39     // 解析模板。
     40     res.render('admin-login');
     41     
     42 });
     43 app.post('/admin/login', function(req, res){
     44 
     45     // req.session.info = null;
     46     // 判断是否有 cookie
     47     if(req.cookies.rememberme && req.session.admin){
     48         res.redirect('/admin/index');
     49     }
     50 
     51 
     52     // 实例化。
     53     var form = new formidable.IncomingForm();
     54 
     55     // 表单处理。
     56     form.parse(req, function(error, fields, files){
     57         // console.log(fields);
     58         // 获取用户名 密码。
     59         var name = fields.name;
     60         var password = fields.password;
     61         var rememberme = fields.rememberme;
     62         // console.log(rememberme);
     63 
     64         // 查询数据库。
     65         var con = mysql.createConnection({
     66             host:"localhost",
     67             user:"root",
     68             password:"",
     69             database:"php183"
     70         });
     71         // 连接。
     72         con.connect();
     73         // 执行查询。
     74         con.query("SELECT * FROM users WHERE name='"+ name +"'", function(err, results, fields){
     75             // console.log(results);
     76             // res.send('ok');
     77             
     78             if(results.length <= 0){
     79                 res.send('没有这个用户');
     80                 return ;
     81             }
     82 
     83             // 判断密码。
     84             if(results[0].password != password){
     85                 req.session.info = '密码错误!';
     86                 res.redirect('/admin/login');
     87             }else {
     88 
     89                 // 判断是否记住我。
     90                 if(rememberme == 'on')
     91                 {
     92                     console.log(111);
     93                     res.cookie('rememberme', 1, {maxAge: 600000, hostOnly:true});
     94                 }
     95 
     96                 // 将用户数据存入 session
     97                 req.session.admin = results[0];
     98 
     99                 // 跳转后台主页
    100                 res.redirect('/admin/index');
    101             }
    102         });
    103 
    104         con.end();
    105         return ;
    106 
    107     });
    108 
    109 
    110 
    111     // res.send('ok');
    112 });
    113 
    114 app.get("/admin/index", function(req, res){
    115     // 判断 session
    116     if(!req.session.admin)
    117     {
    118         res.redirect('/admin/login');
    119         return ;
    120     }
    121 
    122     res.render('admin-index', {session:req.session});
    123     
    124 });
    125 
    126 // 文章管理
    127 app.get('/admin/article/add', function(req, res){
    128     // res.send('add')
    129     
    130     res.render('admin-article-add');
    131 });
    132 app.post('/admin/article/insert', function(req, res){
    133 
    134     // 实例化。
    135     var form = new formidable.IncomingForm();
    136 
    137     // 表单处理。
    138     form.parse(req, function(error, fields, files){
    139         // console.log(fields);
    140         var title = fields.title;
    141         var content = fields.content;
    142 
    143 
    144         // 查询数据库。
    145         var con = mysql.createConnection({
    146             host:"localhost",
    147             user:"root",
    148             password:"",
    149             database:"php183"
    150         });
    151         // 连接。
    152         con.connect();
    153         // 执行查询。
    154         con.query("INSERT INTO articles(title,content) VALUES('"+ title +"','"+ content +"')", function(err, results, fields){
    155             // console.log(results);
    156             if(results.affectedRows > 0)
    157             {
    158                 res.redirect('/admin/article/add');
    159                 return ;
    160             }else{
    161                 res.redirect('/admin/article/add');
    162                 return ;
    163             }
    164             
    165         });
    166 
    167         con.end();
    168         return ;
    169     });
    170 
    171 
    172     // res.send('insert')  
    173 });
    174 app.get('/admin/article/edit/:id([0-9]+)', function(req, res){
    175     // 获取  id
    176     var id = req.params.id;
    177     var p = req.query.p;
    178     console.log(p);
    179     // 查询数据库。
    180         var con = mysql.createConnection({
    181             host:"localhost",
    182             user:"root",
    183             password:"",
    184             database:"php183"
    185         });
    186         // 连接。
    187         con.connect();
    188         // 执行查询。
    189         con.query("SELECT * FROM articles WHERE id="+ id, function(err, results, fields){
    190             // console.log(results);
    191             res.render('admin-article-edit', {data:results[0],p:p});
    192             
    193         });
    194 
    195         con.end();
    196         return ;
    197 
    198     
    199 
    200 });
    201 app.post('/admin/article/update', function(req, res){
    202 
    203     // 接收
    204     var p = req.query.p;
    205     // 实例化。
    206     var form = new formidable.IncomingForm();
    207 
    208     // 表单处理。
    209     form.parse(req, function(error, fields, files){
    210         // console.log(fields);
    211         var id = fields.id;
    212         var title = fields.title;
    213         var content = fields.content;
    214 
    215 
    216         // 查询数据库。
    217         var con = mysql.createConnection({
    218             host:"localhost",
    219             user:"root",
    220             password:"",
    221             database:"php183"
    222         });
    223         // 连接。
    224         con.connect();
    225         // 执行查询。
    226         con.query("UPDATE articles SET title='"+ title +"',content='"+ content +"' WHERE id="+id, function(err, results, fields){
    227             // console.log(results);
    228             if(results.affectedRows > 0)
    229             {
    230                 res.redirect('/admin/article/index/'+ p);
    231                 return ;
    232             }else{
    233                 res.redirect('/admin/article/edit/'+ id);
    234                 return ;
    235             }
    236             
    237         });
    238 
    239         con.end();
    240         return ;
    241     });
    242 
    243 
    244 
    245 
    246     // res.send('update');
    247 });
    248 app.get('/admin/article/delete/:id([0-9]+)', function(req, res){
    249     var id = req.params.id;
    250     var p = req.query.p;
    251 
    252     // 查询数据库。
    253         var con = mysql.createConnection({
    254             host:"localhost",
    255             user:"root",
    256             password:"",
    257             database:"php183"
    258         });
    259         // 连接。
    260         con.connect();
    261         // 执行查询。
    262         con.query("DELETE FROM articles WHERE id="+id, function(err, results, fields){
    263             // console.log(results);
    264             if(results.affectedRows > 0)
    265             {
    266                 res.redirect('/admin/article/index/'+ p);
    267                 return ;
    268             }else{
    269                 res.redirect('/admin/article/edit/'+ id);
    270                 return ;
    271             }
    272             
    273         });
    274 
    275         con.end();
    276         return ;
    277 
    278 });
    279 app.get('/admin/article/index/:p([0-9]+)', function(req, res){
    280 
    281     var p = req.params.p;
    282     if(typeof(p) == 'undefined')
    283     {
    284         p = 1;
    285     }
    286     var num = 2;
    287     var total = 0;
    288     // 根据 p 处理需要的参数。
    289     // 0,10
    290     // 10,10
    291     var start = (p-1)*num;
    292     var end = num;
    293     var limit = start + ',' + end;
    294 
    295 
    296     // 查询数据库。
    297     var con = mysql.createConnection({
    298         host:"localhost",
    299         user:"root",
    300         password:"",
    301         database:"php183"
    302     });
    303     // 连接。
    304     con.connect();
    305     // 执行查询数据总条数。
    306     con.query({sql: 'SELECT COUNT(*) AS count FROM articles', timeout: 60000}, function (error, results, fields) {
    307       if (error && error.code === 'PROTOCOL_SEQUENCE_TIMEOUT') {
    308         throw new Error('too long to count table rows!');
    309       }
    310      
    311       if (error) {
    312         throw error;
    313       }
    314      
    315       total = results[0].count;
    316     });
    317 
    318 
    319     // 执行查询。
    320     con.query("SELECT * FROM articles LIMIT "+ limit, function(err, results, fields){
    321         // console.log(results);
    322         // res.send('111');
    323         
    324         res.render('admin-article-index', {data:results,total:total,num:num,p:p});
    325         
    326     });
    327 
    328     con.end();
    329     return ;
    330 
    331     // res.send('index');
    332 });
    333 
    334 // 4. 监听。
    335 app.listen(3000);
  • 相关阅读:
    bsgs整理
    一个数的(勾股数)组
    bzoj4709 柠檬 单调栈,DP,斜率优化
    bzoj 3437 小p的农场
    luoguP4072 [SDOI2016]征途
    结构体/构造函数初始化
    UVA1103 古代象形符号 Ancient Messages 题解
    原创100篇文章祭
    UVA297 四分树 Quadtrees 题解
    stack用法,queue用法,
  • 原文地址:https://www.cnblogs.com/peilanluo/p/7282000.html
Copyright © 2020-2023  润新知