繁体   English   中英

密码确认验证CakePHP

[英]Password Confirm Validation CakePHP

我已经搜索了很多,尝试了书中的每一个技巧,但我仍然无法让我的CakePHP应用程序执行简单的密码确认验证。 我尝试过像这样创建自定义验证规则:

'passwordequal' => array('rule' => 'checkpasswords' , 'message' => 'Passwords Do Not Match')

然后像这样定义'checkpasswords':

public function checkpasswords(){

    if(strcmp($this->data['User']['new_password'],$this->data['User']['confirm_password']) == 0 )
    {
        return true;
    }
    return false;
}

'new_password'和'confirm_password'是密码输入字段。 这没用。 然后我尝试了一个我在其中散列'confirm_password'。 那也行不通。 我还有其他没有经过验证的“规则”,比如'notempty',我认为这是标准的CakePHP规则之一。 任何人都可以帮忙。 我知道这个问题已被问过几次,但这些解决方案都没有对我有用。 CakePHP文档也没有多大帮助。

视图文件中的两个字段

echo $this->Form->input('password');
echo $this->Form->input('repass');

模型文件

<?php
class Post extends AppModel {
    public $validate = array(
        'repass' => array(
            'equaltofield' => array(
            'rule' => array('equaltofield','password'),
            'message' => 'Require the same value to password.',
            //'allowEmpty' => false,
            //'required' => false,
            //'last' => false, // Stop validation after this rule
            'on' => 'create', // Limit validation to 'create' or 'update' operations
            )
        )
    );

function equaltofield($check,$otherfield)
    {
        //get name of field
        $fname = '';
        foreach ($check as $key => $value){
            $fname = $key;
            break;
        }
        return $this->data[$this->name][$otherfield] === $this->data[$this->name][$fname];
    } 
}?>

似乎您的模型未正确加载并使用动态生成的模型。

比较2.x中的密码只不过是比较任何两个字段,因为蛋糕不再自动散列pw。

你能否确认你的验证方法正在运行,看起来并不特别是如果像notEmpty这样的简单事情无效的话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM