sql >> Database teknologi >  >> RDS >> Mysql

php password_verify() hash og pass vil ikke matche

$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT hashen er kun 50 i længden og er ugyldig/for kort og som sagt vil MySQL fejle lydløst; fejlrapportering/kontrol ville ikke have hjulpet her.

Adgangskodens kolonnelængde skal være 60 (255 foreslås), så den blev ikke gemt korrekt oprindeligt.

Du bliver nødt til at rydde din adgangskodekolonne/eller -tabel, øge din kolonnes længde og starte forfra.

Reference:

Du kan også ændre din forespørgsel til at læse som:

$con = new mysqli("xxx", "xxx", "xxx", "xxx");
if ($con->connect_error) {
    die('Connect Error (' . $con->connect_errno . ') '
            . $con->connect_error);
}

$query = "SELECT `pass` FROM `user` WHERE `email`='$emailLogin'";
$result = $con->query($query);

// error checking on the query
if (!$result) {
    echo "<p>There was an error in query: $query</p>";
    echo $con->error;
}

$row_hash = $result->fetch_array();
if (password_verify($passLogin, $row_hash['pass'])) {
    echo "Success!";
}

Rediger:

Tilføjelse fra en kommentar, jeg efterlod til OP:

Din verifikationsfunktion skal have en forbindelse til din database, det er det, jeg føler, der sker her (variabelt omfang). Så du skal enten bruge global $con; eller send forbindelsen (variabel) til din funktion (hvilket er bedre i de fleste tilfælde).

Jeg ved ikke, om du laver en "inkluder" for funktionen, og hvis ja, så er det det andet problem.

Dvs.:function VUP($con, $check, $valid){ eller function VUP($check, $valid){ global $con; - Prøv begge dele. Brug $result = mysqli_query($con, $query) or die(mysqli_error($con)); i stedet for den, du har nu.




  1. Generering af postgresql brugeradgangskode

  2. PHP:PDO-forespørgsel returnerer ingen resultater, men den samme forespørgsel returnerer 4 resultater i phpmyadmin?

  3. PostgreSQL tilbagekalder tilladelser fra pg_catalog-tabeller

  4. Oprettelse af et relateret eller lignende indlæg ved hjælp af PHP &MySQL