Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Já li diversos posts como o http://forum.imasters.com.br/topic/507098-erro-warning-session-start/?p=2005699
Meu erro é o "Cannot modify header information - headers already sent" que acontece por ter html antes do meu 'header("location: index.php?msg=3");'
Tenho uma página com uma tabela contendo um menu e uma área central que é exibido o conteúdo principal redirecionado pelo menu. Em uma dessas páginas que é inserida pelo 'include', tem uma verificação de permissão que caso não seja atingida, vai redirecionar o usuário para outra página.
No servidor local ele funciona normalmente, mas no servidor online ele da o erro e exibe a página mesmo o usuário não tendo permissão (pq não é redirecionado).
Eu poderia colocar um 'die();' mas eu queria o redirecionamento.
Vai dar certo se eu substituir o php 'header()' pelo javascript 'location.href', mas isso seria gambiarra?
echo "
<script language= 'JavaScript'>
location.href=\"index.php?msg=3\"
</script>
";
Alguma outra idéia?
Depois que você falou sobre o ob_end_flush(); eu vi esse exemplo:
http://www.php.net/manual/pt_BR/outcontrol.examples.basic.php
Pelo link que eu passei no primeiro post, achava que só precisava do ob_start()
Funcinou perfeitamente da maneira que você falou. Muito obrigado.
No entanto, isso é gambiarra.
Se você precisa enviar um header de redirecionamento, não ecoe/imprima nada antes desse de invocar esse header().
Se esse header() estiver condicionado à alguma coisa, o que poderia fazê-lo não ser disparado (casos equivocados de mostrar erro exclusivamente com JavaScript), tudo aquilo que deverá aparecer ao usuário no caso de haver sucesso deve ser armazenado numa variável para que esta seja ecoada/impressa depois de tal condição, evitando que esse problema apareça de forma inesperada.
No entanto, isso é gambiarra.
[2]
Entrei no tópico só para disser isso. De resto, vc já deu a moral.
Olá meu amigo,
coloca na index o comando.
ob_start();
e no final caso fatiado rodape no final de tudo.
ob_end_flush();
Este post solucionou a sua dúvida, peço que coloque como resolvido e me der um ponto positivo de reputação para que eu possa continuar ajudando outros colegas como você.
Caso não solucione o seu problema, peço que coloque a sua dúvida abaixo.
Att: João Paulo Sousa Supriano