![](/img/trans.png)
[英]An if statement that always returns true even when it should return 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.