2015-03-19 46 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