3
respostas

Erro com função

Escrevi certinho o código(eu acho que escrevi), mas ta aparecendo um erro assim:

Fatal error: Cannot redeclare usuarioEstaLogado() (previously declared in C:\wamp64\www\loja\logica-usuario.php:4) in C:\wamp64\www\loja\logica-usuario.php on line 6

Call Stack

Time Memory Function Location

1 0.0000 241456 {main}( ) ...\index.php:0 2 0.0010 249632 include( 'C:\wamp64\www\loja\logout.php' ) ...\index.php:3

Copiei e colei o código igual do professor pra ver se resolvia e nada. Vou enviar meu código pra vocês verem se tem um erro, pois não consigo encontra-lo.

index.php :

<?php include("cabecalho.php"); 
include("logica-usuario.php");
include("logout.php");
?>
<?php
     if(isset($_GET["logout"]) && $_GET["logout"]==true) {
?>
    <p class="alert-danger">Deslogado com sucesso</p>
<?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">Usuario ou senha inválida!</p>
<?php } ?>
<?php if(isset($_GET["falhaDeSeguranca"])) { ?>
    <p class="alert-danger">Você não tem acesso a essa funcionalidade!</p>
<?php } ?>
    <h1>Bem vindo!</h1>

     <?php if(usuarioEstaLogado()) {?>
                <p class="text-success">Você está logado como <?= usuarioLogado() ?>.
                <a href="logout.php">Deslogar</a></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 class="btn btn-primary">Login</button></td>
            </tr>
        </table>
    </form>
    <?php }?>
<?php include("rodape.php"); ?>

logout.php :

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

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($email) {
    return $_SESSION["usuario_logado"];
}

function logaUsuario($email) {
    $_SESSION["usuario_logado"] = $email;
}
function logout() {
    session_destroy();
}
3 respostas

O erro que você copiou diz que a função não pode ser redeclarada, que já foi declarada anteriormente na linha 4. Contudo, olhando no seu código não vejo duas declarações da função

usuarioEstaLogado()

Tem algum outro arquivo que contenha essa função que você pode estar importando?

Talvez reescrevê-la também resolva, pode ter faltado um ; or something

Provavelmente já tentou tudo isso, but I hope it helps ;)

Já reescrevi o código e já copiei e colei! Nada ainda! Não estou entendo o que ta acontecendo -.-'

Utilize include_once ou require_once no lugar do include("logica-usuario.php"); Pode resolver,pois ele irá inicializar o arquivo uma unica vez.