Ich versuche, meine Sicherheit zu verbessern, indem ich password_hash und PDO vorbereitete Anweisungen verwende, um SQL Injection zu verhindern. Ich habe bereits mit MySQLi OOP und Procedural gearbeitet. Ich versuche, auf PDO umzusteigen und möchte lernen. So habe ich ein Anmeldeformular mit PDO erstellt, das bereits funktioniert und die Verschlüsselung des Passworts funktioniert auch. Aber wenn ich mich selbst mit dem richtigen Benutzernamen und Passwort angemeldet habe, kann ich mich nicht anmelden.PHP register und login mit password_hash passwort default using pdo
Dies ist der Code, den ich verwende, um mein Passwort im Anmeldeformular zu hashen.
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
Dann führe ich es mit vorbereiteten Anweisungen. Also keine Fehler, hier funktioniert alles gut.
Aber als ich versuchte, mich anzumelden, wird es mich nicht auf die Zielseite umleiten, wo es sein sollte.
So, hier ist der Code Anmeldungs
<?php
session_start();
$host = "localhost";
$username = "root";
$password = "";
$database = "PDOtesting";
$message = "";
try
{
$connect = new PDO("mysql:host=$host; dbname=$database", $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST["login"]))
{
if(empty($_POST["username"]) || empty($_POST["password"]))
{
$message = '<label>All fields are required</label>';
}
else
{
$query = "SELECT * FROM users WHERE username = :username AND password = :password";
$statement = $connect->prepare($query);
$statement->execute(
array(
'username' => $_POST["username"],
'password' => $_POST["password"]
)
);
$count = $statement->rowCount();
if($count > 0)
{
$_SESSION["username"] = $_POST["username"];
header("location:login_success.php");
}
else
{
$message = '<label>Wrong Data</label>';
}
}
}
}
catch(PDOException $error)
{
$message = $error->getMessage();
}
?>
Soll ich auch die password_hash Funktion, dass ich es in der Anmeldung enthalten? und wo sollte ich den Code platzieren? Auf der Suche nach Hilfe. Vielen Dank im Voraus.
Query-Benutzer von Benutzernamen nur; Holen Sie sich das Ergebnis Ihrer Abfrage und vergleichen Sie es mit der Funktion 'password_verify', wenn es funktioniert, lassen Sie es erfolgreich sein, sonst ist es nicht ...' password_hash' erzeugt jedes Mal ein anderes Passwort für die gleiche Zeichenfolge, wenn es zufälliges Salz erzeugt verwendet werden – ahmad