Php 方法在应返回true时返回false
我不明白为什么这个方法总是返回false。我正在检查输入的密码的长度。它肯定超过5个字符。输入字段的名称是正确的。但它总是抛出异常Php 方法在应返回true时返回false,php,oop,exception,methods,pdo,Php,Oop,Exception,Methods,Pdo,我不明白为什么这个方法总是返回false。我正在检查输入的密码的长度。它肯定超过5个字符。输入字段的名称是正确的。但它总是抛出异常抛出新异常(“密码必须至少包含6个字符”) 方法: public function checkPassword(){ if(strlen($this->post_data['register_password']) > 5){ }else{ throw new Exception("Password
抛出新异常(“密码必须至少包含6个字符”)代码>
方法:
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>';
}
}
使用$\u POST
创建类register
,然后使用$this->POST\u data
获取register\u 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\u dump
以调试\u构造
:
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;
}
使用$\u POST
创建类register
,然后使用$this->POST\u data
获取register\u 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\u dump
以调试\u构造
:
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\u dump($\u POST)
放在调用代码的顶部。确保密码的变量名正确。我注意到您有register submit
作为提交按钮,有register\u password
作为密码。您是否将连字符(-
)与下划线(
)混合在一起?尝试将var\u dump($\u POST)
放在调用代码的顶部。确保密码的变量名正确。我注意到您有register submit
作为提交按钮,有register\u password
作为密码。你把连字符(-
)和下划线(-
)混在一起了吗?你的函数抛出错误了吗?
$this->post\u data['register\u password']?呃。。。如果密码长度相同,则认为密码相同。所以“fish”和“j2o3”被认为是相同的。@crm:What'svar_dump($this->post_data['register_password')代码>输出?@Kolink我认为这是用于注册的。他正在验证密码是否至少包含6个字符,以确保密码足够强,可以创建帐户。您的函数是否引发了错误?$this->post_data['register_password']
?呃。。。如果密码长度相同,则认为密码相同。所以“fish”和“j2o3”被认为是相同的。@crm:What'svar_dump($this->post_data['register_password')代码>输出?@Kolink我认为这是用于注册的。他只是在验证至少有6个字符的密码,以确保创建帐户的密码足够强大。很好,他实际上并没有返回true。不返回任何内容,这意味着返回结果为null,这是错误的。可能最好对代码进行解释。如果这个答案解释了这个事实而不是仅仅转储一个代码片段,那就太好了。@srain:请看OP的评论。它返回NULL
@AmalMurali,我想$this->post\u data
有问题,所以你可以用$\u POST
代替$this->POST\u data
,我更新了答案。或者您可以粘贴类寄存器
或整个类的\u构造
函数。我们会检查它。@AmalMurali,添加var\u dump
来调试\u构造
,将输出粘贴到您的问题中,我认为注册密码
将为空
。很好,他实际上并没有返回true。不返回任何内容,这意味着返回结果为null,这是错误的。可能最好对代码进行解释。如果这个答案解释了这个事实而不是仅仅转储一个代码片段,那就太好了。@srain:请看OP的评论。它返回NULL
@AmalMurali,我想$this->post\u data
有问题,所以你可以用$\u POST
代替$this->POST\u data
,我更新了答案。或者您可以粘贴类寄存器
或整个类的\u构造
函数。我们会检查它。@AmalMurali,添加var\u dump
来调试\u构造
,将输出粘贴到您的问题中,我认为注册密码
将为空
。很好的捕获。不过,如果你把它说出来而不是提出问题会更好+1无论如何@阿马尔穆拉里:我只是从上面抄袭了我的评论。这足以让人明白这一点,并给出一个接受/结束的答案。不过,如果你把它说出来而不是提出问题会更好+1无论如何@阿马尔穆拉里:我只是从上面抄袭了我的评论。这足以让人明白这一点,并给出一个接受/结束的答案。