Alors ça me rend fou ! Si le nom d'utilisateur est correct, il compare parfaitement le mot de passe, mais si le nom d'utilisateur est erroné, la comparaison n'a pas lieu et cela me renvoie cette erreur. Je souhaite comparer la valeur de la base de données avec la valeur saisie par l'utilisateur.
<?php $nm = $_POST['nm']; $pw = $_POST['pw']; try{ $pdo = new PDO('mysql:host=localhost;dbname=gold-market_main', 'root', ''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e) { echo "Connection failed: ".$e->getMessage(); die(); } if($nm == null){ die("Feld darf nicht leer sein!"); } elseif(ctype_alpha($nm[0]) or ctype_digit($nm[0])){ $sql = "SELECT k_nutzername, k_passwort FROM kunden WHERE k_nutzername IN('$nm');"; $result = $pdo->query($sql); $row = $result->fetch(PDO::FETCH_ASSOC); if("{$row['k_nutzername']}" != $nm) { //header("Location: login_wrongUN.html"); print("nm wrong"); } elseif("{$row['k_passwort']}" != $pw) { //header("Location: login_wrongPW.html"); print("pw wrong"); } else { header("Location: konto.html"); } }else{ die("Nutzername muss mit einem buchstaben oder einer Zahl beginnen!"); } $pdo = null; ?>
Vous pouvez faire quelque chose de similaire. Cependant, il ne protège pas contre les mots de passe non sécurisés a> et ne constitue pas non plus une attaque chronométrée.