基于登录表单在php中返回布尔值

时间:2013-11-17 18:42:26

标签: php login boolean

我正在尝试使用php来验证用户登录信息。用户信息以格式名称:密码保存在文本文件中。如果文本文件中的姓氏与传递的名称和密码匹配,则我的代码返回true。但是,如果传递的名称和密码组合包含在文本文件的中间,则代码返回false。我是php新手,java是我的主要语言。

    <?php
    $users = file("users.txt");
    #this line is just here for testing reasons
    echo check_user("isabel", "washington12", $users);

    function check_user($name, $password, $users) {
        $users_size = count($users);
        for($i = 0; $i < $users_size; $i++) {
            $curr_user = explode(":", $users[$i]);
            if($curr_user[0] == $name && $curr_user[1] == $password) {
                return TRUE;
            }
        }
        return FAlSE;
    }
?>

示例文本文件

bob:firework
krista:blueheart
jason:hatcap
isabel:washington12
andrew:chalkboard

2 个答案:

答案 0 :(得分:0)

文件中的每一行都有一个换行符。 file默认情况下不会删除换行符。您必须trim与之比较的数据:

<?php
$users = file("users.txt");
    #this line is just here for testing reasons
    echo check_user("isabel", "washington12", $users);

    function check_user($name, $password, $users) {
        $users_size = count($users);
        for($i = 0; $i < $users_size; $i++) {
            $curr_user = explode(":", $users[$i]);
            if(trim($curr_user[0]) == $name && trim($curr_user[1]) == $password) {
                return TRUE;
            }
        }
        return FALSE;
    }

?>

或者,您可以使用FILE_IGNORE_NEW_LINES标记而不是file

trim

答案 1 :(得分:0)

为简单起见,您可以使用:

$valid = (rtrim($curr_user[0]) == trim($name)) && (rtrim($curr_user[1]) == trim($password));
return $valid;

您是否有代码打开文件并使用文件句柄逐行读取?您可以找到here的示例。

相关问题