• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

watt

Erro no Insert

9 mensagens neste tópico

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 ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas eu tenho o codigo no inicio no inicio de tudo, antes do <html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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'?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que deu para perceber bem o significadio.

Thks a lot.

Cumps, Pedantilva

0

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