从数据库类别中获取特定值

Get certain value from database category

我只希望经过验证的帐户登录到我的网站,因此我在 PHPMyAdmin 中设置了一个名为“验证”的类别,该类别可以是 0(未验证)或 1(已验证)。我让它工作,以便在验证帐户时更改值,但我不知道如何检查帐户的“验证”是 1 还是 0。我尝试这样做但没有成功:

我试过的

$test = "SELECT Verification FROM users WHERE Verification = 1 AND users_uid = $uid";

if($test == false){
            $test = null;
            header("location: ../LoginPage.php?error=accountNotVerified");
            exit();
        }

这里是完整的代码,如果这有助于为您解决任何问题。

完整代码(此代码工作正常但不检查帐户是否已验证)

<?php

class Login extends Dbh{

protected  function getUser($uid, $pwd){
    $stmt = $this->connect()->prepare('SELECT users_pwd FROM users WHERE users_uid = ? OR users_email = ?;');

    if(!$stmt->execute(array($uid, $pwd))){
        $stmt = null;
        header("location: ../LoginPage.php?error=stmtfailed");
        exit();
    }

    if($stmt->rowCount()==0){
        $stmt = null;
        header("location: ../LoginPage.php?error=usernotfound");
        exit();
    }

    $pwdHashed = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $checkPwd = password_verify($pwd,$pwdHashed[0]["users_pwd"]);

    if($checkPwd ==false){
        $stmt = null;
        header("location: ../LoginPage.php?error=wrongpassword");
        exit();
    }
    elseif($checkPwd == true){
        $stmt = $this->connect()->prepare('SELECT * FROM users WHERE users_uid = ? OR users_email = ? AND users_pwd = ?;');
        
        //HERE IS WHERE I WANT TO IMPLEMENT THE CODE WRITTEN ABOVE BUT IN A WORKING VERSION
        //HERE IS WHERE I WANT TO IMPLEMENT THE CODE WRITTEN ABOVE BUT IN A WORKING VERSION
        //HERE IS WHERE I WANT TO IMPLEMENT THE CODE WRITTEN ABOVE BUT IN A WORKING VERSION
        
        if(!$stmt->execute(array($uid, $uid, $pwd))){
            $stmt = null;
            header("location: ../LoginPage.php?error=stmtfailed");
            exit();
        }           
    }

    if($stmt->rowCount()==0){
        $stmt = null;
        header("location: ../LoginPage.php?error=usernotfound");
        exit();
    }


    $user = $stmt->fetchAll(PDO::FETCH_ASSOC);

    session_start();
    $_SESSION["userid"] = $user[0]["users_id"];
    $_SESSION["useruid"] = $user[0]["users_uid"];
    $stmt = null;
    
    }   
}

总而言之,我想检查我的数据库中的“Verfication”值是 1 还是 0。

您可以更改密码检查

来自

$stmt = $this->connect()->prepare('SELECT users_pwd FROM users WHERE users_uid = ? OR users_email = ?;');

...

    $pwdHashed = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $checkPwd = password_verify($pwd,$pwdHashed[0]["users_pwd"]);

    if($checkPwd ==false){
        $stmt = null;
        header("location: ../LoginPage.php?error=wrongpassword");
        exit();
    }

$stmt = $this->connect()->prepare('SELECT users_pwd, verification FROM users WHERE users_uid = ? OR users_email = ?;');

...

    $dbData = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $verification = $dbData[0]["verification"]
    $checkPwd = password_verify($pwd,$dbData[0]["users_pwd"]);

    if($checkPwd === false || $verification !== 1){
        $stmt = null;
        if($checkPwd === false) {
            header("location: ../LoginPage.php?error=wrongpassword");
        } else {
            header("location: ../LoginPage.php?error=notverified");
        }
        exit();
    }

这将检查密码和验证状态。