watt Posted May 25, 2006 at 10:29 PM Report #29543 Posted May 25, 2006 at 10:29 PM 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 ??
pedrotuga Posted May 25, 2006 at 11:55 PM Report #29554 Posted May 25, 2006 at 11:55 PM 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
watt Posted May 26, 2006 at 12:34 AM Author Report #29555 Posted May 26, 2006 at 12:34 AM mas eu tenho o codigo no inicio no inicio de tudo, antes do <html>
francodacosta Posted May 26, 2006 at 08:19 AM Report #29559 Posted May 26, 2006 at 08:19 AM 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.
watt Posted May 26, 2006 at 10:24 AM Author Report #29570 Posted May 26, 2006 at 10:24 AM menos um erro, Obrigado
joninho Posted May 26, 2006 at 11:03 AM Report #29574 Posted May 26, 2006 at 11:03 AM menos um erro, Obrigado pk? aínda tens erros?
Ped@ntilva Posted May 26, 2006 at 01:05 PM Report #29589 Posted May 26, 2006 at 01:05 PM 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'?
francodacosta Posted May 26, 2006 at 11:30 PM Report #29660 Posted May 26, 2006 at 11:30 PM 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
Ped@ntilva Posted May 27, 2006 at 09:22 AM Report #29680 Posted May 27, 2006 at 09:22 AM Acho que deu para perceber bem o significadio. Thks a lot. Cumps, Pedantilva
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now