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

Erro no codigo

Olá, tudo bem? Estou com problema no código, no caso estou fazendo em um projeto próprio. Fiz e refiz a aula e não estou achando onde está o problema. No caso era para aparecer o form de login apenas, e depois que efetuasse o login mostraria apenas os botoes de "Cadastrar produtos" e "Lista de produtos", no entanto aparece todos juntos, com ou sem login e não aparece a mensagem "Você está logado como: <?= $_COOKIE["usuario_logado"] ?>"

Código abaixo:

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 $usuario;
}
login.php

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

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);
if($usuario == null) {
    header("Location: ../pg-login.php?login=0");
} 
else {
    setcookie("usuario_logado", $usuario["email"], time() + 60);
    header("Location: ../pg-login.php?login=1");
}
die();
pg-login.php

<?php require_once("header.php") ?>

<link rel="stylesheet" type="text/css" href="css/pg-login.css">



<div class="container">         
    <div class="form-login">

    <?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 invalida!</p>
    <?php }?>

    <h1>Bem vindo!</h1>

    <?php if(isset($_COOKIE["usuario_logado"])) {?>
        <p class="text-success">Você está logado como: <?= $_COOKIE["usuario_logado"] ?>.</p>
    <?php } else {?>

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

    <div class="botao-login">
        <a href="pg-cadastro-produtos.php"><input type="button" class="btn btn-primary" name="" value="Cadastrar produtos"></a>
        <a href="produto-lista.php"><input type="button" class="btn btn-primary lista-produto" name="" value="Lista de produtos"></a>
    </div>     

    <?php }?>

</div>


<?php require_once("footer.php") ?>

Alguém tem alguma solução? Obrigado.

3 respostas

O código, do jeito que está, faz o seguinte:

1 - confere se o usuário está logado. 2 - se está logado, mostra a mensagem, dizendo que está logado. A div botao-login está aparecendo, com os dois links, no caso do usuário não estar logado, abaixo de um formulário de login.

Você realmente quer que a div abaixo apareça caso o usuário não esteja logado?

<div class="botao-login">
        <a href="pg-cadastro-produtos.php"><input type="button" class="btn btn-primary" name="" value="Cadastrar produtos"></a>
        <a href="produto-lista.php"><input type="button" class="btn btn-primary lista-produto" name="" value="Lista de produtos"></a>
    </div>

Na verdade só mostra "Logado com sucesso!" da aula anterior, mas a confirmação do código abaixo não

<p class="text-success">Você está logado como: <?= usuarioLogado() ?>.</p>

Essa div dos botoes só deveria aparecer caso o usuário estivesse logado. Tirei a DIV na sessão do ELSE e coloquei no IF. Agora só aparece o form de login, até ai está correto, mas ao efetuar o login a div de botoes não aparece, e o form de login continua na tela.

Cod. atualizado

<div class="container">         
    <div class="form-login">
        <h1>Bem vindo!</h1>

        <?php if(usuarioEstaLogado()) {?>
            <p class="text-success">Você está logado como: <?= usuarioLogado() ?>.</p>
            <div class="botao-login">
                <a href="pg-cadastro-produtos.php"><input type="button" class="btn btn-primary" name="" value="Cadastrar produtos"></a>
                <a href="produto-lista.php"><input type="button" class="btn btn-primary lista-produto" name="" value="Lista de produtos"></a>
            </div>     
        <?php } else {?>            
            <h2>Login</h2>
            <form action="php/login.php" method="post">
                <table class="table">
                    <tr>
                        <td>Email</td>
                        <td><input type="email" name="email" class="form-control"></td>
                    </tr>
                    <tr>
                        <td>Senha</td>
                        <td><input type="password" name="senha" class="form-control"></td>
                    </tr>
                    <tr>
                        <td><button class="btn btn-primary">Login</button></td>
                    </tr>
                </table>
            </form>    
        <?php }?>    

    </div>    
</div>
solução!

Achei uma meia solução para este problema. Na aula 4, troqueio o $_COOKIE por $_SESSION, e funcionou perfeitamente. Alguém sabe dizer o pq? Obrigado Tomás. Boa tarde.