Login e Senha

Estou tentando montar um básico sistema, apenas para fins de aprendizado mesmo. Inicialmente a ideia é que o sistema pegue os dados dados em um formulário, faça a busca no banco e se o retorno for verdadeiro, o sistema exibirá a mensagem “ACERTOU”, caso contrário “ERROU”. Na minha concepção está tudo certo, porém, independente dos dados que são colocados no formulário, o sistema exibe “ACERTOU”.

<form method="POST" action="index.php">
            <table>
                <tr>
                    <td>Nome: </td>
                    <td><input name="nome" type="text"></td>
                </tr>
                <tr>
                    <td>Senha: </td>
                    <td><input name="senha" type="password"></td>
                </tr>
                <tr>
                    <td><input name="entrar" type="submit" value="Entrar"></td>
                </tr>

            </table>
            
        </form>
<?php require_once __DIR__ . '/banco_dados.php'; if($_SERVER['REQUEST_METHOD'] == "POST"){ $usuario = [ 'nome' => $_POST['nome'], 'senha' => $_POST['senha'] ]; var_dump($usuario); $repo = new RepositorioUsuarios(); $teste = $repo->usuario($usuario); var_dump($teste); if ($teste != null){ echo 'ACERTOU'; } else{ echo 'ERROU'; } } ?>

function usuario ($usuario){

$consulta = $this->conexao->prepare('SELECT * FROM usuario WHERE nome = :nome and senha = :senha');
$consulta->execute($usuario);
return $consulta;

}

O problema está no function usuario($usuario) e também no array $usuario.

  1. coloque o seu array assim:

$usuario = [
’:nome’ => $_POST[“nome”],
’:senha’ => $_POST[“senha”],
];

  1. imagino que você está usando o PDO, recomendo fazer assim:

    $consulta = $this->conexao->prepare(“SELECT nome, senha FROM usuario where nome = :nome and
    senha = :senha”);
    $consulta->execute($usuario);
    $linha = $consulta->fetch(PDO::FETCH_ASSOC);
    return $linha;

Dá uma lida depois na documentação do PDO, da pra encontrar na fácil no google.

1 curtida

Agradeço a ajuda, porém, agora ele exibe apenas “ERROU”, independente dos dados inseridos no formulário ahahahahahha, saberia o que é?

fiz as correções conforme você indicou:

if($_SERVER['REQUEST_METHOD'] == "POST"){
            $usuario = [
                ':nome' => $_POST["nome"],
                ':senha' => $_POST["senha"],
            ];

function usuario ($usuario){
    
    $consulta = $this->conexao->prepare('SELECT nome, senha FROM usuario WHERE nome = :nome and senha = :senha');
    $consulta->execute($usuario);
    $linha = $consulta->fetch(PDO::FETCH_ASSOC);
    return $linha;
}