回答編集履歴

1

見直し

2019/12/24 11:28

投稿

退会済みユーザー
test CHANGED
@@ -29,3 +29,219 @@
29
29
  2件、新規投稿を試したんだけど、特にエラーが発生しないんだが。
30
30
 
31
31
  ![イメージ説明](c26afd13a5e88791dffb4361716e1066.png)
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ 編集機能、
40
+
41
+ パスワードが合わなくても編集できてしまうなぁ。
42
+
43
+ テストしてる?
44
+
45
+
46
+
47
+ で、もうちょっと清書して、たぶんこういう書き方になるはず。
48
+
49
+ ```php
50
+
51
+ if ( isset($_POST["edit"] ) === true ) {
52
+
53
+
54
+
55
+ if ( $renum === "" ) $err_msg3 = "番号を入力してください";
56
+
57
+ if ( $rename === "" ) $err_msg4 = "名前を入力してください";
58
+
59
+ if ( $retext === "" ) $err_msg5 = "コメントを入力してください";
60
+
61
+ if ( $pass2ed === "" ) $err_msg9 = "パスワードを入力してください";
62
+
63
+
64
+
65
+ if ( ($err_msg3 === "") && ($err_msg4 === "") && ($err_msg5 === "") && ($err_msg9 === "") ) {
66
+
67
+ $fp = fopen("231536_receive.txt", "w");
68
+
69
+ for ($i = 0; $i < count($edfile); $i++) {
70
+
71
+ $editraw = explode("<>", trim($edfile[$i])); // <-- trim()をつけないとパスワードに改行コードがツイたまま。
72
+
73
+
74
+
75
+ if ($editraw[0] !== $renum) {
76
+
77
+ fwrite($fp, $edfile[$i]);
78
+
79
+ }
80
+
81
+ else { // <-- 投稿番号と編集番号が一致
82
+
83
+ if ($editraw[4] === $pass2ed){
84
+
85
+ fwrite($fp, $redata);
86
+
87
+ $message2 = "編集に成功しました。";
88
+
89
+ }
90
+
91
+ else {
92
+
93
+ fwrite($fp, $edfile[$i]);
94
+
95
+ $message2 = "編集に失敗しました。パスワードが間違っています。";
96
+
97
+ }
98
+
99
+ }
100
+
101
+ }
102
+
103
+ if ($message2 === '') {
104
+
105
+ $message2 = "編集に失敗しました。編集番号が一致しませんでした。";
106
+
107
+ }
108
+
109
+ }
110
+
111
+ }
112
+
113
+ ```
114
+
115
+ 編集番号が見つかってパスワードが一致しなかった場合、
116
+
117
+ 編集番号が一致しなかった場合、も考慮する必要があるのではないかと。
118
+
119
+
120
+
121
+ ---
122
+
123
+
124
+
125
+ 名前とかカラで投稿したらエラーになった。
126
+
127
+ 新規投稿の処理を清書するとこうなる:
128
+
129
+ ```php
130
+
131
+ if ( isset($_POST["posting"] ) === true ) {
132
+
133
+ if ( $name === "" ) $err_msg1 = "名前を入力してください";
134
+
135
+ if ( $text === "" ) $err_msg2 = "コメントを入力してください";
136
+
137
+ if ( $password === "" ) $err_msg7 = "パスワードを入力してください";
138
+
139
+
140
+
141
+ if ( ($err_msg1 === "") && ($err_msg2 === "") && ($err_msg7 === "") ) {
142
+
143
+ $fp = fopen( "231536_receive.txt" ,"a" );
144
+
145
+ fwrite($fp , $data);
146
+
147
+ $message = "投稿に成功しました。";
148
+
149
+ fclose($fp);
150
+
151
+ }
152
+
153
+ }
154
+
155
+ ```
156
+
157
+ ifブロックとかの{~}の対応付けがわかりやすくなるよう、
158
+
159
+ インデント量を調整しておくこと。
160
+
161
+
162
+
163
+ ---
164
+
165
+
166
+
167
+ あと、消去フォームで、「消去しました。」をファイルに書き出してどーする。
168
+
169
+ <>で区切ったデータじゃないものを混在させると、他の処理でエラーになります。
170
+
171
+
172
+
173
+ ってことで清書してみた:
174
+
175
+ ```php
176
+
177
+ // 消去フォーム
178
+
179
+ $err_msg6 = "";
180
+
181
+ $err_msg8 = "";
182
+
183
+ $delfile = file('231536_receive.txt');
184
+
185
+ $delete = ( isset( $_POST["delete"] ) === true ) ? $_POST["delete"] : "";
186
+
187
+ $pass3del = ( isset( $_POST["pass3del"] ) === true ) ? $_POST["pass3del"] : "";
188
+
189
+
190
+
191
+
192
+
193
+ if ( isset($_POST["delete"] ) === true ) {
194
+
195
+ if ( $delete === "" ) $err_msg6 = "番号を入力してください";
196
+
197
+ if ( $pass3del === "" ) $err_msg8 = "パスワードを入力してください";
198
+
199
+
200
+
201
+ if ( ($err_msg6 === "") && ($err_msg8 === "") ) {
202
+
203
+ $fp = fopen("231536_receive.txt", "w");
204
+
205
+ for ($i = 0; $i < count($delfile); $i++) {
206
+
207
+ $deldata = explode( "<>", trim($delfile[$i]) );
208
+
209
+ if ( $deldata[0] !== $delete ) {
210
+
211
+ fwrite($fp, $delfile[$i]);
212
+
213
+ }
214
+
215
+ else {
216
+
217
+ if ($deldata[4] === $pass3del) {
218
+
219
+ $err_msg6 = $delete . "番の消去に成功しました。";
220
+
221
+ }
222
+
223
+ else {
224
+
225
+ $err_msg8 = $delete . "番の消去に失敗しました。パスワードが間違っています。";
226
+
227
+ fwrite($fp, $delfile[$i]);
228
+
229
+ }
230
+
231
+ }
232
+
233
+ }
234
+
235
+ if ( ($err_msg6 === '') && ($err_msg8 === '') ) {
236
+
237
+ $err_msg6 = $delete . '番に一致するものを見つけられませんでした。';
238
+
239
+ }
240
+
241
+ }
242
+
243
+ }
244
+
245
+ ```
246
+
247
+ 消去フォームでもtrim()忘れてたりしてたし。