2015-03-19 18 views
-2

我有我的類此方法:什麼使本通知:未定義指數:

public function login ($username, $password) 
    { 
      $pdo = parent::getConnection(); 
      $sql = 'SELECT username, pass FROM users 
       WHERE username = :username'; 
      $stmt = $pdo->prepare($sql); 
      $stmt->bindParam(':username', $username); 
      $stmt->execute(); 

      if ($stmt->rowCount() === 1) { 
       $result = $stmt->fetch(PDO::FETCH_ASSOC); 

       if (password_verify($password, $result['password'])) { 
        return true; 
       } else { 
        Error::setError('', 'Wrong username or password'); 
        return false; 
       } 
      }else { 
       Error::setError('', 'Wrong username or password'); 
       return false; 
      } 
    } 

我已經嘗試使用Isset這樣,但未定義指數仍剩餘:

if (isset($password)){ 
        if (password_verify($password, $result['password'])) { 
         return true; 
        } else { 
         Error::setError('', 'Wrong username or password'); 
         return false; 
        } 
} 

當我使用print_r來查看我的變量時,它有一個值。 $的用戶名是從$ _ POST [「USENAME」]和$密碼是從$ _ POST [「密碼」]

if($_SERVER['REQUEST_METHOD'] === 'POST'){ 
    $inputText = [ 
     'username', 
     'password', 
    ]; 

    $v->required($inputText); 

    $username = $_POST['username']; 
    $password = $_POST['password']; 


    if (count(Error::getError())=== 0 && ($user->login($username,$password))){ 
     http_redirect(admin/index.php); 
    } 

} 
+0

[PHP: 「注意:未定義變量」 和 「通知:未定義的索引」]的可能重複(HTTP://計算器。 com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – andrewsi 2015-03-19 02:38:48

回答

0

您的選擇會從數據庫pass,但你在你的$result數組引用password

罪魁禍首:

if (password_verify($password, $result['password'])) { 

解決辦法:

if (password_verify($password, $result['pass'])) { 
+0

這不是我的數據庫,它是從$ _POST ['password'] – Ying 2015-03-19 02:22:50

+0

啊,現在我明白你的意思了。謝謝 – Ying 2015-03-19 02:27:08