Ir ao conteúdo
  • Cadastre-se
Nvato

PHP Não consigo pegar as posição ID

Recommended Posts

Galera, estou com bastante dificuldade em realizar esse código, pois estou tentando pegar dados do meu banco através da posição em php. Porém ele dá um erro, segue o código a seguir e o erro:

 

<?php
    session_start();
    require_once('../Classes/DaoUsuario.php');
    $autentificar = new DaoUsuario;
    $usuario = $_POST['usuario'];
    $senha = $_POST['senha'];
    if($autentificar->consultar($id) > 0){
        if ($usuario == $autentificar[1] and $senha == $autentificar[2]){
            $_SESSION['id'] = $id;
            $_SESSION['usuario'] = $usuario;
            header('Location:painel-de-controle.php');
            exit();
        }
    }else{
        header('location:administrador.php');
        session_destroy();
        exit();
    }
    
?>

Erro: Fatal error: Uncaught Error: Cannot use object of type DaoUsuario as array in autentificar.php:8 Stack trace: #0 {main} autentificar.php on line 8

 

Como faço para soluciona-lo?  OBS: Estou tentando comparar o que foi passado em HTML (formulario) com o banco para mandar ele para o Painel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como ta essa classe autentificar?

 

O método $autentificar->consultar($id) altera os atributos desse objeto? Se não, esse objeto está vazio.

 

Enfim, o erro está em $autentificar[1], você está tentando acessar um objeto como se fosse array. Você teria que ter um atributo usuário na sua classe autentificar e verificar dessa forma: 

if ($usuario === $autentificar->usuario && $senha === $autentificar->senha){ 
	//Código
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, está dessa forma

 

   

 public function consultar($id){
        $query = "SELECT * FROM {$this->tabela} WHERE id=:id";
        try{
            $operacao = $this->status->prepare($query);
            $operacao->bindParam(":id",$id, PDO::PARAM_INT);
            $operacao->bindParam(":usuario",$usuario, PDO::PARAM_INT);
            $operacao->bindParam(":senha",$senha, PDO::PARAM_INT);
            $operacao->execute();
            $getRow = $operacao->fetch(PDO::FETCH_OBJ);
            $usuario = $getRow->usuario;
            $senha = $getRow->senha;
            $objeto = new Usuario($id, $usuario, $senha);
            $objeto->setId($id);
            return $objeto;
        } catch (PDOException $erro) {
            echo $erro->getMessage();
        }
    }

 

OBS: Não possui um atributo especifico nessa classe chamada usuario, mas estou usando o require_once para puxar a classe Usuário, que tem os seguintes atributos id, usuario, senha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×