2009-10-26 14 views
5

Neu zu all dem also verzeih meine Unwissenheit. Ich versuche herauszufinden, wie ich meinem Formular ein Feld "Passwort bestätigen" hinzufügen kann. Mit PHP und mySQL. Ist dies im HTML-Formular-Code eingegeben, und wie kann es so eingestellt werden, dass automatisch geprüft wird, ob die Felder "Passwort" und "Passwort bestätigen" übereinstimmen.Passwort bestätigen?

+2

Wie steht das zu MySQL? Möchten Sie beide Kennwortfelder in der DB speichern und eine Einschränkung haben, um sicherzustellen, dass sie übereinstimmen? Wenn dies der Fall ist, wäre das nicht der beste Weg, um diese Einschränkung in der UI ... – dcrosta

Antwort

16

Nehmen Sie einfach sowohl das Passwort und Passwortfelder in Form bestätigen PHP und Test auf Gleichheit einreichen:

if ($_POST["password"] === $_POST["confirm_password"]) { 
    // success! 
} 
else { 
    // failed :(
} 

wo password und confirm_password sind die IDs der HTML-Texteingaben für die Passwörter.

1

Verwenden Sie eine Art von Framework? Wenn nicht, sollte es so einfach wie nach dem Speichern sein, dass beide Felder gesetzt sind und das $ confirmationPassword == $ passWord. Wenden Sie dann die von Ihnen benötigte Validierung auf das Kennwort an, bevor Sie es in SQL speichern.

4

Was Sie versuchen, ist Formularvalidierung. Es ist eine gute Idee, validieren auf der Client-Seite (mit Javascript), so dass Sie eine schnellere Antwort für Ihren Benutzer auf der Benutzeroberfläche haben, und auf Ihrer Server-Seite (da Ihr Benutzer JavaScript deaktiviert haben kann - und weil Sie nie blind vertrauen sollten in Benutzereingaben Lesen Sie Should you do validation on your server side für weitere Informationen zu diesem Thema).

Sie müssen nur die beiden gebuchten Werte vergleichen. Wenn es korrekt ist, fügen Sie es in die Datenbank ein. Wenn nicht, tun Sie nichts und geben Sie eine Nachricht an den Benutzer zurück, dass das Passwort falsch ist.

Ich kann keine weiteren Details angeben, da Sie nicht genügend oder detaillierte Informationen über Ihre PHP-Umgebung zur Verfügung gestellt haben (verwendete Frameworks, verwendete Bibliotheken usw.).

+1

"und auf der Serverseite durchzusetzen (da Ihr Benutzer Javascript deaktiviert haben kann)." - Dies ist kein Grund, die serverseitige Validierung zu verwenden. – strager

+2

Äh, ja ist es. Die Validierung auf der Clientseite ist nützlich, aber die serverseitige Validierung stellt sicher, dass Probleme auf der Clientseite berücksichtigt werden. – ceejayoz

+1

Angenommen, etwas wie "Warum kann ich nicht einfach eine Javasctip-Validierung schreiben?", Schrieb ich einfach, um auf der Serverseite zu validieren, um sich an ihn zu erinnern, dass er es tun muss. Ich kann nicht alle Informationen über Sicherheit in einer einfachen Antwort bereitstellen. – GmonC

2

können Sie es in JavaScript überprüfen

<html><title></title><head> 
<script> 
     function validate(){ 

    if(!document.getElementById("password").value==document.getElementById("confirm_password").value)alert("Passwords do no match"); 
    return document.getElementById("password").value==document.getElementById("confirm_password").value; 
    return false; 
    } 
    </script> 
</head> 
<body> 
    <form onSubmit="return validate()" action="nextPage.php"> 
    Password: <input type="text" id="password" name="password" /><br/> 
    Reenter Password: <input type="text" id="confirm_password" name="confirm_password" /> 
    <input type="submit" value="submit"/> 
    </form> 
</body> 
</html> 

Und auf Sever Seite verwenden, müssen Sie es wieder, falls Client nicht überprüfen JavaScript aktiviert,

if($_GET['password']==$_GET['confirm_password']) 

Sie haben $ _POST verwenden anstelle von $ _GET im Fall der POST-Methode

+0

Möchten Sie jemals ein GET in Bezug auf ein Passwort verwenden? Scheint wie ein POST wäre der Weg zu gehen ... – Dscoduc

+0

Sie sind richtig für Passwörter müssen wir POST-Methode verwenden .. Ich gab nur ein Beispiel, nur die grundlegende Form der Einreichung mit beiden Methoden mit Validierung :) – Xinus

2

Ich aktualisierte den Code, es fehlt Doppelpunkt auf Formular senden.

<html> 
    <title></title> 
    <head> 
    <script> 
     function validate(){ 

      var a = document.getElementById("password").value; 
      var b = document.getElementById("confirm_password").value; 
      if (a!=b) { 
       alert("Passwords do no match"); 
       return false; 
      } 
     } 
    </script> 
    </head> 
    <body> 
     <form onSubmit="return validate();" "> 
     Password: <input type="text" id="password" name="password" /><br/> 
     Re-enter Password: <input type="text" id="confirm_password" name="confirm_password" /> 
     <input type="submit" value="submit"/> 
     </form> 
    </body> 
</html> 
Verwandte Themen