php - 验证登录数据 PDO PHP

标签 php pdo

我正在尝试将代码从 mysql_connect 更改为 PDO,但遇到了一些问题。我是 PHP 新手,有人告诉我 mysql_connect 很旧,所以这是我的代码。我似乎无法验证用户。即使我输入了错误的用户,它也不会输出无效的用户。

     $_GET['errorCode'];

        $errors = array(
      1 => 'Invalid User',
      2 => 'Incorrect Password');

      if(isset($_GET['errorCode'])){
      $code = $_GET['errorCode'];
      print isset($errors[$code]) ? $errors[$code] : 'Unknown error';
    }


         if($_SERVER['REQUEST_METHOD']== 'POST'){


        $username = $_POST['username'];
        $password = $_POST['password'];




        if(isset($_POST['username']) && isset($_POST['password'])){


              $stmt = $dbh->prepare("SELECT password, salt FROM user WHERE username = :user_name");
         $stmt->execute(array(':user_name' => "$username"));
            $stmt->bindParam(':user_name', $username, PDO::PARAM_STR);


        if(!$stmt->rowCount() > 0)

       {
        header('Location: index.php?errorCode=1');

        exit;

    }
        $result = $stmt->fetch(PDO::FETCH_ASSOC);

    $hash = hash('sha256', $result['salt'] . hash('sha256', $password) );
if($hash != $result['password']) //incorrect password
    {

      header('Location: index.php?errorCode=2');

       exit;
        }
        else
        {
            validateUser(); //sets the session data for this user
            Header("Location: index.php");
        exit;
        } 
        }
           }

最佳答案

您忘记执行该语句 - 您只需在绑定(bind)参数后运行 $stmt->execute(); 即可。

-- 编辑 --
并删除行:$userData = $dbh->query($stmt);;您的行将使用您当前的代码提取到 $result 中。

关于php - 验证登录数据 PDO PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116629/

相关文章:

php - html dom 解析 - 我可以只找到文件类型吗?

通过 mysql.sock 在重负载下的 PHP/MYSQL 连接失败

php - 如何使用Unity处理php session ?

javascript - 从循环创建的表中提取数据 (PHP)

php - 数据库查询与 PHP require_once

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 计算具有一个值的行数和具有另一值的行数,并输出表中出现的最低值

php - 合并两个准备好的语句不起作用

php - 使用文件路径更新 SQL 表

php - 使用 PDO 进行 MySQL 搜索查询并显示结果列表