【问题标题】:Cannot compare passwords in database无法比较数据库中的密码
【发布时间】:2017-10-31 16:36:02
【问题描述】:

我有一个数据库,其中包含用户“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>

【问题讨论】:

  • 尝试在$data['password'] 上使用trim() 它会从字符串中删除空格
  • 具体出了什么问题?您是否收到“密码错误”消息?您是否进行了任何故障排除?您收到任何错误消息吗? $data$user$password_db的值是多少?
  • 另外,我不熟悉 RedBeanPHP,但我没有遵循您的代码逻辑。看起来您找到了具有特定用户名的用户,然后执行单独的查询以查找具有特定密码的用户,但从未找到特定的用户名/密码对。如果未找到用户,则显示“密码错误”。如果未找到密码,则不会发生任何事情。您的目标是验证用户名/密码对吗?
  • @ArtemIlchenko 这是个坏建议。
  • @GrumpyCrouton 不好的做法是按原样存储密码:)

标签: php html redbean


【解决方案1】:

我看到问题在于通过登录查找用户,您在那里传递了无效数据。考虑到$data会有post数据。

替换

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

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

【讨论】:

  • $data 包含已发布数据的合理假设下,这似乎是一个可能的解决方案。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多