質問するログイン新規登録

質問編集履歴

1

コード全体をすべて載せます。

2019/09/04 07:45

投稿

MakotoIshizawa
MakotoIshizawa

スコア32

title CHANGED
File without changes
body CHANGED
@@ -15,38 +15,89 @@
15
15
  以下が書いてみたコードです。
16
16
  投稿部分
17
17
  ```php
18
+ <?php
19
+ /*もしポストで送信されたら以下の処理を行いGET送信でリダイレクトする(更新時の二重書き込み防止)*/
20
+ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) { /*もしPOSTで送信されたら*/
21
+
22
+ /*フォームで送信された値を受け取り、テキストファイルに保存する。
23
+ その際1行ごとに「{番号}<>{名前}<>{コメント}<>{投稿された時間}」と言う形で保存する*/
24
+ /*変数の定義*/
18
- $filename = "keijiban.txt";                        /*保存するファイル*/
25
+ $filename = "keijiban.txt"; /*保存するファイル*/
19
- $name = htmlspecialchars($_POST['name']);                 /*投稿者の名前*/
26
+ $name = $_POST[ 'name' ] ; /*投稿者の名前*/
20
- $comment = htmlspecialchars($_POST['comment']);            /*投稿するコメント*/
27
+ $comment = $_POST[ 'comment' ] ; /*投稿するコメント*/
21
28
  $date = date( "Y-m-d H:i" ); /*投稿日時*/
22
29
 
23
30
  /*投稿番号の定義*/
24
- if ( file_exists( $filename ) ) {                 /*ファイルの存在を確認*/
31
+ if ( file_exists( $filename ) ) /*ファイルの存在を確認*/ { /*真ならファイルの配列の行をカウントし、プラス1を変数の定義とする*/
25
-              /*真ならファイルの配列の行をカウントし、プラス1を変数の定義とする*/
26
- $count = count( file( $filename ) ) + 1;
32
+ $count = count( file( $filename ) /*ファイルを配列として読みこむ*/ ) /*配列を数える*/ + 1;
27
- } else {                   /*ファイルが無かった場合変数の定義を1とする*/
33
+ } else { /*ファイルが無かった場合変数の定義を1とする*/
28
34
  $count = 1;
29
35
  }
30
- $hozon = $count . "<>" . $date . "<>" . $name . "<>" . $comment . "\n";
36
+ $hozon = $count . "<>" . $name . "<>" . $comment . "<>" . $date . "\n";
31
- if ( !empty( $_POST[ 'name' ] ) && !empty( $_POST[ 'comment' ] ) ) {
37
+ if ( !empty( $_POST[ 'name' ] ) && !empty( $_POST[ 'comment' ] ) ) { /*もし名前とコメントが送信されたら*/
32
-                               /*もし名前とコメントが送信されたら*/
33
38
  file_put_contents( $filename, $hozon, FILE_APPEND ); /*指定したファイルに追記モードで書き込み*/
34
39
  }
35
- ```
36
- 削除部分
37
- ```php
38
- if ( !empty( $_POST[ 'deleteNO' ] ) ) {       /*もし、削除番号がポスト送信されたら*/
40
+ if ( !empty( $_POST[ 'deleteNO' ] ) ) { /*もし、削除番号がポスト送信されたら*/
39
- $deleteNO = htmlspecialchars($_POST[ 'deleteNO' ]);      /*削除番号の変数定義*/
40
41
 
42
+ $deleteNO = $_POST[ 'deleteNO' ] ; /*削除番号の変数定義*/
41
- $ret_array = file( $filename );          /*ファイルを配列として読み込む*/
43
+ $ret_array = file( $filename ); /*ファイルを配列として読み込む*/
42
- foreach ( $ret_array as $value ) {                      /*ループ*/
43
- $value4 = explode( "<>", $value );                     /*<>で分割*/
44
- if ( $deleteNO != $value4[0] ) {   /*もし読み込んだ番号と送信した番号が違ったら*/
45
-
46
- file_put_contents( $filename,$value);               /*ファイルに書き込む*/
47
- }
48
- }
49
44
 
45
+ foreach ( $ret_array as $value ) { /*ループ*/
46
+ $value4 = explode( "<>", $value ); /*<>で分割し投稿番号取り出す*/
47
+
48
+ if ( $deleteNO != $value4[ 0 ] ) { /*もし読み込んだ番号と送信した番号が違ったら*/
49
+
50
+ file_put_contents( $filename, $value ); /*ファイルに書き込む*/
51
+
50
52
  }
51
-
53
+ }
54
+
55
+ }
56
+
57
+ header( 'Location: keijiban.php' );
58
+ exit;
59
+ }
60
+ ?>
61
+ <!doctype html>
62
+ <html lang="ja">
63
+ <head>
64
+ <meta charset="utf-8">
65
+ <title>簡易掲示板</title>
66
+ </head>
67
+
68
+ <body>
69
+ <p>
70
+ <form action="keijiban.php" method="post" >
71
+ <label for="name-field">お名前<span style="color: red;">【必須】</span><br>
72
+ </label>
73
+ <input type="text" name="name" id="name-field" required="required">
74
+ </p>
75
+ <p>
76
+ <label for="comment">コメント<span style="color: red;">【必須】</span></label>
77
+ <br>
78
+ <textarea name="comment" cols="30" rows="3" id="comment" required="required"></textarea>
79
+ </p>
80
+ <input type="submit" value="投稿">
81
+ </form>
82
+ <?php
83
+
84
+
85
+ $filename = "keijiban.txt";
86
+ $ret_array = file( $filename );
87
+ foreach ( $ret_array as $value ) {
88
+ $value2 = explode( "<>", $value );
89
+ foreach ( $value2 as $value3 ) {
90
+ echo $value3 . "<br>\n";
91
+ }
92
+ }
93
+ ?>
94
+ <form action="keijiban.php" method="post">
95
+ <P>
96
+ <label for="deleteNO" >削除対象番号</label>
97
+ <input type="text" name="deleteNO" id="deleteNO" >
98
+ </p>
99
+ <input type="submit" value=”削除”>
100
+ </form>
101
+ </body>
102
+ </html>
52
103
  ```