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

回答編集履歴

5

修正

2017/08/25 02:06

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -7,9 +7,9 @@
7
7
  まずは未定義エラーが出ないように調整を行いましょう(@で制御するのではなく初期値を定義したり該当の変数の存在確認をした後に使ったりケースにより使い分けてください)
8
8
  - 提示のソースコードは開くたびに空の情報が連番で追加されます。
9
9
  $strが最後に毎回fwriteで書き込まれているものと思われます。そもそもの作りを見直したほうが良いでしょう。
10
+ - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない(前の投稿の末尾に番号だけ追記される)
10
11
  - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除直後は削除したはずのコメントが表示される(ページを読み直すと表示はされない)」という現象が起きるはずです。
11
12
  「$_POST受け取って投稿書き込み or 削除の処理」→「最新のコメント取得」→「HTML表示(中にコメント展開)」とした方が良いです。
12
- - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない
13
13
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
14
14
  ※簡略ソースのためポイントのみ記述しています
15
15
  ```PHP

4

修正(入力チェックなど)

2017/08/25 02:06

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -9,6 +9,7 @@
9
9
  $strが最後に毎回fwriteで書き込まれているものと思われます。そもそもの作りを見直したほうが良いでしょう。
10
10
  - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除直後は削除したはずのコメントが表示される(ページを読み直すと表示はされない)」という現象が起きるはずです。
11
11
  「$_POST受け取って投稿書き込み or 削除の処理」→「最新のコメント取得」→「HTML表示(中にコメント展開)」とした方が良いです。
12
+ - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない
12
13
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
13
14
  ※簡略ソースのためポイントのみ記述しています
14
15
  ```PHP
@@ -18,11 +19,16 @@
18
19
  //submitでPOST送信された場合のみ実行
19
20
  if($_SERVER["REQUEST_METHOD"] == "POST"){
20
21
  //送信されたフォームにより処理を分岐
22
+ $error_name = null;
23
+ $error_comment = null;
24
+ $error_delete_no = null;
21
25
  switch($_POST["mode"]){
22
26
  case "add":
27
+ //名前・コメント未入力のチェック
23
28
  //投稿追加処理
24
29
  break;
25
30
  case "delete":
31
+ //行番号未入力&数字じゃない場合のチェック
26
32
  //投稿削除処理
27
33
  break;
28
34
  }
@@ -51,14 +57,14 @@
51
57
  <head>
52
58
  ~~
53
59
  <form action="" method="post">
54
- 名前<input type="text" name="name" ><br />
60
+ 名前<input type="text" name="name" ><?php echo $error_name ?><br />
55
- コメント<input type="text" name="comment"><br />
61
+ コメント<input type="text" name="comment"><?php echo $error_comment ?><br />
56
62
  <br />
57
63
  <input type="submit" value="送信" />
58
64
  <input type="hidden" name="mode" value="add">
59
65
  </form>
60
66
  <form action="" method="POST">
61
- 削除対象番号<input type="text" name="deleteNo">
67
+ 削除対象番号<input type="text" name="deleteNo"> <?php echo $error_delete_no ?>
62
68
  <input type="submit" name="delete" value="削除">
63
69
  <input type="hidden" name="mode" value="delete">
64
70
  </form>

3

修正

2017/08/25 02:05

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
13
13
  ※簡略ソースのためポイントのみ記述しています
14
14
  ```PHP
15
- <?
15
+ <?php
16
16
  $filemei = 'keijiban.txt'; //最初に定義しておき他の処理で利用する
17
17
 
18
18
  //submitでPOST送信された場合のみ実行

2

修正

2017/08/25 01:41

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -50,7 +50,7 @@
50
50
  <html lang="ja">
51
51
  <head>
52
52
  ~~
53
- <form action="keijiban.php" method="post">
53
+ <form action="" method="post">
54
54
  名前<input type="text" name="name" ><br />
55
55
  コメント<input type="text" name="comment"><br />
56
56
  <br />

1

修正

2017/08/25 01:38

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -2,12 +2,13 @@
2
2
  ファイル名なので$filemeiを使いましょう。
3
3
 
4
4
  他何点か気づき:
5
+ - 投稿保存しているファイル名変数$filemeiを定義しているのに直にファイル名を書いているところが散見され、もったいない。
5
6
  - 提示のソースコードでは変数・配列のキーの未定義エラーが大量に出ると思います。
6
7
  まずは未定義エラーが出ないように調整を行いましょう(@で制御するのではなく初期値を定義したり該当の変数の存在確認をした後に使ったりケースにより使い分けてください)
7
8
  - 提示のソースコードは開くたびに空の情報が連番で追加されます。
8
9
  $strが最後に毎回fwriteで書き込まれているものと思われます。そもそもの作りを見直したほうが良いでしょう。
9
- - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除したはずのコメントが表示される」という現象が起きるはずです。
10
+ - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除直後は削除したはずのコメントが表示される(ページを読み直すと表示はされない)」という現象が起きるはずです。
10
- 「$_POST受け取って書き込みまたは削除の処理」→最新のコメント取得→HTML表示(中にコメント展開)とした方が良いです。
11
+ 「$_POST受け取って投稿書き込み or 削除の処理」→最新のコメント取得HTML表示(中にコメント展開)とした方が良いです。
11
12
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
12
13
  ※簡略ソースのためポイントのみ記述しています
13
14
  ```PHP
@@ -29,7 +30,8 @@
29
30
 
30
31
  //コメント取得処理
31
32
  //全てのコメントを変数で受け取る
33
+ $comment = null;
32
- $comment = null; $posts = file($filemei);
34
+ $posts = file($filemei);
33
35
  foreach($posts as $post){
34
36
  list($num, $name, $message, $time) = explode("<>", $post);
35
37
  $comment.= h($num);