Solucionado (ver solução)
Solucionado
(ver solução)
16
respostas

Usuário retorna sempre false

No login o usuário e senha estão retornando sempre como false, apesar de ja term me certificado várias vezes que os dados estão corretor, abaixo meus codigos:

index.php

<?php include("cabecalho.php");?>
<?php if(isset($_GET["login"]) && $_GET["login"]==true){ ?>
    <p class="alert-success">Logado com Sucesso!</p>
<?php }?>    
<?php if(isset($_GET["login"]) && $_GET["login"]==false){ ?>
    <p class="alert-danger">Usuário ou Senha Inválida!</p>
<?php }?>

        <h1>Bem Vindo!</h1>

        <h2>Login</h2>
        <form action="login.php" method="post">
        <table class="table">
            <tr>
                <td>Email</td>
                <td><input class="form-control" type="email" name="email"></td>
            </tr>
            <tr>
                <td>Senha</td>
                <td><input class="form-control" type="password" name="senha"></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary">Login</button></td>
            </tr>
        </table>
        </form>
<?php include("rodape.php");?>

login.php

<?php include("cabecalho.php");?>
<?php if(isset($_GET["login"]) && $_GET["login"]==true){ ?>
    <p class="alert-success">Logado com Sucesso!</p>
<?php }?>    
<?php if(isset($_GET["login"]) && $_GET["login"]==false){ ?>
    <p class="alert-danger">Usuário ou Senha Inválida!</p>
<?php }?>

        <h1>Bem Vindo!</h1>

        <h2>Login</h2>
        <form action="login.php" method="post">
        <table class="table">
            <tr>
                <td>Email</td>
                <td><input class="form-control" type="email" name="email"></td>
            </tr>
            <tr>
                <td>Senha</td>
                <td><input class="form-control" type="password" name="senha"></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary">Login</button></td>
            </tr>
        </table>
        </form>
<?php include("rodape.php");?>

busca-usuario.php

<?php
function buscaUsuario($conexao, $email, $senha){
    $senhaMd5 = md5($senha);
    $query = "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuarios;
}
16 respostas

Estou com o mesmo prolema... cacei uma solução, mas não encontro....

Olá Geovir, tudo bem?

Você colocou o mesmo arquivo em index.php e login.php. É isso mesmo? Veja se não colocou o código do login.php errado e responde aqui com o código certo que tentarei lhe ajudar.

Abraço

Olá, Paulo.

Verifiquei o código do Geovir e está igual ao meu. Não entendi o lance dele ter colocado o index em login... pelo que entendi, ele tem 2 arquivos, separados index.php e login.php, tal como eu fiz aqui...

Coloca seu código então Diego, posso ver se consigo ajudar pelo seu.

Abraço

index.php

<html>
<?php include 'cabecalho.php'; ?>
<br><br><br><br>

<?php if (isset($_GET["login"]) && $_GET["login"]==false) { ?>
    <p class="alert-danger">Usuário ou Senha inválido!</p>
<?php  } ?>
<?php if (isset($_GET["login"]) && $_GET["login"]==true) { ?>
    <p class="alert-success">Login Efetuado!</p>
<?php  } 

?>

    <br><br><h1>Bem Vindo!</h1><br><br>

    <h2>Login</h2>
    <form action="login.php" method="post">
        <table class="table">
            <tr>
                <td>E-mail</td>
                    <td><input class="form-control" type="email" name="email"></td>
            </tr>
            <tr>
                <td>Senha</td>
                    <td><input class="form-control" type="password" name="senha"></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary">Login</button></td>
            </tr>
        </table>
    </form>

<?php include 'rodape.php';?>
</html>

login.php

<?php include 'conexao.php'; 
include 'banco-usuario.php';

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);
    if ($usuario==null)    {
        header ("Location: index.php?login=0");
    } else {
        header ("Location: index.php?login=1");
    }

die();

?>

banco-usuario.php

<?php

function buscaUsuario ($conexao, $email, $senha) {
    $senhaMd5 = md5 ($senha);
    $query = "select * from usuarios where email ='{$email}', senha ='{$senhaMd5}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuario;

}

Eu fiz alguns testes, procurei no Google... e acho, puro achismo mesmo, que o problema pode estar ocorrendo na linha do "$usuario = mysqli_fetch_assoc($resultado);" do banco-usuario.php

Paulo, agora que entendi o que você comentou sobre o código do Geovir... acho que ele misturou um pouco mesmo nos dois arquivos, eu não havia reparado....

Pessoal bom dia,

Eu me confundi na hora de colar o código e misturei as coisas, segue novamente...

index.php

<?php include("cabecalho.php");?>
<?php if(isset($_GET["login"]) && $_GET["login"]==true){ ?>
    <p class="alert-success">Logado com Sucesso!</p>
<?php }?>    
<?php if(isset($_GET["login"]) && $_GET["login"]==false){ ?>
    <p class="alert-danger">Usuário ou Senha Inválida!</p>
<?php }?>

        <h1>Bem Vindo!</h1>

        <h2>Login</h2>
        <form action="login.php" method="post">
        <table class="table">
            <tr>
                <td>Email</td>
                <td><input class="form-control" type="email" name="email"></td>
            </tr>
            <tr>
                <td>Senha</td>
                <td><input class="form-control" type="password" name="senha"></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary">Login</button></td>
            </tr>
        </table>
        </form>
<?php include("rodape.php");?>

login.php

<?php include("conecta.php");
include ("banco-usuario.php");

$usuario = buscaUsuario($conexao, $_GET["email"], $_GET["senha"]);
if($usuario == null){
    header("Location: index.php?login=0");
}else{
    header("Location: index.php?login=1");
}
die();

banco-usuario.php

<?php
function buscaUsuario($conexao, $email, $senha){
    $senhaMd5 = md5($senha);
    $query = "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuarios;
}

Acho que o problema dos dois está bem parecido mesmo... Porém o Geovir está usando no formulário method="post" e no arquivo login.php está fazendo:

$usuario = buscaUsuario($conexao, $_GET["email"], $_GET["senha"]);

Você tem que usar $_POST.

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);

Veja se isso resolve pra você Geovir.

Diego, vou esperar para ver se o problema dele é esse, pois se for, o seu problema deve ser outro. Abre outra dúvida que te ajudo nela, para que essa dúvida fique focada no problema do Geovir.

Abraço.

Paulo,

Obrigado pelo retorno, porém fiz conforme você falou e mesmo assim não funcionou, segue abaixo como ficou meu código:

index.php

<?php include("cabecalho.php");?>
<?php if(isset($_GET["login"]) && $_GET["login"]==true){ ?>
    <p class="alert-success">Logado com Sucesso!</p>
<?php }?>    
<?php if(isset($_GET["login"]) && $_GET["login"]==false){ ?>
    <p class="alert-danger">Usuário ou Senha Inválida!</p>
<?php }?>

        <h1>Bem Vindo!</h1>

        <h2>Login</h2>
        <form action="login.php" method="post">
        <table class="table">
            <tr>
                <td>Email</td>
                <td><input class="form-control" type="email" name="email"></td>
            </tr>
            <tr>
                <td>Senha</td>
                <td><input class="form-control" type="password" name="senha"></td>
            </tr>
            <tr>
                <td><button class="btn btn-primary">Login</button></td>
            </tr>
        </table>
        </form>
<?php include("rodape.php");?>

login.php

<?php include("conecta.php");
include ("banco-usuario.php");

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);
if($usuario == null){
    header("Location: index.php?login=0");
}else{
    header("Location: index.php?login=1");
}
die();

banco-usuario.php

<?php
function buscaUsuario($conexao, $email, $senha){
    $senhaMd5 = md5($senha);
    $query = "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'";
    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuarios;
}

Olá, Paulo.

Eu ia abrir um novo tópico, mas o meu código agora está igual ao do Geovir e estamos tomando o mesmo erro... o problema é o mesmo.

Como falei, fiz alguns testes e pude otar, através do var_dump(), que está passando NULL nos campos de E-MAIL e SENHA da página index.php, ou seja, as informações que digitamos nestes campos não estão passando....

Alguma sugestão?

Desde já, obrigado pela atenção.

Entendi Diego, vamos ver então

Tente fazer var_dump assim:

login.php

<?php include("conecta.php");
include ("banco-usuario.php");

var_dump($_POST);

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);

banco-usuario.php

<?php
function buscaUsuario($conexao, $email, $senha){
    $senhaMd5 = md5($senha);
    $query = "select * from usuarios where email='{$email}' and senha='{$senhaMd5}'";

    var_dump($query);

    $resultado = mysqli_query($conexao, $query);
    $usuario = mysqli_fetch_assoc($resultado);
    return $usuarios;
}

Me fala os resultados que teve ao mandar imprimir esses valores.

Abraço

seu form ta com method= 'post', tentar trocar para get ai

solução!

Daniel, obrigado pela dica, mas não funcionou.

Paulo, PERFEITO, funcionou. Agora está retornando "usuário logado". A única coisa que alterei foi a linha "return $usuarios;" para "return $usuario;", pois no login.php a variável está no singular: $usuario.

Muito obrigado meu camarada. Quer dizer que o erro era a query né ?! O "and" fez a diferença.... que coisa... tomei uma surra aqui! Obrigado!!

Agora estranho que o código do Geovir já está com o "and" na $query e pelo que ele informou continua retornando sempre false.

Geovir, creio que o seu problema seja a penúltima linha do banco-usuario.php. Altere de "return $usuarios;" para "return $usuario;", no singular.

Diego,

Fiz conforme sua sugestão e funcionou...

Muito obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software