Ir para conteúdo

POWERED BY:

Arquivado

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

Cristiano A. Franco

Erro no header

Recommended Posts

Galera observem o código abaixo, ele faz parte de uma aplicação em PHP q gera uma biblia online:

 

Conteúdo do arquivo sql_exec.php:

<html><?phpif(isset($_POST['envia'])) {	?>		<? 	if($_POST['envia']=="executar") {    header("location: sql.html");	}} else {	?>	Se já acertou a configuração do arquivo <b>conecta.php</b> então quer<br>	Executar o carregamento dos textos bíblicos para o banco de dados?	<form method=post>  <input type=submit value="executar" name="envia">  <input type=submit value="cancelar" name="envia">	</form>		<?}?></html>
Ao clicar em executar, aparece o seguinte erro:

 

Warning: Cannot modify header information - headers already sent by (output started at /home/cristian/public_html/biblia/sql_exec.php:2) in /home/cristian/public_html/biblia/sql_exec.php on line 8

 

 

Esse erro só aparece no servidor da gigahost (gigahost.com.br)

 

No meu PC funciona corretamente, no servidor q eu usava antes tb funcionava...

 

 

Mandei dezenas de solicitações ao help-desk deles e els me responderam o seguinte

Prezado cliente,

O erro mostrado é de código fonte. É necessário que o senhor revise o

código e certifique-se de que não há nenhum erro. Caso utilize scripts

de terceiros, sugiro pedir ajuda ao suporte ou no forum relativo ao

sistema utilizado. Infelizmente nosso suporte não cobre problemas relativos

a configurações de aplicativos de terceiros ou manipulação de códigos

fontes. Caso tenha qualquer outra dúvida, estamos a disposição para

ajuda-lo.

Peço ajuda de vcs pq se não vou mandar esses caras pras cucuias....

 

P.S. Se alguem poder me indicar um provedor q funcione!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o header() naum pode ser usado depois de nehum código html, assim como o session_start() ambos e outros devem ser inseridos antes de qualquer tag html, sendo assim tu tem q arrumar um jeitinhu do código ficar +/- assim:

<?phpif(isset($_POST['envia'])) {?><? if($_POST['envia']=="executar") {  header("location: sql.html");}} else {?><html>Se já acertou a configuração do arquivo <b>conecta.php</b> então quer<br>Executar o carregamento dos textos bíblicos para o banco de dados?<form method=post> <input type=submit value="executar" name="envia"> <input type=submit value="cancelar" name="envia"></form> </html><?}?>

Manow é isso ai agora pode fazer a parada lá q vai dar certu http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Manow o header pode ser usado depois de qualquer coisa, desde q você utilize armazenaento em buffet.

 

Eu consegui resolver o problema e mandei um email pros caras.

Segue a cópia do email:

 

Este é um problema de cache. O tem q vir antes da saída do cache. O problema ocorre pq uma configuração padrão no php.ini q foi alterada.

 

O recursos é esse: output_buffering =

 

O valor padrão é: output_buffering = 4096

 

Veja abaixo o padrão no arquivo php.ini q trata dessa diretiva:

--------------------

; Output buffering allows you to send header lines (including cookies) even

; after you send body content, at the price of slowing PHP's output layer a

; bit. You can enable output buffering during runtime by calling the output

; buffering functions. You can also enable output buffering for all files by

; setting this directive to On. If you wish to limit the size of the buffer

; to a certain size - you can use a maximum number of bytes instead of 'On', as

; a value for this directive (e.g., output_buffering=4096).

output_buffering = 4096

 

--------------------

Eu posso contornar o problema forçando o armazenamento em cache, fazendo uso da função obj_start(); e obj_end_flush();. Isto implicaria na alteração de diversos arquivos .php.

 

Eu poderia fazer as devidas alterações nos scripts, mas sugiro a vcs alterarem o valor de "output_buffering = " para "output_buffering = 4096" no php.ini. Esta é a configuração na maior parte dos provedores de hospedagem hj em dia (daí ter ocorrido o erro no provedor da gigahost). A alteração exigirá a reinicialização do Apache, mas isto deve demorar apenas alguns segundos.

 

No mais, peço q me responda este email dizendo se vcs vão alterar a diretiva ou se vou ter q alterar todos os meus scripts.

 

 

Abraços, Deus abençoe a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente estas config. ñ são alteradas pois são default do php, se eles mexerem nisso, implicaria em mtas mudanças, globais, no server deles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente estas config. ñ são alteradas pois são default do php, se eles mexerem nisso, implicaria em mtas mudanças, globais, no server deles.

Sim Michelsp e isso só causa dor de cabeça.Pra q mexer numa configuração padronizada no php.ini, ainda mais se tratando de buffet.Imagina um site grande q usa muitos header's, pra diversas tarefas (como autenticação por exemplo), aí você muda pro provedor deles e tem q alterar na mão seus scripts por conta de uma dita cuja de uma configuração boba q eles alteraram no php.ini.Eu to esperando a resposta do email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu verifiquei no meu servidor e o output_buffering esta igual a 1 e não 4096 ...No que isso implica? Pra que serve este parametro?Values

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bem mais simples de resolver do que toda essa discussão.Retire as tag <html> e </html> e tá tudo resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara to o memso problema só que no codigo naum tem nenhuma tag <html> entendeu e continua dando o problema!olhem só

<?php//Obtendo dados passados pelo formulario de downloads.htm$username = $_POST["usuario"];$senha = $_POST["senha"];//acessando banco de dados tabela expert_logininclude "conexao.php";$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");$linhas = mysql_num_rows ($resultado);if($linhas==0) //ira me dizer a consulta retornou algum valor { echo "<html><body>"; echo "<p align=\"center\">Usuário não encontrado!</p>"; echo "<p align=\"center\"><a href=../../downloads.php>voltar</a></p>"; echo "</body></htm>"; } else {  if($senha !=mysql_result($resultado, 0, "senha"))//confere se senha é correta  {  echo "<html><body>";  echo "<p align=\"center\">A Senha esta incorreta!</p>";  echo "<p align=\"center\"><a href=../../downloads.php>voltar</a></p>";   echo "</body></htm>";  }  else //se usuario e senha estiverem corretos será criado cookies  {  if(!$HTTP_COOKIE_VARS["username"] && !$HTTP_COOKIE_VARS["senha"])  {  header("location: ../../index.php");  }  if($acao == sair)  {    setcookie("username");    setcookie("senha");    header("location: ../../logado.php");  }  }}mysql_close($dbh);?>

me ajudem por favor

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.