質問編集履歴

1

ソースコードの編集 画像の追加

2018/08/21 00:52

投稿

Abenosan
Abenosan

スコア25

test CHANGED
File without changes
test CHANGED
@@ -10,10 +10,46 @@
10
10
 
11
11
  ```ここに言語を入力
12
12
 
13
+ <!DOCTYPE html>
14
+
13
- <body onload="init();">
15
+ <html lang="ja">
14
16
 
15
17
  <head>
16
18
 
19
+ <meta hyttp-equiv="content-type" content="text/html; charset=UTF-8">
20
+
21
+ <title>ミニ掲示板</title>
22
+
23
+ <link type="text/css" href="./style.css" rel="stylesheet">
24
+
25
+ <script>
26
+
27
+ function init(){
28
+
29
+ var id = localStorage.getItem('id');
30
+
31
+ if(id == null){
32
+
33
+ location.href ='./login';
34
+
35
+ }
36
+
37
+ document.querySelector('#id').textContent = 'ID:' + id;
38
+
39
+ document.querySelector('#id_input').value = id;
40
+
41
+ }
42
+
43
+ </script>
44
+
45
+ </head>
46
+
47
+
48
+
49
+ <body onload="init();">
50
+
51
+ <head>
52
+
17
53
  <h1>掲示板</h1>
18
54
 
19
55
  </head>
@@ -50,6 +86,10 @@
50
86
 
51
87
  </body>
52
88
 
89
+ </html>
90
+
91
+
92
+
53
93
  ```
54
94
 
55
95
 
@@ -58,83 +98,281 @@
58
98
 
59
99
 
60
100
 
61
- 一部分
101
+
62
102
 
63
103
  ```ここに言語を入力
64
104
 
105
+ const http = require('http');
106
+
107
+ const fs = require('fs');
108
+
109
+ const ejs = require('ejs');
110
+
111
+ const url = require('url');
112
+
113
+ const qs = require('querystring');
114
+
115
+
116
+
117
+ const index_page = fs.readFileSync('./index.ejs', 'utf8');
118
+
119
+ const login_page = fs.readFileSync('./login.ejs', 'utf8');
120
+
121
+ const style_css = fs.readFileSync('./style.css', 'utf8');
122
+
123
+
124
+
125
+ const max_num = 10;
126
+
127
+ const filename = 'mydata.txt'; // データファイル名
128
+
129
+ var message_data; // データ
130
+
131
+ readFromFile(filename);
132
+
133
+
134
+
135
+ var server = http.createServer(getFromClient);
136
+
137
+ server.listen(3000);
138
+
139
+ console.log('ほないこけ');
140
+
141
+
142
+
143
+ // ここまでメインプログラム
144
+
145
+
146
+
147
+ // createServerの処理
148
+
149
+ function getFromClient(requset,response){
150
+
151
+ var url_parts = url.parse(requset.url,true);
152
+
153
+ switch(url_parts.pathname){
154
+
155
+
156
+
157
+ case '/':
158
+
159
+ response_index(requset.response);
160
+
161
+ break;
162
+
163
+
164
+
165
+ case '/login':
166
+
167
+ response_login(requset.response);
168
+
169
+ break;
170
+
171
+
172
+
173
+ case '/style.css':
174
+
175
+ response.writeHead(200 ,{'Content-Type': 'text/css'});
176
+
177
+ response.write(style_css);
178
+
179
+ response.end();
180
+
181
+ break;
182
+
183
+ default:
184
+
185
+ response.writeHead(200, {'Content-Type': 'text/plain'});
186
+
187
+ response.end('no.page....');
188
+
189
+ break;
190
+
191
+ }
192
+
193
+ }
194
+
195
+
196
+
197
+ // Loginのアクセス処理
198
+
199
+
200
+
201
+ function response_login(requset,response){
202
+
203
+ var content = ejs.render(login_page,{});
204
+
205
+ response.writeHead(200, {'Content-Type': text/html});
206
+
207
+ response.weite(content);
208
+
209
+ response.end();
210
+
211
+ }
212
+
213
+
214
+
65
215
  // indexのアクセス処理
66
216
 
67
217
  function response_index(request,response){
68
218
 
69
219
  // Post 処理
70
220
 
221
+ if(request.method == 'POST'){
222
+
223
+ var body = '';
224
+
225
+ request.on('data',function(data){
226
+
227
+ body += data;
228
+
229
+ });
230
+
231
+
232
+
233
+ // データ受信終了のイベントを処理
234
+
235
+ request.on('end',function(){
236
+
237
+ data = qs.parse(body);
238
+
239
+ addToData(data.id, data.msg, filename,request); //?
240
+
241
+ write_index(request,response);
242
+
243
+ });
244
+
245
+ }else{
246
+
247
+ write_index(request,response);
248
+
249
+ }
250
+
251
+ }
252
+
253
+
254
+
255
+ // indexのページ作成
256
+
257
+ function write_index(requset,response){
258
+
259
+ var msg = "※何かコメントを書いてください";
260
+
261
+ var content = ejs.render(index_page,{
262
+
263
+ title:'Index',
264
+
265
+ content:msg,
266
+
267
+ data:message_data,
268
+
269
+ filename:'data_item',
270
+
271
+ });
272
+
273
+ response.writeHead(200, {'Content-type':'text/html'});
274
+
275
+ response.write(content);
276
+
277
+ response.end();
278
+
279
+ }
280
+
281
+
282
+
283
+ //テキストファイルをロード
284
+
285
+ function readFromFile(fname){
286
+
287
+ fs.readFile(fname, 'utf8',(err,data)=>{
288
+
289
+ message_data = data.split('/n');
290
+
291
+ })
292
+
293
+ }
294
+
295
+
296
+
297
+ //データを更新
298
+
299
+ function addToData(id,msg,fname,request){
300
+
301
+ var obj = {'id':id,'msg':msg};
302
+
303
+ var obj_str = JSON.stringify(obj);
304
+
305
+ console.log('add data:' + obj_str);
306
+
307
+ message_data.unshift(obj_str);
308
+
309
+ if(message_data.lenght > max_num){
310
+
311
+ message_data.pop();
312
+
313
+ }
314
+
315
+ saveToFile(fname);
316
+
317
+ }
318
+
319
+
320
+
321
+ //データ保存
322
+
323
+ function saveToFile(fname){
324
+
325
+ var data_str = message_data.join('/n');
326
+
327
+ fs.writeFile(fname, data_str,(err)=>{
328
+
329
+ if(err){throw err;}
330
+
331
+ });
332
+
333
+ }
334
+
335
+
336
+
337
+
338
+
339
+ ```
340
+
341
+ エラーコード
342
+
343
+ ```ここに言語を入力
344
+
345
+ PS C:\Users***name***\Desktop\作品\mini_board> node app.js
346
+
347
+ ほないこけ
348
+
349
+ C:\Users***name***\Desktop\作品\mini_board\app.js:59
350
+
71
351
  if(request.method == 'post'){
72
352
 
73
- var body = '';
74
-
75
- request.on('data',function(data){
76
-
77
- body += data;
78
-
79
- });
353
+ ^
80
-
81
-
82
-
83
- // データ受信終了のイベントを処理
354
+
84
-
355
+
356
+
85
- request.on('end',function(){
357
+ TypeError: Cannot read property 'method' of undefined
86
-
358
+
87
- data = qs.parse(body);
359
+ at response_index (C:\Users***name***\Desktop\作品\mini_board\app.js:59:16)
88
-
360
+
89
- addToData(data.id, data.msg, filename,request); //?
361
+ at Server.getFromClient (C:\Users***name***\Desktop\作品\mini_board\app.js:28:13)
90
-
362
+
91
- write_index(request,response);
363
+ at emitTwo (events.js:126:13)
92
-
93
- });
364
+
94
-
95
- }else{
96
-
97
- write_index(request,response);
365
+ at Server.emit (events.js:214:7)
98
-
366
+
99
- }
367
+ at parserOnIncoming (_http_server.js:619:12)
100
-
368
+
101
- }
369
+ at HTTPParser.parserOnHeadersComplete (_http_common.js:112:17)
102
-
103
-
104
370
 
105
371
  ```
106
372
 
107
- エラーコード
373
+
108
-
109
- ```ここに言語を入力
374
+
110
-
111
- PS C:\Users***name***\Desktop\作品\mini_board> node app.js
112
-
113
- ほないこけ
114
-
115
- C:\Users***name***\Desktop\作品\mini_board\app.js:59
116
-
117
- if(request.method == 'post'){
118
-
119
- ^
120
-
121
-
122
-
123
- TypeError: Cannot read property 'method' of undefined
124
-
125
- at response_index (C:\Users***name***\Desktop\作品\mini_board\app.js:59:16)
126
-
127
- at Server.getFromClient (C:\Users***name***\Desktop\作品\mini_board\app.js:28:13)
128
-
129
- at emitTwo (events.js:126:13)
130
-
131
- at Server.emit (events.js:214:7)
132
-
133
- at parserOnIncoming (_http_server.js:619:12)
375
+ > ![引用テキスト](d01e397b76e05a5209d7ec6a1c1f6155.png)
134
-
135
- at HTTPParser.parserOnHeadersComplete (_http_common.js:112:17)
136
-
137
- ```
138
376
 
139
377
 
140
378