PHP - password_verify () возвращает false при правильном пароле - PullRequest
0 голосов
/ 26 февраля 2019

password_verify возвращает false для правильного пароля.Чтобы хэшировать пароль в другом скрипте, я использовал password_hash($Password, PASSWORD_DEFAULT);, где он затем сохраняется в базе данных.

header("Access-Control-Allow-Origin: *");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$validated = true;
$usrEmail = "";
$usrPassword = "";

//Validate 'email':
if(!isset($_GET['email'])){
    $usrEmail = "";
}else{
    $usrEmail = $_GET['email'];
}

//Validate 'password':
if(!isset($_GET['password'])){
    $usrPassword = "";
}else{
    $usrPassword = $_GET['password'];
}

if($validated){
    //Send data to database:
    $response = sendRequest($GLOBALS['usrEmail'], $GLOBALS['usrPassword']);
    echo json_encode($response);
}else{
    //Send an error:
    $response = array('LOGGEDIN' => 'NO', 'STATUS' => 'VALIDATIONFAIL');
    echo json_encode($response);
}

//Make the request:
function sendRequest($email, $usrPassword){

    include('config.php');
    $sql = 'SELECT password
            FROM `users`
            WHERE email=?';

    $pdo = new PDO($connect_pdo, $User, $Password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    try {

        $sth = $pdo->prepare($sql);
        $array = array($email);
        $sth->execute($array);

        $result = $sth->fetchAll();
        $numrows = $sth->rowCount();

        $hashedPassword = '';
        if($numrows > 0){
            for ($ri = 0; $ri < $numrows; $ri++) {
                $row = $result[$ri];
                $hashedPassword = $row['password'];
            }

            $hashedPassword = substr( $hashedPassword, 0, 60 );
            if(password_verify($usrPassword, $hashedPassword)){
                return login($email, $hashedPassword);
            }else{
                return array("LOGGEDIN" => 'NO', "STATUS" => 'Password Mismatch');
            }
        }else{
            return array("LOGGEDIN" => 'NO', "STATUS" => 'Unknown Error');;
        }

    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}

Я просмотрел много разных постов, как по переполнению стека, так и на других сайтах, и ни один изрешения, связанные с моей проблемой.

...