3
respostas

Erro na hora de executar o header() do remove-produto

Coloquei meu site em um servidor, e na hora de remover o produto ele remove porem da esse erro: Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd4/441/8282441/public_html/cabecalho.php:1) in /storage/ssd4/441/8282441/public_html/remove-produto.php on line 11.

imaginei q fosse do header do site entao modifiquei para: header("location: https://testeshenrique.000webhostapp.com/produto-lista.php?removido=true");

porem continua dando erro

3 respostas

Henrique, bom dia. Coloca aqui pra gente o código do cabeçalho e do remove-produto, por favor.

Fico no aguardo.

<?php 
error_reporting(E_ALL ^ E_NOTICE);
require_once("mostra-alerta.php");
?>
<html>
<head>
    <title>Minha loja</title>
    <meta charset="utf-8">
    <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 href="index.php" class="navbar-brand">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">Lista Produto</a></li>
                    <li><a href="contato.php">Contato</a></li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container">

    <div class="principal">

    <?php 

        mostraAlerta("success");
        mostraAlerta("danger");

    ?>
<?php require_once("cabecalho.php");
require_once("bancoproduto.php");
require_once("logica-usuario.php");

$id = $_POST['id'];

removeProduto($conexao, $id);

$_SESSION['success'] = "Produto removido com sucesso.";

header("location: produto-lista.php");
die();

?>

Henrique, você está escrevendo HTML através do require_once("cabecalho.php") antes de chamar o método header().

Fazer isso gera essa notificação do PHP. Se você vai escrever algo no cabeçalho, deve fazê-lo antes de gerar HTML na saída.

Veja essa discussão no stackoverflow.

De fato, não é necessário escrever HTML uma vez que sua resposta é um redirecionamento. Basta remover o require_once para cabecalho.php que o erro será resolvido (talvez seja necessário mudar a ordem do código de sessão também, mas daí avaliamos em seguida).

Fico no aguardo do seu feedback.