入力されたユーザー名とパスワードを.txtファイルと照合する簡単なログインスクリプトを作成しようとしています。私が見つけた問題は、私のスクリプトが自分の.txtファイルの最初の行だけをチェックすることです。つまり、.txtファイルの最初の行が "test | test123"で、ユーザー名に "test"を入力し、パスワードに "test123"と入力すればすべて動作します。しかし、私が他の行と同じことをすると、 "invalid password or username"文が返されます。私のスクリプトは、入力されたユーザー名とパスワードに対して、自分の.txtファイル内の他の行をチェックしていないと思いますか?どのようにこれを修正することができますか?PHPスクリプトで.txtファイルの複数の行がチェックされない
<?php
$check = 0;
if (isset($_POST['submit']))
{
$username = htmlentities($_POST['name']);
$username = strtolower($username);
$password = htmlentities($_POST['apw']);
$filename = getcwd() . "/atextfile.txt";
$lines = file($filename , FILE_IGNORE_NEW_LINES);
foreach($lines as $key => $line)
{
list($name, $pw) = explode('|', $line);
if($name == $username && $pw == $password)
$check++;
break;
}
if ($check == 1){
header("location: index.php");
}
else{
printf("Your username or password are invalid. Please try again.");
}
}
?>
<form method = "POST" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
Username:<br />
<input type = "text" id="name" name="name" size="20" maxlength="40" />
</p>
<p>
Password:<br />
<input type = "password" id="apw" name="apw" size="20" maxlength="40" />
</p>
<input type="submit" id="submit" name ="submit" name ="submit" value="Log in" />
<p>
<a href="register.php">Register</a></p>
</form>