Ir para conteúdo

POWERED BY:

Arquivado

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

dinhotaswolf

[Resolvido] Problemas com HEADER

Recommended Posts

Olá pessoal!

 

Abaixo está o código completo:

include 'access_db.php';

if (empty($_POST['consult']))
{
echo "<script>alert('Digite um número de telefone !!!');</script>";
echo "<script>window.location='princ.php?consulta=consulta';</script>";
}

$query = "SELECT cl.id, cl.tel, cl.obs, co.condicao FROM clientes cl, condicao co WHERE co.codigo = cl.condicao AND tel ='". $_POST['consult']."'";
$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$busca = mysql_fetch_array($result);

if (strlen($_POST['consult']) < 14){
echo "<script>alert('Digite um número de telefone válido !!!');</script>";
echo "<script>window.location='princ.php?consulta=consulta';</script>";
} elseif ($busca[tel] == $_POST['consult']){
header("Location: princ.php?condicao=".$busca[condicao]."&tel=".$busca[tel]."&obs=".$busca[obs]); // essa é a linha 40
} else {
Header("Location: princ.php?condicao=9&tel=".$_POST[consult]);
}

mysql_free_result($result);
mysql_close($link);

O erro que acontece é:

Warning: Header may not contain more than a single header, new line detected. in /home/e-ys/www/teste_codigos/consulta.php on line 40

O trecho referente a linha 40 é:

header("Location: princ.php?condicao=".$busca[condicao]."&tel=".$busca[tel]."&obs=".$busca[obs]);

Porém, estava funcionando normal e agora depois de algum tempo já em uso começou a dar esse erro.

 

O que pode ser? O que devo fazer?

 

Fico no aguardo de uma ajuda.

 

Grato pela atenção,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está utilizando

 Header("Location: princ.php?condicao=9&tel=".$_POST[consult]);

 

tente utilizar header minusculo, e também fecha as aspas corretamente dentro da função.

header("Location: princ.php?id1=".$_POST['parametro1']."&id2=".$_POST['parametro2'].""); 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela dica, mas não funcionou.

 

Deve ser alguma outra coisa. Porém, ele estava funcionando normalmente e de repente parou de funcionar. Não houve mudança no código para que isso acontecesse.

 

Fico no aguardo de ajuda.

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Ronny, pela dica.

 

Testei aqui mas não funcionou.

 

O erro persiste na mesma linha com o código que informou.

Warning: Header may not contain more than a single header, new line detected. in /home/e-ys/www/teste_codigos/consulta.php on line 40

header("Location: princ.php?condicao={$busca['condicao']}&tel={$busca['tel']}&obs={$busca['obs']} ");

Creio que seja por que estou utilizando dois HEADER com redirecionamentos diferentes.

 

Li algo que dizia alguma coisa assim.

 

Mas, não conheço outro modo para redirecionar e nem sei se é esse mesmo o erro.

 

Aceito sugestões.

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, uma observação:

 

Não pode exibir dados na tela e depois redirecionar usando o header. Exemplo:

 

<?php
echo "X";
header("Location: hello.php");
?>

 

Ele retorna a mensagem

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\teste\teste.php:2) in C:\xampp\htdocs\teste\teste.php on line 3

Notando que C:\xampp\htdocs\teste\teste.php é o caminho do meu script

 

 

Um outro jeito de redirecionar é usando a tag meta refresh, deste jeito:

<?php
echo "X";
//header("Location: hello.php");
echo "<meta http-equiv='refresh' content='0;url=hello.php/' >";
?>

 

Só que talvez não seja recomendável, pois o usuário pode desabilitar essa função pelo navegador :(

Compartilhar este post


Link para o post
Compartilhar em outros sites
usem o Responder Azul: respondery.png

ou a 'Resposta Rápida'.

 

faz o seguinte:

 

echo '<pre>';
var_dump( $busca );

poste para análise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal testei todas as dicas e não funcionaram, só não testei a dica do <meta> pois foi dito que é uma boa.

 

Deixa eu perguntar, será que alguma das funções abaixo podem me ajudar?

■flush — Descarrega o buffer de saída
■ob_clean — Limpa (apaga) o buffer de saída
■ob_end_clean — Limpa (apaga) o buffer de saída e desativa o buffer de saída
■ob_end_flush — Descarrega (envia) o buffer de saída e desativa o buffer de saída
■ob_flush — Descarrega (envia) o conteúdo do buffer de saída
■ob_get_clean — Obtém o conteudo do buffer e exclui o buffer de saída atual
■ob_get_contents — Retorna o conteúdo do buffer de saída
■ob_get_flush — Flush the output buffer, return it as a string and turn off output buffering
■ob_get_length — Retorna o tamanho do buffer de saída
■ob_get_level — Retorna o nível do mecanismo de buffer de saída
■ob_get_status — Obtém a situação dos buffers de saída
■ob_gzhandler — Função de callback para ob_start para compactar com gzip o buffer de saída
■ob_implicit_flush — Ativa ou desativa o descarregar implicito
■ob_list_handlers — List all output handlers in use
■ob_start — Ativa o buffer de saída
■output_add_rewrite_var — Add URL rewriter values
■output_reset_rewrite_vars — Reset URL rewriter values

Fico no aguardo de outras dicas.

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, aqui eu deixo uma dica que acho importante para todo programdor PHP: CHEQUE A DOCUMENTAÇÃO DA FUNÇÃO NO MANUAL DO PHP!

 

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

 

<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
?>

 

OU SEJA, do jeito que você está fazendo, NÃO VAI DAR CERTO.

 

Use HTML meta tag ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal achei uma solução que funciona:

echo "<script>window.location='princ.php';</script>";

Mas, quando coloco os parametros, ele não direciona.

echo "<script>window.location='princ.php?condicao={$busca[condicao]}&tel={$busca[tel]}&obs={$busca[obs]}';</script>";

O que pode estar errado na sintaxe?

 

Fico no aguardo de sugestões.

 

Grato pela atenção,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian Bruno, não entendi o que devo fazer.

 

Devo substituir o HEADER:

header("Location: princ.php?condicao={$busca['condicao']}&tel={$busca['tel']}&obs={$busca['obs']} ");

pelo trecho que você descreveu?

echo '<pre>';
var_dump( $busca );

É isso?

 

Grato pela atenção,

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas para debug.

 

$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$busca = mysql_fetch_array($result);

adiciona embaixo:

 

$result = mysql_query($query) or die("Erro no SQL: ".mysql_error());
$busca = mysql_fetch_assoc($result);
echo '<pre>';
var_dump( $busca );

exit();

vai aparecer uma string na tua tela

poste ela aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, desculpe entendi e testei.

 

O resultado foi:

array(8) {
 [0]=>
 string(6) "100001"
 ["id"]=>
 string(6) "100001"
 [1]=>
 string(14) "(11) 2222-3333"
 ["tel"]=>
 string(14) "(11) 2222-3333"
 [2]=>
 string(5) "jkhkj"
 ["obs"]=>
 string(5) "jkhkj"
 [3]=>
 string(1) "D"
 ["condicao"]=>
 string(1) "D"
}

 

Fico no aguardo...

 

Grato pela atenção e ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se o javascript estiver desabilitado?

 

Use um ob_start(); no começo e no final um ob_end_flush(); e ve se da certo.

 

Para que essa dica funcionasse, o código deveria ficar assim (PHP 5)

 

<?php
ob_start(); //buffer externo
ob_start(); // interno. vai capturar o buffer que vai ser reescrito
session_start(); //registra a escrita no buffer interno
echo "Aqui poderiam ser as suas funções amigo";
ob_end_flush(); //fecha o primeiro buffer
header("seu header aqui: " )
ob_end_flush(); //fecha o segundo buffer e expõe os dados
session_write_close(); //fecha a sessão que tinha sido aberta para escrever o buffer
?>

 

É bom lembrar que vários browsers tem problemas com mudanças de header utilizando ob_end_flush. O Chrome é um exemplo e o Safari também. Tenta isso amigo, deve funcionar ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá... pode comentar o echo '<pre>'; o var_dump() e o exit();

 

 

seguinte:

$location = "Location: princ.php?condicao={$busca['condicao']}&tel={$busca['tel']}&obs={$busca['obs']}";

echo $location; exit();//depois comente essa linha

header( $location );

poste oque retornar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grato pela ajuda de todos.

 

A dica dada pelo Kabbalista funcionou na primeira execução e voltou a dar o mesmo erro na segunda execução.

 

Testei também a dica acima de William Bruno e na primeira execução funcionou, mas quando executei pela segunda vez o erro voltou.

 

Fico no aguardo de novas sugestões.

 

Grato pela atenção e ajuda de todos,

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.