PHP脚本未检查.txt文件中的多行

PHP脚本未检查.txt文件中的多行,php,Php,我正在尝试制作一个简单的登录脚本,它将根据一个.txt文件检查输入的用户名和密码。我发现的问题是,我的脚本只检查.txt文件的第一行。也就是说,如果.txt文件的第一行读作“test | test123”,我输入“test”作为用户名,“test123”作为密码,那么一切都正常。但是,当我对其余行执行相同操作时,它返回“无效密码或用户名”语句。我相信我的脚本没有根据输入的用户名和密码检查.txt文件中的其他行?如何解决这个问题 <?php $check = 0; if (isset($_

我正在尝试制作一个简单的登录脚本,它将根据一个.txt文件检查输入的用户名和密码。我发现的问题是,我的脚本只检查.txt文件的第一行。也就是说,如果.txt文件的第一行读作“test | test123”,我输入“test”作为用户名,“test123”作为密码,那么一切都正常。但是,当我对其余行执行相同操作时,它返回“无效密码或用户名”语句。我相信我的脚本没有根据输入的用户名和密码检查.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>


将break语句放在if指令的{}块中。此时,它总是在第一行之后断开

这是您的问题:

foreach($lines as $key => $line)
{
    list($name, $pw) = explode('|', $line);
    if($name == $username && $pw == $password)
    $check++;
    break;  
}
应该是

foreach($lines as $key => $line)
{
    list($name, $pw) = explode('|', $line);
    if($name == $username && $pw == $password)
    {
        $check++;
        break;  
    }
}

我同意丹的看法。我只是想说得更清楚。。我在下面添加了正确的代码

foreach($lines as $key => $line)       
{
    list($name, $pw) = explode('|', $line);   
    if($name == $username && $pw == $password) 

      {                 
             $check++;
             break;  
      }
 }