无法比较数据库中的密码

时间:2017-10-31 16:36:03

标签: php html redbean

我有一个包含用户" admin"用密码" admin"。在db.php中,我连接了RedBeaNPHP。 DB : id,user,password,authority。但我无法比较密码。出了什么问题?

if( empty( $errors)) 
    {
        $user = R::find( 'users', 'login = ?' , array($data['login']) );
        if($user) 
            {
                $password_db = R::find( 'users', 'password = ?' , 
                                         array($data['password']) );
                if( $password_db) 
                    {
                        echo 5555;
                    }   
            } else 
            {
                echo 'Wrong password';
            }

HTML代码:

<div id="login">
    <h1>Auth</h1>
    <form name='form-login' method="post">
        <span class="fontawesome-user"></span>
        <input type="text" name="user" placeholder="Username">
        <span class="fontawesome-lock"></span>
        <input type="password" name="password" placeholder="Password">
        <input type="submit" value="Login" name="do_login">
    </form>

2 个答案:

答案 0 :(得分:0)

我发现问题在于通过登录查找用户,您在那里传递无效数据。考虑$ data将有发布数据。

Repalce

$user = R::find( 'users', 'login = ?' , array($data['login']) );
// $data['login'] is not defined.

$user = R::find( 'users', 'login = ?' , array($data['user']) );

答案 1 :(得分:0)

如果您阅读了RedBean文档(https://redbeanphp.com/index.php?p=/finding),您会看到&#34;发现&#34;返回一个数组,如果没有结果则返回一个空数组。 出于登录目的,我使用FindOne只返回第一行或null。 另一个提示,当你谈论登录时,不要在代码上经济实惠。 做任何比较都可以,不要忘记代码和SQL注入。