Dieser Code funktioniert nicht und gibt immer die Fehlermeldung aus, auch wenn sie übereinstimmen. Auch wenn ich eine Bearbeitung mache, bekomme ich den folgenden Fehler, da es kein Passwortfeld gibt. Gibt es irgendeine Lösung
? %Vor%hier ist der Fehler
%Vor%Ich habe es in
geändert %Vor%Auch die strcmp-Funktion hatte Fehler, da sie im obigen Code die ganze Zeit 0 (d. h. False) zurückgeben würde
%Vor% Verwenden Sie die AuthComponent? Beachten Sie, dass alle eingehenden Passwortfelder (aber nicht "Passwort bestätigen" -Felder, check mit debug($this->data)
) hashed sind, so dass die Felder niemals gleich sind. Lesen Sie das Handbuch und verwenden Sie AuthComponent::password
, um die Überprüfung durchzuführen.
Nachdem ich das gesagt habe, hier ist etwas, was ich benutze:
%Vor%Das ist aus folgenden Gründen schlecht:
password_control
vorhanden ist. Sie müssen die Feld-Whitelist verwenden oder die Validierung deaktivieren, wenn Sie keine in Ihren Daten haben, z. B. $this->User->save($this->data, true, array('field1', 'field2'))
. Nachdem das gesagt wurde, validiert es transparent und erzeugt korrekte Fehlermeldungen sowohl für die Passwort- als auch für die Passwortkontrollfelder, ohne dass zusätzlicher Code in der Steuerung erforderlich ist.
Für Passwort bestätigen, altes Passwort und Passwort bestätigen
%Vor%Für Benutzer von CakePHP 2.x, die die Authentifizierung verwenden, können Sie feststellen, dass "AuthComponent nicht mehr automatisch jedes gefundene Passwort hasht". I.e. Die obigen Lösungen sind möglicherweise nicht der richtige Weg zur Lösung des Problems für 2.x. Ссылка
Hier ist meine Lösung:
Sie müssen eine Methode namens "match" erstellen (Sie können es benennen, was Sie wollen):
%Vor%Und die $ validate-Methode muss so aussehen:
%Vor% Dabei ist password2
das Feld zum Vergleichen Ihres ersten password
-Feldes
Ich bin froh, es zu teilen! : D