Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) O maldito headers already sent, por causa de um simpl


Rubiz Gardini

Pergunta

Olá pessoal, td bem?

Eu to com um problema de "headers already sent", "cannot modify headers information", blablabla...

Eu tenho essa função rodando nesse momento:

function send($id, $sleep, $init, $offset, $email, $html, $total_mails )
    {
        $subject = utf8_encode('Newsletter Bandeirantes Galvânica');
    
        $headers = "Content-type: text/html; charset=utf-8\n";
        $headers .= utf8_encode('From: Bandeirantes Galvânica') . "\r\n" .
                    'Reply-To: contato@bandeirantesgalvanica.com.br';
        
        // sending mail
        if ( sizeof( $email ) )
        {
            for ($i=$init; $i < $offset && $i < $total_mails; $i++)
            {
                if ( mail($email[$i]->email, $subject, $html, $headers) ) 
                {
                    $this->Sender_model->count_mail_sent($id);
                    echo $i+1 . ' - ' . $email[$i]->email . '<br />';
                }
                
                if ( $i == $offset - 1 ) 
                {
                    $this->Sender_model->increment_sleep($id, $sleep);
                    echo '<p style="color:Red;">=== INTERVALO ===</p>';
                }
                
                if ( $i == $total_mails - 1 )
                {
                    redirect( '/sender/display_success/' );
                }
            }
        }
        else
        {
            echo 'Não há e-mails escolhidos.';
        }
    }
Ele reclama da linha onde tem o echo
echo $i+1 . ' - ' . $email[$i]->email . '<br />';

, ele chega a gravar no BD a informação de que todos os e-mails foram disparados, mas na hora do redirect (q nada mais é no framework um header location), ele dá esse erro reclamando desse echo...

Puxa aplicação tá quase pronta, se não fosse por isso tava td certo... o que faltou?

O q posso fazer pra driblar esse problema?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Três alternativas:

1 - Use ob_start(); (na primeira linha) e ob_end_flush(); (na última linha) para tentar segurar o envio do cabeçalho (que acontece quando o primeiro dado é impresso na tela);

2 - Não exiba nada antes de tentar redirecionar;

3 - Use javascript para redirecionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, eu gosto desse ob_start() e ob_end_flush() pois já resolveram meu problema uma vez;

Vou tentar inicialmente com eles, mas seria pra colocar na primeira linha do código inteiro e na ultima linha do código inteiro?

O for não interfere negativamente nisso?

E se fosse para eu mandar o php soltar um javascript na página, como seria esse código? lembro q tentei com alert uma vez funcionou no FF e no IE não...

Editado por Rubiz Gardini
Link para o comentário
Compartilhar em outros sites

  • 0

Sim, antes de tudo e depois de tudo... englobando HTML/JS/PHP/CSS... etc...

Quanto ao JS:

echo "
<script language=\"JavaScript\">
alert('Alerta');
window.location='pagina tal.php';
</script>
";

Adicionei o alert só pra exemplificar, é só remover ele no seu caso...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Eserra, é você que salva o meu dia mesmo, mas eu usei o ob_start() ob_end_flush() de uma forma diferente, eu estou programando em classe, e você sabe que tem algumas diferenças em programar em classe, então eu coloquei ambas funções em 2 métodos que interagiam com a página nesse momento... ok?

Obrigadão Edgaaaaar você foi o meu herói hoje!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...