Undefined index: password [APP/models/airline.php, line 25]
6 Réponses :
Utilisez-vous l'AuthComponent? Sachez qu'il hachait tous les champs de mot de passe entrants (mais pas les champs de confirmation de mot de passe ", vérifiez avec ayant dit cela, voici quelque chose que j'utilise: p> C'est mauvais pour les raisons suivantes: p> Cela dit, il valide et produit de manière transparente des messages d'erreur appropriés pour les champs de contrôle de mot de passe et de mot de passe sans nécessiter de code supplémentaire dans le contrôleur. P> P> débogage ($ ceci-> données) code>), afin que les champs ne soient jamais identiques. Lire le manuel et utiliser
authcomponent :: mot de passe code>
à faire Le chèque.
mot de passe_control code> pour être présent. Vous devez utiliser le champ whitelisting ou désactiver la validation si vous n'en avez pas une dans vos données, c'est-à-dire:
$ ceci-> User-> Enregistrer ($ this-> Données, TRUE, Array ("Field1", Field2 '))) code>. li>
Voici l'erreur
if(strcmp($this->data['Airline']['password'],$this->data['Airline']['confirm_password']) ==0 ) { return true; } return false;
Oh, la redondance horrible! Dans un cas comme celui-ci, vous êtes censé utiliser retour strcmp (...) == 0 code>.
Cela aiderait-t-il: http : //sumanrs.wordpress.com/2011/10/01/cakephp-user-password-manager-authentication-Missing-Guide/ ? Cela devrait s'occuper de la validation du mot de passe. P>
pour les utilisateurs de CakePHP 2.x à l'aide de l'authentification, vous pouvez noter que "AuthComponent ne produit plus automatiquement chaque mot de passe qu'il peut trouver." C'est à dire. Les solutions ci-dessus peuvent ne pas être la bonne façon de résoudre le problème pour 2.x. http://book.cakephp.org/2.0 /en/core-libraires/comPonents/authentication.html#hagring-passwords P>
Heres est ma solution:
Vous devez faire une méthode nommée Match (vous pouvez la nommer ce que vous aimez): P> et la méthode de validation $ doit Soyez comme ceci: p> où Je suis content de le partager! : D p> p> mot de passe2 code> est le champ pour comparer votre premier mot de passe
mot de passe code> p>
Pour valider le mot de passe, le mot de passe ancien et confirmer le mot de passe
class Adminpassword extends AppModel { public $name = 'Admin'; public $primaryKey = 'id'; public $validate = array( 'oldpassword' => array( array( 'rule' => 'notEmpty', 'required' => true, 'message' => 'Please Enter Current password' ), array( 'rule' =>'checkcurrentpasswords', 'message' => 'Current Password does not match' ) ), 'password' => array( array( 'rule' => 'notEmpty', 'required' => true, 'message' => 'Please Enter password' ), array( 'rule' => array('minLength', 6), 'message' => 'Passwords must be at least 6 characters long.', ) ), 'cpassword' => array( array( 'rule' => 'notEmpty', 'required' => true, 'message' => 'Please Enter Confirm password' ), array( 'rule' => 'checkpasswords', 'required' => true, 'message' => 'Password & Confirm Password must be match.' ) ) ); function checkpasswords() // to check pasword and confirm password { if(strcmp($this->data['Adminpassword']['password'],$this->data['Adminpassword']['cpassword']) == 0 ) { return true; } return false; } function checkcurrentpasswords() // to check current password { $this->id = $this->data['Adminpassword']['id']; $user_data = $this->field('password'); //print_r(Security::hash($this->data['Adminpassword']['oldpassword'], 'sha1', true)); if ($user_data == (Security::hash($this->data['Adminpassword']['oldpassword'], 'sha1', true))) { return true; } else { return false; } } }
est
$ ceci-> datadata code> destiné? Sinon, il y a votre problème.
J'ai corrigé le code ci-dessus pour supprimer les données supplémentaires toujours, je reçois l'erreur
Puis-je voir le formulaire HTML qui publie les données?
Avez-vous manqué un soulignement dans «Confirmer le mot de passe» dans votre fonction checkpassword?
STRCMP code> retourne
0 code> si les chaînes sont égales.
0 code> sera compris comme
FALSE code>, afin que cela fera exactement le contraire de ce que vous attendez.