繁体   English   中英

方法应返回true时返回false

[英]method returns false when it should return true

我不知道为什么这种方法总是返回false。 我正在检查输入密码的长度。 绝对超过5个字符。输入字段的名称正确。 但是它总是抛出异常,并throw new Exception("Password must contain at least 6 characters.");

方法:

public function checkPassword(){
        if(strlen($this->post_data['register_password']) > 5){

        }else{
            throw new Exception("Password must contain at least 6 characters.");
        }
    }

电话:

if( isset($_POST['register-submit'])){  
    $error = '';
    $register = new register($_POST, $dbh);
        try {
            if($register->checkUsername()){
                if($register->checkPassword()){

                }
            }
        } catch (Exception $e) {
            $error .= '<span style="color:red;">' . $e->getMessage() . '</span>';
        }
}

编辑:添加了更多的类

public $post_data = array();
private $dbh;
public function __construct($post_data, PDO $dbh){
        $this->error = array();
        $this->post_data = array_map('trim', $post_data);
        $this->dbh = $dbh;

    }

使用$_POST创建类register ,然后使用$this->post_data获取register_password 我怀疑$this->post_data ,请添加var_dump进行调试:

public function checkPassword(){
    if(strlen($_POST['register_password']) > 5){
        return true;

    }else{
        // for debug
        // var_dump($this->post_data['register_password']);
        throw new Exception("Password must contain at least 6 characters.");
    }
}

添加var_dump以调试__construct

public function __construct($post_data, PDO $dbh){
    $this->error = array();
    $this->post_data = array_map('trim', $post_data);
    var_dump($this->post_data);
    $this->dbh = $dbh;
}

尝试将var_dump($_POST)放在调用代码的顶部。 确保您具有正确的密码变量名。 我注意到您已经为提交按钮进行了register-submit ,并为密码进行了register_password 您是否将连字符( - )和下划线( _ )混合使用?

暂无
暂无

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

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