Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diéssica

[Resolvido] Erro "Cannot modify header information". Me a

Recommended Posts

Estou fazendo um sistema de galeria de fotos, aí estava fazendo a página "Editar álbum", funcionou, já atualiza o título e capa do álbum, porém estou com dificuldade em arrumar o erro que aparece quando eu aperto pra enviar, quando eu quero que redirecione para a página de confirmação.

 

Ele aparece em cima da minha pagina, dizendo isso:

Warning: Cannot modify header information - headers already sent by (output started at /home2/th132210/public_html/new/galeria/admin/index.php:88) in /home2/th132210/public_html/new/galeria/admin/editar_albuns.php on line 136

 

 

Este é o codigo:

 

  $updateGoTo = "?p=albuns";
 if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
   $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
   $updateGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
}
 header(sprintf("Location: %s", $updateGoTo));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque ob_start(); no começo da página e verifique se da certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não pode enviar headers HTTP depois que já iniciou a saída de dados no navegador.

output started at /home2/th132210/public_html/new/galeria/admin/index.php:88

Nessa linha provavelmente tem um echo ou html sendo mostrado.

 

Como resolver?

Mova toda a lógica que envolve redirecionamento para o início da página, ou use as fuções ob_*

:seta: http://php.net/manual/en/function.ob-start.php

 

O que essa função faz é armazenar toda a saída em um buffer até o final da execução.

Quando a execução termina, ele pega o conteúdo do buffer e coloca na saída do navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque ob_start(); no começo da página e verifique se da certo.

 

Este é o começo da minha pagina:

<?php require_once('../../Connections/conection.php'); ?>
<?php
if (!isset($_SESSION)) {
 session_start();
}

 

No caso, coloco depois de <?php?

 

Você não pode enviar headers HTTP depois que já iniciou a saída de dados no navegador.

 

Nessa linha provavelmente tem um echo ou html sendo mostrado.

 

Como resolver?

Mova toda a lógica que envolve redirecionamento para o início da página, ou use as fuções ob_*

:seta: http://php.net/manual/en/function.ob-start.php

 

O que essa função faz é armazenar toda a saída em um buffer até o final da execução.

Quando a execução termina, ele pega o conteúdo do buffer e coloca na saída do navegador.

 

 

Sim, tem um echo, que é o do include que eu usei pra fazer aqueles ?p=pagina

 

Onde eu coloco esse ob start? Eu coloco no inicio do codigo <?php e fica a mesma coisa..

<?php
ob_start();
// Pure PHP Upload 2.1.2
if (isset($HTTP_GET_VARS['GP_upload'])) {
$ppu = new pureFileUpload();
(Codigo continua)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca no página principal do site não no include

 

Exemplo: você tem uma página chamada index.php e nela tem um include chamado contato.php , você deve colocar o ob_start(); na página index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca no página principal do site não no include

 

Exemplo: você tem uma página chamada index.php e nela tem um include chamado contato.php , você deve colocar o ob_start(); na página index.php

 

Coloquei o ob_start na pagina index.php e deixei o editar_albuns.php no codigo normal.

 

Coloquei onde fica meu include do conteudo.

Segue o codigo da div do meu index.php que coloquei o ob_start.

 

<div id="wrapper">
<?php
ob_start();
if(isset($_GET['p']) && $_GET['p'] != "") {
$page = $_GET['p'];
$page = str_replace(".", "", $page);
$page = str_replace("firstime", "home", $page);
$page = "". $page .".php";
if(file_exists($page)) {
include("$page");
}

else {
include("erro.php");
}

}
else {
include("albuns.php");
}
?>
</div>

 

Albuns.php é a pagina padrao do include, no menu eu mando abrir ?p=editar_albuns e nesse editar_albuns aparece o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A princípio é isso mesmo.

Mas você tem que colocar no "index.php" ou similar, não em uma página que é incluída por outras...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A princípio é isso mesmo.

Mas você tem que colocar no "index.php" ou similar, não em uma página que é incluída por outras...

 

Mas o meu problema é que o index.php é uma página incluida por outras. É a raiz do sistema.

 

Pq da esse problema de header?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não pode enviar headers HTTP depois que já iniciou a saída de dados no navegador.

 

Adicione o ob_start(); em todas as páginas principais(as primeiras a serem abertas quando acessa a página);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione o ob_start(); em todas as páginas principais(as primeiras a serem abertas quando acessa a página);

 

Coloquei o ob_start(); no meu primeiro <?php (após ele) do arquivo principal (index.php). Eu tinha colocado no segundo (no include) então não adiantou mesmo.

 

Segue o código usado:

<?php
ob_start();
//initialize the session
if (!isset($_SESSION)) {
 session_start();
}

 

Muito obrigada MESMO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.