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

Erro após inserir o arquivo logout

Após ter inserido o código no logout.php recebi o seguinte erro:

Fatal error: Cannot redeclare usuarioEstaLogado() (previously declared in C:\xampp\htdocs\curso-alura-php\logica-usuario.php:4) in C:\xampp\htdocs\curso-alura-php\logica-usuario.php on line 5

Código logout.php:

<?php include("logica-usuario.php");
logout();
header("Location: index.php?logout=true");
die();

Código logica-usuario.php:

<?php
session_start();
function usuarioEstaLogado(){
    return isset($_SESSION["usuario_logado"]);
}

function verificaUsuario() {
    if(!usuarioEstaLogado()) {
        header("Location: index.php?falhaDeSeguranca=true");
        die();
    }
}

function usuarioLogado(){
    return $_SESSION['usuario_logado'];
}

function logaUsuario($email){
    $_SESSION["usuario_logado"] = $email;
}

function logout(){
    session_destroy();
}

Código index.php:

<?php include('cabecalho.php') ?>
<?php include('conecta.php') ?>
<?php include('busca-usuario.php') ?>
<?php include('logica-usuario.php') ?>
<?php include('logout.php') ?>

<?php if (isset($_GET['logout']) && $_GET['logout']==true) :?>
    <p class="alert-success">Deslogado com sucesso!</p>
<?php endif; ?>

<?php if (isset($_GET['login']) && $_GET['login']==true) :?>
    <p class="alert-success">Logado com sucesso!<a href="logout.php">Deslogar</a></p>
<?php endif; ?>

<?php if (isset($_GET['login']) && $_GET['login']==false) :?>
    <p class="alert-danger">Usuario ou senha inválida</p>
<?php endif; ?>

<?php if(isset($_GET["falhaDeSeguranca"]) && $_GET["falhaDeSeguranca"]==true):?>
    <p class="text-center alert-danger">Voce não tem acesso a esta funcionalidade</p>
<?php endif; ?>

<h1 class="text-center">Bem-vindo</h1>

<?php if (usuarioEstaLogado()) { ?>
    <p class="text-success text-center">Você está logado como <?= usuarioLogado(); ?></p>
<?php } else{ ?>

    <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 type="submit" class="btn btn-primary">Login</button></td>
        </tr>
    </table>
    </form>
 <?php } ?>
<?php include('rodape.php') ?>
4 respostas
solução!

Olá Cleber, tudo bom?

O arquivo logout.php é chamado no index.php e ele também inclui o arquivo logica-usuario.php, isso faz com que a declaração da função ocorra duas vezes e dispare o erro (pois o logica é chamado duas vezes, no index.php e no logout.php).

<?php include('logica-usuario.php') ?>
<?php include('logout.php') ?>

Opa, obrigado Mario, mas agora eu estou tendo um erro com a função header do arquivo logout, antes mesmo de clicar no botão para logout, o servidor já dá um erro de Redirecionamento em excesso.

Opa, mas eai rolou agora? :)

Deu certo valeu cara