Ich habe viele Artikel zu diesem password_hash gelesen und hat so viel wie ich angewendet, wenn nicht alle Dinge, die ich darüber gelesen immer noch verweigert das Passwort_verify noch Werte zu authentifizieren, egal wie viel ich versuchte. PHP Version 5.61.6 und SQL Version 5.7.9 jede Form von Hilfe ist willkommen, sind schon erschöpft von dem Versuch, viele String-Kombinationenphp password_verify funktioniert immer noch nicht
<!DOCTYPE html>
<html>
<head>
<title>Administrator</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<?PHP
//.......all variables are collected from html form....
$conn = mysqli_connect("localhost", "uname", "pword", "dbname");
mysqli_set_charset($conn, 'utf8');
//.......`SN` column has the unique attribute
$sql = "SELECT * FROM Sign_Up WHERE `SN`=$sn";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$date = date('Y-m-j g:i:s');
//.......idgen is a function previously defined
$id = idgen();
//.......prints $id before hashing....
echo $id."<BR>";
$id = password_hash('$id', PASSWORD_DEFAULT);
//......string length before storing
echo strlen($id)."<BR>";
//......table columns
$f = $row["FirstName"];
$l = $row["LastName"];
$bn = $row["BusinessName"];
$ba = $row["BusinessAddress"];
$sq = "INSERT INTO Distributors (`FirstName`, `LastName`, `BusinessName`, `BusinessAddress`) VALUES ('$f', '$l', '$bn', '$ba')";
$res = mysqli_query($conn, $sq);
}
}
?>
</body>
</html>
Und den Code für die Hash-Überprüfung ist
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?PHP
$conn = mysqli_connect($servername, $username, $password, $dbname);
mysqli_set_charset($conn, 'utf8');
//.....phone number has a unique attribute
$sql = "SELECT `ID` FROM Distributors WHERE `PhoneNumber`='number'";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$result1= mysqli_num_rows($result);
$look = mysqli_fetch_array($result)['ID'];
print $look."<BR>";
$look = trim($look);
print $look."<BR>";
print strlen($look)."<BR>";
//......all print statements yields expected results and hashed password is stored
//......in VARCHAR (255)...I also tried CHAR
$ver = password_verify('user input data', '$look');
if ($ver) {
print "ok";
}
else {
print "no";
}
?>
</body>
</html>
Sie die wörtliche Hashing string' $ id' ... und in verifizieren Tests gegen die Zeichenkette '$ look'. Erfahren Sie, wie Sie [PHP Strings] (http://php.net/string) verwenden. –
'password_verify ('Benutzereingabedaten', '$ look');' Wirklich? Vergleichen einer Passwort-Zeichenkette von 'Benutzereingabedaten' mit einem Hash-Wert, der wie '$ look' aussieht?!? –
... und du verifizierst die literale Zeichenfolge '$ look'. –