2015-01-23 3 views
0

내가 암호를 확인하기위한 몇 가지 기능이 필요가 여기 검증과 비교 내 함수의이 내 클래스 $에서암호와 확인 중 하나가 설정되어 있지 않아도 사실입니다.

public function required($field= array()) 
    { 
     foreach($field as $value) { 
      if (isset($this->_input[$value])) { 
       if (empty(Security::clean($this->_input[$value]))) { 
        $messages = "is Required."; 
        error::inputError($value, $messages); 
       } 
      } else{ 
       $messages = "Not Found."; 
       error::inputError($field, $messages); 

      } 
     } 
    } 

    public function password($field, $confirmasion){ 
     if (isset($this->_input[$field] , $this->_input[$confirmasion])){ 
      if ($this->_input[$field] != $this->_input[$confirmasion]) 
      { 
       $messages = "is different with $confirmasion."; 
       error::inputError($field, $messages); 
       error::inputError($confirmasion, $messages); 

      } 
     } 
    } 

-> _ 입력이 $ _POST을 의미는. 그리고 나는이 같은 오류 설정하는 클래스가 있습니다

public static function inputError($field, $messages) 
    { 
     if (is_array($field)) { 
      foreach ($field as $key){ 
       $newName = General::changeName($key); 
       $messagesError = "$newName $messages"; 
       if (isset(self::$_errors[$key])){ 
        return; 
       }else{ 
        self::$_errors[$key] = $messagesError; 
       } 
      } 
     }else{ 
      $newName = General::changeName($field); 
      $messagesError = "$newName $messages"; 
      if (isset(self::$_errors[$field])){ 
       return; 
      }else{ 
       self::$_errors[$field] = $messagesError; 
      } 
     } 

    } 

내가 기대하고 있습니다을 때 나는 양식을 제출하고 비밀번호 및 검증 필드는 표시 비어있을 때 "검증이 필요하다" "비밀번호가 필요합니다"또는 "비밀번호는 인증과 다릅니다."라는 오류 메시지가 표시되지 않지만 비밀번호 입력란에 "인증이 필요합니다"라는 두 번째 오류가 표시됩니다. 내 논리 나 뭐가 잘못 됐니?

+0

끔찍한 보안 관행 때문에 투표를 거절합니다. password_verify 및 password_hash는 현재 표준 인 – geggleto

+0

입니다. 죄송 합니다만, 해시하지 않았 음을 알고 있습니다. 그것은 나의 유효성 검사뿐입니다. – Kyo

+1

@ 럭키 버거 (LuckyBurger) 유효성 확인을 통과 한 후에 해싱을 할 것입니다. 투표하기 전에 묻지 않는 이유는 무엇입니까? – Kyo

답변

0
isset($this->_input['fieldname']) 

이 코드는 true를 반환합니다. 따라서 확인 필드가 비어 있으면 암호 필드와 비교할 수 있습니다. 해결책은 다음과 같습니다.

(!empty($this->_input[$field]) && !empty($this->_input[$confirmasion])) 
관련 문제