2016-08-08 2 views
0

문제는 일부 코드가 메서드를 호출하는 코드가 메서드를 호출하지 않는 것이므로이 메서드는 locked()입니다. 여기 내 수업은 다음과 같습니다 :조건부 문에서 클래스의 메서드를 호출 할 수 없습니다.

class login 
{ 
    public $username; 
    public $password; 
    public $fails; 
    public $ip; 
    public $sqlObject; 


    public function sqlVerify() { 
     $user=$this->username; 
     $pass=$this->password; 
     $sqlObject=$this->sqlObject; 
     $fails=$this->fails; 

     if($fails >= 4) { $this->locked(); } 

     $query=mysqli_query($sqlObject, 
     "SELECT 1 FROM tbl_users 
     WHERE username='$user' AND password='$pass'"); 
     if(mysqli_num_rows($query) > 0){ 
      return "1"; 
     }else{ 
      return "0"; 
     } 
    } 

    private function locked() { 
     return "For security, this account has been locked. Contact support."; 
    } 

} 

이 시간에 실패 = 9 값, 아직 전화 ..?

+0

. 먼저 oop 개념을 배우십시오. –

+0

통화 외부에서 기능을 호출하려면 공개로해야합니다. –

+0

또한 :이 일은 아무 것도하지 않습니다. if ($ fails> = 4) {$ this-> locked(); }'lock()'은 문자열을 반환하고 아무 것도하지 않는다. – RiggsFolly

답변

3

아래 코드로 시도하십시오 : 당신이 클래스의 외부에서 private 메소드를 호출 할 수 없습니다

public function sqlVerify() { 
    $user=$this->username; 
    $pass=$this->password; 
    $sqlObject=$this->sqlObject; 
    $fails=$this->fails; 

    if($fails >= 4) { return $this->locked(); } // You need to put return statement here also for returning from this function. 

    $query=mysqli_query($sqlObject, 
    "SELECT 1 FROM tbl_users 
    WHERE username='$user' AND password='$pass'"); 
    if(mysqli_num_rows($query) > 0){ 
     return "1"; 
    }else{ 
     return "0"; 
    } 
} 

private function locked() { 
    return "For security, this account has been locked. Contact support."; 
} 
관련 문제