Ajuda com "header"

Enviada por Aprendiz 
Aprendiz
Ajuda com "header"
04 de July de 2012 às 09:57AM
Segue logo abaixo parte de um script que gera um arquivo e consequentemente faz download no cliente. Após esse processo quero enviar um email, mas não sei como fazer. Tento enviar um email padronizado, mas a coisa acaba se misturando por completo. O email se fundo com o conteuto do arquivo ou vice-versa e acabo tendo que usa somente a parte que geração. Não estou sabendo trata o processo logo após o fim do "download" no cliente.

Força o download do conteudo:
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=ARQUIVO.TXT");
header("Pragma: no-cache");
header("Expires: 0");

Salva o arquivo:
print $string;

Pergunta:
Como devo redefinir o meu "header" para que logo abaixo do meu "print $string" eu possa definir um email padronizado ou redirecionar para um outro script de email, e se for o caso até um outro script/pagina atualizando (refresh)? Contruir os scripts de emails e outros mais eu sei como fazer, só estou perdido na questão do "header" mesmo.

Espero que algum dos colegas possa me dá uma orientação.

Grato a todos e fico no aguardo.
Michel
Re: Ajuda com "header"
04 de July de 2012 às 11:14AM
já tentou enviar o e-mail antes do header?
Aprendiz
Re: Ajuda com "header"
04 de July de 2012 às 11:41AM
Michel Escreveu:
-------------------------------------------------------
> já tentou enviar o e-mail antes do header?

Tá aí o "que" da questão!

Só quero enviar o email se realmente o "download" for realizado. Entendeu?

Aguardo seu comentário.
Michel
Re: Ajuda com "header"
04 de July de 2012 às 05:37PM
Dá pra fazer assim:
Antes do header voce pega o tamanho dos arquivo; com curl é facinho.

depois do header voce pode usar a função stream_get_line em um comando while.

while (!feof($fp) && (connection_status()==0)) {
$recv = @stream_get_line($fp, 1024, "");
@print $recv;
@flush();
@ob_flush();
$final .= $final + 1024;
}
//aqui voce compara
if($tamanho => '1024'){
//envia email
}

é só uma ideia. não fiz teste.
Michel
Re: Ajuda com "header"
04 de July de 2012 às 05:39PM
correção:

while (!feof($fp) && (connection_status()==0)) {
$recv = @stream_get_line($fp, 1024, "");
@print $recv;
@flush();
@ob_flush();
$final .= $final + 1024;
}
//aqui voce compara
if($tamanho => $final){
//envia email
}
Aprendiz
Re: Ajuda com "header"
05 de July de 2012 às 09:23AM
Me desculpa, mas te confesso não entendi a lógica da rotina.

Meu caso:

Quando o usuário clica no link/botão, o script faz um "select" no db conforme parametros existentes, e com os dados contidos em uma determinada "coluna" da tabela em questão, o script criará o arquivo texto na máquina cliente. O usuário apenas seleciona aonde ele quer realmente salvar. O problema é que depois do "salvamento" eu não tenho mais controle, ou seja, me perco todo. Como eu quero enviar um email somente se o usuário salvar o arquivo aí a coisa complica, pois se monto o email, não sei porque, ele se mistura com o conteúdo do referido arquivo.

Muito obrigado pela sua atenção e aguardo o seu comentário.

PS.: Penso que o seu exemplo não dará certo, mas vou testa assim mesmo.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.