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

Gurzi

Usando um include e um header

9 mensagens neste tópico

Malta tenho um file chamado settings.php

que tem os dados do servidor.

Depois tenho o index.php que tem um form que on submit vai para o registo.php..

O registo.php ve se tem algum erro o formulario e para isso liga-se à bd(evitar nicks iguais, etc)

ora a primeira coisa que faço é <?php include("settings.php");

depois tem o código todo e chega a uma parte:

if($validacao == 0)

{

IF ($PASSWORD != $PASSWORD2)

{

$situacao= 1;

HEADER('LOCATION: http://'. $endereco .'/index.php?situacao='.$situacao);

exit();

}

no qual o browser me dá este erro

Warning: Cannot modify header information - headers already sent by (output started at /home/gendra/public_html/registo.php:4) in /home/gendra/public_html/registo.php on line 29

Ou seja, conflito de headers, mas se tirar o include e por directamente a info do server no registo.php ja funciona tudo na normalidade...

Soluções ?

Já me disseram o ob_start();

mas não consegui me entender..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o teu problema está no    HEADER('LOCATION: http://'. $endereco .'/index.php?situacao='.$situacao); e não no include. Podes sempre substituir o header redirect por um meta redirect.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então mas se eu tirar o include();

ele já funciona às maravilhas...

como uso isso do meta redirect ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<META HTTP-EQUIV="refresh" content="X;URL=internet_address">

X é o nº de segundos até redireccionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas eu quero passar variaveis por url, acho que esse método não me interessa!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

echo '<META HTTP-EQUIV="refresh" content="0;URL=http://'. $endereco .'/index.php?situacao='.$situacao.'">';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

realmente, funcionou ;)

tens uma explicação lógica ?

o ob_start() também não podia ajudar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em 99% dos casos, esse erro da quando ja existe ouput na pagina... ao usares a função header() certifica-te que antes dela, apenas existe codigo php e nada de html ou nem echo ou print que faça escrever qq coisa na pagina, não pode existir nenhum tipo de output na pagina.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

em 99% dos casos, esse erro da quando ja existe ouput na pagina... ao usares a função header() certifica-te que antes dela, apenas existe codigo php e nada de html ou nem echo ou print que faça escrever qq coisa na pagina, não pode existir nenhum tipo de output na pagina.

Mas para esses casos também se pode utilizar ob_start(); ;)

@Gurzi podes tentar utilizar ob_start(); e ob_clean();

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