回答編集履歴
1
日本語の修正
answer
CHANGED
@@ -2,11 +2,12 @@
|
|
2
2
|
ソースを拝見させていただきました。
|
3
3
|
|
4
4
|
まず、fopenのwモードで開くとファイルが空になります。
|
5
|
-
ですので、1つ目のソースですと、パスワ
|
5
|
+
ですので、1つ目のソースですと、パスワードが一致しない場合、fwriteが実行されないルートを通りますのでファイルが空のままになります。
|
6
|
-
ファイルが空になります。
|
7
6
|
|
8
7
|
2つ目のソースは惜しいのですが、↓の書き方ですと
|
9
|
-
対象番号が一致しない
|
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]);
|