如何确保当我在注册页面中,并且用户提供的密码和确认密码不匹配时,密码字段将重新填充用户输入的值而不是哈希版本的密码字段?
谢谢,
三通
答案 0 :(得分:1)
您没有使用trickpassword,而是已经使用未使用密码的password_confirm字段。您可以使用与这些相似的规则来检查密码字段中的空白密码...然后散列password_confirm以确保两者相同。
答案 1 :(得分:0)
由于密码输入功能,我认为没有必要弄清楚这一点。由于您使用了Auth
组件,因此很难做到这一点。从cookbook开始:
如果提交的数据中也存在用户名字段,则auth组件将自动对密码字段进行哈希
这意味着您在提交之后将丢失原始密码数据。但是,我认为使用javascript进行处理是一种棘手的方法:在寄存器视图文件中添加隐藏类型输入,该文件具有相同的值,但名称与$form->input('password');
,然后您可以在操作中检索它以在密码输入text.eg
if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm']))
{
$this->User->save($this->data);
$this->Session->setFlash("your data has been saved.");
$this->redirect("index");
}
else
{
$this->data['User']['password'] = $this->data['User']['trickpassword'];
/*i prefer this
$this->data['User']['password'] = '';
$this->data['User']['password_confirm'] = '';
*/
$this->Session->setFlash('Password confirm fail!');
}