質問編集履歴

1

修正

2019/10/15 06:01

投稿

yoshitomi
yoshitomi

スコア5

test CHANGED
File without changes
test CHANGED
@@ -1,435 +1 @@
1
1
  名前、コメントを送信し、それを削除、編集する機能のある掲示板を作っているのですが、削除と編集の、パスワードが一致した時のみ機能を動作させるというのが全く分かりません。知識のある方教えてくださると助かります。
2
-
3
-
4
-
5
-
6
-
7
- <!DOCTYPE html>
8
-
9
- <html lang="ja">
10
-
11
- <head>
12
-
13
- <meta charset="UTF-8">
14
-
15
- <title>keiziban</title>
16
-
17
- <style>
18
-
19
- form {
20
-
21
- margin-bottom: 20px;
22
-
23
- }
24
-
25
- </style>
26
-
27
- </head>
28
-
29
- <body>
30
-
31
-
32
-
33
- <?php
34
-
35
- $filename = "keiziban.txt";
36
-
37
-
38
-
39
- //投稿機能
40
-
41
-
42
-
43
- //フォーム内が空でない場合に以下を実行する
44
-
45
- if (!empty($_POST['name']) && !empty($_POST['comment'])) {
46
-
47
-
48
-
49
- //入力データの受け取りを変数に代入
50
-
51
- $name = $_POST['name'];
52
-
53
- $comment = $_POST['comment'];
54
-
55
-
56
-
57
- //日付データを取得して変数に代入
58
-
59
- $postedAt = date("Y年m月d日 H:i:s");
60
-
61
-
62
-
63
- // editNoがないときは新規投稿、ある場合は編集 ***ここで判断
64
-
65
- if (empty($_POST['editNO'])) {
66
-
67
- // 以下、新規投稿機能
68
-
69
- //ファイルの存在がある場合は投稿番号+1、なかったら1を指定する
70
-
71
- if (file_exists($filename)) {
72
-
73
- $num = count(file($filename)) + 1;
74
-
75
- } else {
76
-
77
- $num = 1;
78
-
79
- }
80
-
81
-
82
-
83
- //書き込む文字列を組み合わせた変数
84
-
85
- $newdata = $num . "<>" . $name . "<>" . $comment . "<>" . $postedAt;
86
-
87
-
88
-
89
- //ファイルを追記保存モードでオープンする
90
-
91
- $fp = fopen($filename, "a");
92
-
93
-
94
-
95
- //入力データのファイル書き込み
96
-
97
- fwrite($fp, $newdata . "\n");
98
-
99
- fclose($fp);
100
-
101
- } else {
102
-
103
- // 以下編集機能
104
-
105
- //入力データの受け取りを変数に代入
106
-
107
- $editNO = $_POST['editNO'];
108
-
109
-
110
-
111
- //読み込んだファイルの中身を配列に格納する
112
-
113
- $ret_array = file($filename);
114
-
115
-
116
-
117
- //ファイルを書き込みモードでオープン+中身を空に
118
-
119
- $fp = fopen($filename, "w");
120
-
121
-
122
-
123
- //配列の数だけループさせる
124
-
125
- foreach ($ret_array as $line) {
126
-
127
-
128
-
129
- //explode関数でそれぞれの値を取得
130
-
131
- $data = explode("<>", $line);
132
-
133
-
134
-
135
- //投稿番号と編集番号が一致したら
136
-
137
- if ($data[0] == $editNO) {
138
-
139
-
140
-
141
- //編集のフォームから送信された値と差し替えて上書き
142
-
143
- fwrite($fp, $editNO . "<>" . $name . "<>" . $comment . "<>" . $postedAt . "\n");
144
-
145
- } else {
146
-
147
- //一致しなかったところはそのまま書き込む
148
-
149
- fwrite($fp, $line);
150
-
151
- }
152
-
153
- }
154
-
155
- fclose($fp);
156
-
157
- }
158
-
159
- }
160
-
161
-
162
-
163
- //削除機能
164
-
165
-
166
-
167
- //削除フォームの送信の有無で処理を分岐
168
-
169
- if (!empty($_POST['dnum'])) {
170
-
171
-
172
-
173
- //入力データの受け取りを変数に代入
174
-
175
- $delete = $_POST['dnum'];
176
-
177
-
178
-
179
- //読み込んだファイルの中身を配列に格納する
180
-
181
- $delCon = file($filename);
182
-
183
-
184
-
185
- //ファイルを書き込みモードでオープン+中身を空に
186
-
187
- $fp = fopen($filename,"w");
188
-
189
-
190
-
191
- //配列の数だけループさせる
192
-
193
- foreach ($delCon as $line) {
194
-
195
-
196
-
197
- //explode関数でそれぞれの値を取得
198
-
199
- $deldata = explode("<>",$line);
200
-
201
-
202
-
203
- //削除番号と行番号が一致しなければ書き込み
204
-
205
- if ($delete !== $deldata[0]) {
206
-
207
-
208
-
209
- //入力データのファイル書き込み
210
-
211
- fwrite($fp,$line);
212
-
213
- }
214
-
215
- }
216
-
217
- fclose($fp);
218
-
219
- }
220
-
221
-
222
-
223
- //編集選択機能
224
-
225
-
226
-
227
- //編集フォームの送信の有無で処理を分岐
228
-
229
- if (!empty($_POST['edit'])) {
230
-
231
-
232
-
233
- //入力データの受け取りを変数に代入
234
-
235
- $edit = $_POST['edit'];
236
-
237
-
238
-
239
- //読み込んだファイルの中身を配列に格納する
240
-
241
- $editCon = file($filename);
242
-
243
-
244
-
245
- //配列の数だけループさせる
246
-
247
- foreach ($editCon as $line) {
248
-
249
-
250
-
251
- //explode関数でそれぞれの値を取得
252
-
253
- $editdata = explode("<>",$line);
254
-
255
-
256
-
257
- //投稿番号と編集対象番号が一致したらその投稿の「名前」と「コメント」を取得
258
-
259
- if ($edit == $editdata[0]) {
260
-
261
-
262
-
263
- //投稿のそれぞれの値を取得し変数に代入
264
-
265
- $editnumber = $editdata[0];
266
-
267
- $editname = $editdata[1];
268
-
269
- $editcomment = $editdata[2];
270
-
271
-
272
-
273
- //既存の投稿フォームに、上記で取得した「名前」と「コメント」の内容が既に入っている状態で表示させる
274
-
275
- //formのvalue属性で対応
276
-
277
- }
278
-
279
- }
280
-
281
- }
282
-
283
-
284
-
285
- //編集実行機能
286
-
287
-
288
-
289
- //編集か新規投稿か判断
290
-
291
- if ((!empty($_POST['name'])) && (!empty($_POST['comment'])) && (!empty($_POST['editNO']))) {
292
-
293
-
294
-
295
- //入力データの受け取りを変数に代入
296
-
297
- $editNO = $_POST['editNO'];
298
-
299
-
300
-
301
- //読み込んだファイルの中身を配列に格納する
302
-
303
- $ret_array = file($filename);
304
-
305
-
306
-
307
- //ファイルを書き込みモードでオープン+中身を空に
308
-
309
- $fp = fopen($filename,"w");
310
-
311
-
312
-
313
- //配列の数だけループさせる
314
-
315
- foreach ($ret_array as $line) {
316
-
317
-
318
-
319
- //explode関数でそれぞれの値を取得
320
-
321
- $data = explode("<>",$line);
322
-
323
-
324
-
325
- //投稿番号と編集番号が一致したら
326
-
327
- if ($data[0] == $editNO) {
328
-
329
-
330
-
331
- //編集のフォームから送信された値と差し替えて上書き
332
-
333
- fwrite($fp,$editNO . "<>" . $name . "<>" . $comment . "<>" . $postedAt . "\n");
334
-
335
- } else {
336
-
337
-
338
-
339
- //一致しなかったところはそのまま書き込む
340
-
341
- fwrite($fp,$line);
342
-
343
- }
344
-
345
- }
346
-
347
- fclose($fp);
348
-
349
- }
350
-
351
- ?>
352
-
353
-
354
-
355
- <form action="keiziban.php" method="post">
356
-
357
- <input type="text" name="name" placeholder="名前" value="<?php if(isset($editname)) {echo $editname;} ?>"><br>
358
-
359
- <input type="text" name="comment" placeholder="コメント" value="<?php if(isset($editcomment)) {echo $editcomment;} ?>"><br>
360
-
361
- <input type="hidden" name="editNO" value="<?php if(isset($editnumber)) {echo $editnumber;} ?>">
362
-
363
-
364
-
365
- <input type="submit" name="submit" value="送信">
366
-
367
- </form>
368
-
369
-
370
-
371
- <form action="keiziban.php" method="post">
372
-
373
- <input type="text" name="dnum" placeholder="削除対象番号">
374
-
375
- <input type="submit" name="delete" value="削除">
376
-
377
- </form>
378
-
379
-
380
-
381
- <form action="keiziban.php" method="post">
382
-
383
- <input type="text" name="edit" placeholder="編集対象番号">
384
-
385
- <input type="submit" value="編集">
386
-
387
- </form>
388
-
389
-
390
-
391
- <?php
392
-
393
- $filemei = "keiziban.txt";
394
-
395
- //表示機能
396
-
397
-
398
-
399
- //ファイルの存在がある場合だけ行う
400
-
401
- if (file_exists($filemei)) {
402
-
403
-
404
-
405
- //読み込んだファイルの中身を配列に格納する
406
-
407
- $array = file($filemei);
408
-
409
-
410
-
411
- //取得したファイルデータを全て表示する(ループ処理)
412
-
413
- foreach ($array as $word) {
414
-
415
-
416
-
417
- //explode関数でそれぞれの値を取得
418
-
419
- $getdata = explode("<>",$word);
420
-
421
-
422
-
423
- //取得した値を表示する
424
-
425
- echo $getdata[0] . " " . $getdata[1] . " " . $getdata[2] . " " . $getdata[3] . "<br>";
426
-
427
- }
428
-
429
- }
430
-
431
- ?>
432
-
433
- </body>
434
-
435
- </html>