sql >> Databáze >  >> RDS >> Mysql

php password_verify() hash a pass se neshodují

$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT hash je pouze 50 dlouhý a je neplatný/příliš krátký a jak jsem řekl, MySQL tiše selže; hlášení/kontrola chyb by zde nepomohla.

Délka sloupce hesla by měla být 60 (doporučuje se 255), takže původně nebylo správně uloženo.

Budete muset vymazat sloupec/nebo tabulku hesla, zvětšit délku sloupce a začít znovu.

Reference:

Můžete také upravit svůj dotaz tak, aby se četl jako:

$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!";
}

Upravit:

Přidání z komentáře, který jsem zanechal v OP:

Vaše ověřovací funkce musí mít vytvořeno připojení k vaší databázi, to je to, co se zde podle mého názoru děje (proměnný rozsah). Takže budete muset buď použít global $con; nebo předejte spojení (proměnnou) vaší funkci (což je ve většině případů lepší).

Nevím, jestli děláte "include" pro funkci, a pokud ano, pak je to další problém.

Tj.:function VUP($con, $check, $valid){ nebo function VUP($check, $valid){ global $con; - Zkuste obojí. Použijte $result = mysqli_query($con, $query) or die(mysqli_error($con)); místo toho, který máte nyní.




  1. Jaký je rozdíl mezi MySQLdb, mysqlclient a MySQL konektorem/Pythonem?

  2. Výukový program připojení SQL

  3. Připojení PolyBase k Salesforce.com

  4. Rails Migrations:pokusili se změnit typ sloupce z řetězce na celé číslo