Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

watt

Erro no Insert

Mensagens Recomendadas

watt    0
watt

boas ppl

estou a fazer um site e cada vez que faço insert aparece o seguinte erro

Warning: Cannot modify header information - headers already sent by (output started at D:\web desing\KPC\Admin\produtos.php:2) in D:\web desing\KPC\Admin\produtos.php on line 52

e nesta zona esta o seguinte codigo

  $insertGoTo = "fimok.php";

  if (isset($_SERVER['QUERY_STRING'])) {

    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

    $insertGoTo .= $_SERVER['QUERY_STRING'];

  }

  header(sprintf("Location: %s", $insertGoTo)); --> linha 52

}

alguem me sabe explicar o que estou a fazer de errado ??

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

eu explico.

esse redirecionamento que usas é uma função de header, pelo que antes de a usares não podes ter posto nada cá para fora. Não podes ter feito nenhum echo nem escrito nada no html.

Se o tiveres feito dá esse erro... essa função deve ser usada sempre antes de mostrar o que quer que seja na página, nem mesmo defenir o <head> do html

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
francodacosta    0
francodacosta

uma linha em branco fora das tags <?php e ?> é o suficiente para começar a enviar output no teu caso é na linha 2 que está o problema

Para resolveres o problema de uma forma simples , na primeira linha do ficheiro põe isto

<?php

    ob_start();

?>

assim activas o buffering dos dados que te permite poder mecher nos headers do ficheiro a qq altura.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ped@ntilva    0
Ped@ntilva

uma linha em branco fora das tags <?php e ?> é o suficiente para começar a enviar output no teu caso é na linha 2 que está o problema

Para resolveres o problema de uma forma simples , na primeira linha do ficheiro põe isto

<?php

    ob_start();

?>

assim activas o buffering dos dados que te permite poder mecher nos headers do ficheiro a qq altura.

Será que podias explicar melhor a função do 'ob_start'?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
francodacosta    0
francodacosta

uma linha em branco fora das tags <?php e ?> é o suficiente para começar a enviar output no teu caso é na linha 2 que está o problema

Para resolveres o problema de uma forma simples , na primeira linha do ficheiro põe isto

<?php

    ob_start();

?>

assim activas o buffering dos dados que te permite poder mecher nos headers do ficheiro a qq altura.

Será que podias explicar melhor a função do 'ob_start'?

bom aqui vai uma explicação rápida

por defeito os dados são enviados para o browser á medida que são criados

por exemplo ao escreveres <html> na primeira linha esta é logo enviada para o browser.

Para enviar algo para o browser o servidor utiliza o protocolo http, este protocolo obriga a que sejam enviados os headers da mensagem primeiro.

É nestes headers que estão definidos  entre outras coisas os cookies

Este erro do headers already sent, ocorre por essa razão porque se faz um setcookie depois de ter enviado os headers, como o cookie tem que ser definido no header e este ja foi enviado dá erro.

a função ob_start() altera o comportamento normal. faz com que os dados sejam guardados num buffer e só são enviados para o browser com a função ob_end_flush() ou automaticamente no final da página.

isto permite usar as funções que manipulam os headers em qualquer altura  porque só é enviada qq coisa para o browser no final e por conseguinte os headers só são enviados no final da pagina

desculpa se não fui claro mas a escrita não é o meu ponto forte

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade