PHP PDO登录表单失败

时间:2017-04-04 08:56:37

标签: php mysql pdo

这实际上是我第一次尝试PDO和password_verify函数。我已经阅读了一些文章,并开始使用一个非常基本的登录表单,没有任何密码哈希。只是为了开始理解基础知识,但没有运气。

可能是我周二早上,但我似乎无法找到错误。我希望你们能指出我正确的方向。 任何帮助将不胜感激。

编辑:忘记错误。我得到“失败”,所以我认为它在password_verify函数中的某个地方。

这是我的代码:

    <form method="post" action="">
  <input type="text" name="username" value="" />
  <input type="password" name="password" value="" />

  <input type="submit" name="login" value="Inloggen" />
  <?php
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
      if(!empty($_POST['username']) && $_POST['password']) {
        $username = trim($_POST['username']);
        $password = trim($_POST['password']);

        try {
          $host    = 'localhost';
          $db      = 'pdotest';
          $user    = 'root';
          $pass    = '';
          $charset = 'utf8';

          $dsn  = "mysql:host=$host;dbname=$db;charset=$charset";
          $opt  = [
                    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                    PDO::ATTR_EMULATE_PREPARES   => false,
                  ];

          $pdo  = new PDO($dsn, $user, $pass, $opt);

          $stmt = $pdo->prepare('SELECT username, password FROM users WHERE username = :username');
          $stmt->execute(array(':username' => $username));
          $user = $stmt->fetch();
          if($stmt->rowCount() > 0)
            {
               if(password_verify($password, $user['password']))
               {
                  echo "Succesfully logged in!";
               }
               else
               {
                  echo "Fail";
               }
            }
        }
        catch (PDOException $e) {
          $message = $e->getMessage();
        }
      }
    }
  ?>
</form>

0 个答案:

没有答案