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. 實(shí)例化。
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 // 設(shè)置
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 // 實(shí)例化。
53 var form = new formidable.IncomingForm();
54
55 // 表單處理。
56 form.parse(req, function(error, fields, files){
57 // console.log(fields);
58 // 獲取用戶(hù)名 密碼。
59 var name = fields.name;
60 var password = fields.password;
61 var rememberme = fields.rememberme;
62 // console.log(rememberme);
63
64 // 查詢(xún)數(shù)據(jù)庫(kù)。
65 var con = mysql.createConnection({
66 host:"localhost",
67 user:"root",
68 password:"",
69 database:"php183"
70 });
71 // 連接。
72 con.connect();
73 // 執(zhí)行查詢(xún)。
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('沒(méi)有這個(gè)用戶(hù)');
80 return ;
81 }
82
83 // 判斷密碼。
84 if(results[0].password != password){
85 req.session.info = '密碼錯(cuò)誤!';
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 // 將用戶(hù)數(shù)據(jù)存入 session
97 req.session.admin = results[0];
98
99 // 跳轉(zhuǎn)后臺(tái)主頁(yè)
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 // 實(shí)例化。
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 // 查詢(xún)數(shù)據(jù)庫(kù)。
145 var con = mysql.createConnection({
146 host:"localhost",
147 user:"root",
148 password:"",
149 database:"php183"
150 });
151 // 連接。
152 con.connect();
153 // 執(zhí)行查詢(xún)。
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 // 查詢(xún)數(shù)據(jù)庫(kù)。
180 var con = mysql.createConnection({
181 host:"localhost",
182 user:"root",
183 password:"",
184 database:"php183"
185 });
186 // 連接。
187 con.connect();
188 // 執(zhí)行查詢(xún)。
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 // 實(shí)例化。
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 // 查詢(xún)數(shù)據(jù)庫(kù)。
217 var con = mysql.createConnection({
218 host:"localhost",
219 user:"root",
220 password:"",
221 database:"php183"
222 });
223 // 連接。
224 con.connect();
225 // 執(zhí)行查詢(xún)。
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 // 查詢(xún)數(shù)據(jù)庫(kù)。
253 var con = mysql.createConnection({
254 host:"localhost",
255 user:"root",
256 password:"",
257 database:"php183"
258 });
259 // 連接。
260 con.connect();
261 // 執(zhí)行查詢(xún)。
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 // 根據(jù) p 處理需要的參數(shù)。
289 // 0,10
290 // 10,10
291 var start = (p-1)*num;
292 var end = num;
293 var limit = start + ',' + end;
294
295
296 // 查詢(xún)數(shù)據(jù)庫(kù)。
297 var con = mysql.createConnection({
298 host:"localhost",
299 user:"root",
300 password:"",
301 database:"php183"
302 });
303 // 連接。
304 con.connect();
305 // 執(zhí)行查詢(xún)數(shù)據(jù)總條數(shù)。
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 // 執(zhí)行查詢(xún)。
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. 監(jiān)聽(tīng)。
335 app.listen(3000);
?
轉(zhuǎn)載于:https://www.cnblogs.com/peilanluo/p/7282000.html
總結(jié)
- 上一篇: UVA 11039.Building d
- 下一篇: BZOJ 3884 上帝与集合的正确用法