Ich habe eine mysql-Spalte namens "gebannt" mit dem Wert von 0, wenn sie nicht sind, und einen Wert von 1, wenn sie sind, die innerhalb der Tabelle "Benutzer" ist. Derzeit gibt dieser Code einen Fehler "Falsche Benutzername/Passwort-Kombination!" wenn eine Person einer Sperre aber ich kann nicht herausfinden, wie es zu erhalten, zu sagen „Sie sind verboten“, wenn der Wert von „verboten“ ist 1.Login-System, Benutzer gesperrt php
<?php
if(isset($_POST['submit'])){
session_start();
// configuration
$dbhost = "localhost";
$dbname = "login";
$dbuser = ".";
$dbpass = ".";
// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->exec("SET CHARACTER SET utf8mb4");
// new data
$username = !empty($_POST['username']) ? trim($_POST['username']) : null;
$passwordAttempt = !empty($_POST['password']) ? trim($_POST['password']) : null;
// query
$result = "SELECT id, username, password, banned FROM users WHERE username= :username AND banned = '0'";
$stmt = $conn->prepare($result);
$stmt->bindValue(':username', $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if($user === false){
//Could not find a user with that username!
//PS: You might want to handle this error in a more user-friendly manner!
$error = "Incorrect username/password combination!";
} else{
//User account found. Check to see if the given password matches the
//password hash that we stored in our users table.
//Compare the passwords.
$validPassword = password_verify($passwordAttempt, $user['password']);
//If $validPassword is TRUE, the login has been successful.
if($validPassword){
$_SESSION['login_user'] = $username;
header("location: home.php");
exit;
} else{
$error = "Incorrect username/password combination!";
}
}
}
?>
Es ist in der Regel eine gute Idee, um die Dinge zu beseitigen wie ' === false' und stattdessen das "if ($ user)" umkehren und die Reihenfolge der Blöcke umkehren. – tadman