1
resposta

Warning: Cannot modify header information - headers already sent by

Olá. Quando eu clico no menu Adiciona Produto, o sistema não redireciona para o index.php e apresenta a seguinte mensagem: " Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/cabecalho.php:30) in /var/www/html/logica-usuario.php on line 11"

Seguem os códigos dos arquivos cabecalho.php e logica-usuário.php:

Código cabecalho.php
<?php
error_reporting(E_ALL ^ E_NOTICE);
require_once("mostra-alerta.php"); ?>
<html>
<head>
    <meta charset="utf-8">
    <title>Minha Loja</title>
    <link href="css/bootstrap.css" rel="stylesheet">
    <link href="css/loja.css" rel="stylesheet">
</head>
<body>

    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="index.php">Minha Loja</a>
            </div>
            <div>
                <ul class="nav navbar-nav">
                    <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                    <li><a href="produto-lista.php">Produtos</a></li>
                    <li><a href="contato.php">Contato</a></li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container">
        <div class="principal">
            <?php mostraAlerta("success");?>
            <?php mostraAlerta("danger");?>

Código logica-usuario.php

<?php
session_start();

function usuarioEstaLogado() {
    return isset($_SESSION["usuario_logado"]);
}

function verificaUsuario() {
    if(!usuarioEstaLogado()) {
        $_SESSION["danger"] = "Você não tem acesso a esta funcionalidade.";
        header("Location: index.php");
        die();
    }
}

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

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

function logout() {
    session_destroy();
    session_start();
}
1 resposta

Nilo, boa tarde!

Esse erro é gerado quando você mostra alguma coisa na tela, e depois tenta fazer qualquer tipo de alteração no header da página, como redirecionar por exemplo, nesse caso o erro está aqui

   header("Location: index.php");

Veja onde essa função está sendo chamada, e coloque-a antes de qualquer impressão de texto ou html do seu arquivo

Espero ter ajudado e bons estudos!