2013-09-16 3 views
0

이 메서드가 false를 계속 반환하는 이유는 무엇인지 알 수 없습니다. 입력 한 비밀번호의 길이를 확인하고 있습니다. 그것은 분명히 5 자 이상입니다. 입력 필드의 이름이 정확합니다. 그러나 항상 예외 throw new Exception("Password must contain at least 6 characters.");을 던집니다.메서드는 true를 반환해야 할 때 false를 반환합니다.

방법 :

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>'; 
     } 
} 

편집 : $_POST으로,

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; 

    } 
+3

은 오류를 던지는 함수입니까? – Ibu

+0

'$ this-> post_data [ 'register_password']'에 무엇이 있습니까? – andrewsi

+0

@andrewssssss – crm

답변

2

가 호출 코드의 상단에 var_dump($_POST)을 넣어보십시오 :

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."); 
    } 
} 

__construct 디버깅하는 var_dump을 추가합니다. 암호에 대한 올바른 변수 이름을 가지고 있는지 확인하십시오. 제출 버튼은 register-submit이고 비밀번호는 register_password입니다. 하이픈 (-)을 밑줄 (_)과 섞어 보셨습니까?

+0

좋은 캐치. 그래도 질문을 제기하는 대신 진술하면 더 나아 졌을 것입니다. 어쨌든 +1하십시오! –

+0

@AmalMurali 방금 위에서 언급 한 내용을 복사했습니다. 요점을 파악하고 수용/닫기에 대한 답변을 제공하는 것으로 충분했습니다. –

2

당신은 클래스 register를 만들 클래스의 더 추가 한 후 가져 $this->post_data를 사용 register_password. 내가 $this->post_data에 문제가 있음을 의심, 디버깅 var_dump을 추가

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; 
} 
+0

좋은 지적, 그는 실제로 사실을 반환하지 않습니다. 아무 것도 반환하지 않으면 반환 결과가 null 인 것으로 나타납니다. 아마도 코드에 대한 설명을 추가하는 것이 좋습니다. –

+1

이 답변으로 코드 조각을 그냥 덤핑하는 대신 사실을 설명하면 좋을 것입니다. – Bart

+0

@ 바트, 네 말이 맞아. 나는 나의 대답을 업데이트했다. – srain

관련 문제