PHP - 为什么我的逻辑语句不能正常工作?

时间:2018-04-11 08:56:43

标签: php arrays

我有一个Account.txt文件,其中包含有关电子邮件和密码的信息,如

Email01|Password01
Email02|Password02
...
EmailN|PasswordN

我读了这个文件并存储到数组

<?php

    $myFile = fopen("Account.txt","r") or die("Unable to open file!");

    //An array for the key of data
    $keyData = array('Email','Password');
    // Array store all data
    $allAccountData = array();
    while(!feof($myFile)) { 
        $line = fgets($myFile);

        $dataValue = explode('|', $line);
        $accountData = array_combine($keyData, $dataValue);
        array_push($allAccountData, $accountData);

    }

    fclose($myFile);
   ?> 

我检查了表单中的输入数据,如

<?php 
        if(empty($user_login)) 
            include "form-register.php";        
        else {
            $flag = false;

            foreach($allAccountData as $key=>$value) {
                if($value['Email'] == $user_login and $value['Password'] == $user_password) {
                    $flag = true;
                    break;
                }
            }
            if ($flag == true) {
                echo "<p align = 'center'> <strong> Welcome ".$user_login." to facebook!</strong>"."<br>";
                echo "Click <a href='index.php'> here to logout </p>";  
            }
            else {
                echo "<p align = 'center' <strong> Sorry your login information is wrong!</strong>"."<br>";
                echo "Click <a href='index.php'> here to login again </p>";
            } 

        }

    ?>

我想知道为什么结果$flag = true仅返回最后一行EmailN|PasswordN并返回false其他行,无论输入是否正确,并且 有什么好方法可以存储从文件中读取的数据,除了使用Array。

抱歉,我的英语不好,非常感谢你们!

1 个答案:

答案 0 :(得分:0)

在比较之前,您需要修剪空白区域。

2018-04-04

使用trim从比较值之前和之后删除所有可能的空格,并使比较更准确。

使用trim,逻辑正在运行。