Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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));
}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.
>
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)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
>
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");
}
}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.
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...
>
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?
>
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);
>
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!
Coloque ob_start(); no começo da página e verifique se da certo.