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

回答編集履歴

1

見直し

2020/08/30 06:46

投稿

退会済みユーザー
answer CHANGED
@@ -64,4 +64,42 @@
64
64
  投稿番号のみを管理するファイルを設け、
65
65
  投稿を書き込むたびに+1した内容に更新する。
66
66
 
67
- などといった方法が考えられます。
67
+ などといった方法が考えられます。
68
+
69
+ 投稿データの書き込みの箇所でもう一点。
70
+
71
+ ```php
72
+ /*書き込む文字列を組み合わせた変数*/
73
+ $data = "$num <> $name <> $comment <> $date". PHP_EOL;
74
+ ```
75
+
76
+ こんな連結方法でいいのでしょうか?
77
+ 分離方法が
78
+
79
+ ```php
80
+ $result = explode("<>", $value);
81
+ ```
82
+
83
+ となっているので、どちらかに統一しないと、
84
+ 前後に余計に空白がついたデータが使われます。
85
+ HTML上に出力したソースコードで意図せず空白が前後についていると思われます。
86
+ 揃えるなら例えば
87
+
88
+ ```php
89
+ $result = explode(" <> ", $value);
90
+ ```
91
+
92
+ とするか、そもそも連結箇所を
93
+
94
+ ```php
95
+ /*書き込む文字列を組み合わせた変数*/
96
+ $data = implode("<>", [$num, $name, $comment, $date]) . PHP_EOL;
97
+ ```
98
+
99
+ などとするかです。
100
+
101
+ まぁ、それを言い出すと、
102
+ フォームで投稿文字列に「<>」が入っている場合の対策がないことも気になります。
103
+ $nameや$commentに当たる箇所に「<>」が入っていると、
104
+ ファイルから読み出して分離するときに投稿データに含まれる「<>」で区切られると
105
+ おかしなことになります。