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

回答編集履歴

1

日本語の修正

2017/09/28 03:39

投稿

s-washion
s-washion

スコア204

answer CHANGED
@@ -2,11 +2,12 @@
2
2
  ソースを拝見させていただきました。
3
3
 
4
4
  まず、fopenのwモードで開くとファイルが空になります。
5
- ですので、1つ目のソースですと、パスワドが一致しない場合、fwriteが実行されないルートを通りますので
5
+ ですので、1つ目のソースですと、パスワドが一致しない場合、fwriteが実行されないルートを通りますのでファイルが空のままになります。
6
- ファイルが空になります。
7
6
 
8
7
  2つ目のソースは惜しいのですが、↓の書き方ですと
9
- 対象番号が一致しないパスワードが一致しないの両方を満たすケースのみ元々あった行がfwriteされていますが、逆にいうと、どちらかが一致してしまうと消去のルートへ行きます。
8
+ 対象番号が一致しない」と「パスワードが一致しないの両方を満たすケースのみ
9
+ 元々あった行がfwriteされます。
10
+ 逆にいうと、どちらか一方が一致してしまうと消去のルートへ行ってしまいます。
10
11
  ```php
11
12
  if ($delDate[0] != $delete && $delDate[4] != $delpass) {
12
13
  ```
@@ -14,9 +15,9 @@
14
15
  ```php
15
16
  if ($delDate[0] == $delete || $delDate[4] == $delpass) {
16
17
  ```
17
- そうすると、対象番号が違うにもかかわらず、パスワードが一致した場合、消されてしまうわけです。
18
+ そうすると、対象番号ではないにもかかわらず、パスワードが一致さえすればその行は消されてしまうわけです。
18
19
 
19
- この場合、対象番号とパスワードの両方が一致すれば削除すればいいので、
20
+ ではどうすればいいかというと、対象番号とパスワードの両方が一致すれば削除していいので、
20
21
  以下のif文でよいと思います。
21
22
  ```php
22
23
  if ($delDate[0] == $delete && $delDate[4] == $delpass){
@@ -28,8 +29,8 @@
28
29
  }
29
30
  ```
30
31
 
31
- そして最後に以下の配列に変換している処理ですが、
32
+ そして最後に、explodeで配列に変換している処理ですが、
32
- おそらくパスワード(最後の要素)に改行が入ってしまっていのでないかと思いますので、
33
+ おそらくパスワード(最後の要素)に改行が入ってしまって一致しないのでないかと思いますので、
33
34
  trimを使ってみてください。
34
35
  ```php
35
36
  // $delDate = explode("<>", $delCon[$j]);