Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

02-01-2013 21:49

a idéia é eu saber os dados de quem fez o download para que eu possa ter um controle.

NÂO QUERO UM SCRIPT PRONTO QUERO AJUDA PRA SABER EM Q ESTOU ERRANDO.

Tenho um link para download que é pego na lista, que chama um formulario que o usuario deve preencher para acionar o download. A ideia eh acionar o download quando o cara pressionar o submit.

eu vou mostrar como eu fiz


essa é a pagina do formulario


<?php        require_once("settings.php");      $id = $_GET['id'];      $list_files = ""; //string onde todos os registros são anexados     $mysql = mysql_connect($db_host, $db_user, $db_password);     mysql_select_db($db_name, $mysql);     $result = mysql_query("SELECT * ,DATE_FORMAT(Data, '%d/%m/%Y') Data FROM $table_name WHERE id = $id"); // selecionando o tabela e formatando a data de forma legivel e     tendo uma condição para o id     while ($row = mysql_fetch_array($result)) {      $id = $row['id']; //Ele salva o ID, que permite reconhecer uma linha      $url_img = $row['File'];      $nomedoarquivo = $row['nomedoarquivo '];     } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta name="description" content="#" /> <meta name="keywords" content="#" /> <style type="text/css"> @import url(css/style.css); </style> <script language="javascript" type="text/javascript" src="js/mascara.js"></script> <script language="javascript" type="text/javascript" src="js/ValidaData.js"></script> <script> function AbreForm(){ document.getElementById('FORM').style.display="block";     } function FecharForm(){ document.getElementById('FORM').style.display="none";     } </script> </head> <body> <div id="container">     <div id="header"><a href="#"><img src="imagens/logo.png" class="logo" /></a></div>     <div id="content">         <div class="campo-upload">             <div class="nav"><a href="index.php"> Voltar</a></div>             <br />             <form method="post" action="formmail.php" enctype="multipart/form-data">                 <input type="hidden" value="<?php echo $id; ?>" name="id" />                 <!-- busca o id do arquivo -->                 <input type="hidden" value="<?php echo $url_img; ?>" name="url_img" />                 <!-- busca o id do arquivo -->                 <fieldset>                     <legend>PREENCHA O FORMULÀRIO PARA EFETUAR O DOWNLOAD</legend>                     <label for="Empresa">Empresa:</label>                     <input type="text" id="Empresa" name="Empresa" size="30" />                     <br />                     <label for="Cnpj">Cnpj:</label>                     <input type="text" id="Cnpj" name="Cnpj" size="30" />                     <br />                     <label for="Nome">Nome:</label>                     <input type="text" id="Nome" name="Nome" size="30" />                     <br />                     <label for="Cpf">Cpf:</label>                     <input type="text" id="Cpf" name="Cpf" size="30" />                     <br />                     <label for="Endereco">Endereço:</label>                     <input type="text" id="Endereco" name="Endereco" size="30" />                     <br />                     <label for="Email">Email:</label>                     <input type="text" id="Email" name="Email" size="30" />                     <br />                     <label for="Telefone">Telefone:</label>                     <input type="text" id="Telefone" name="Telefone" onkeypress="mascara(this, '##-#########')"  maxlength="12"size="30" />                     <br />                     <label for="Download">Arquivo:</label>                     <input type="text" id="Download" name="Download" size="30" value="<?php echo $nomedoarquivo ?>" />                     <br />                     <label for="Observacoes">Observações:</label>                     <textarea  id="Download"  name="Observacoes" rows="5" cols="28"></textarea>                     <br />                     <br />                     <label for="submit"> </label>                     <input type="submit" name="Enviar" value="Enviar e Fazer download"  tabindex="2"/>                     <input type="reset" name="Limpar" value="Limpar"/>                 </fieldset>             </form>             <br />         </div>         <div class="Reader">             <ul>                 <li> <img src="imagens/reader.png" width="54" height="51" class="avatar" />                     <h3>Reader</h3>                     <p>é sempre uma ótima sugestão para quem procura um leitor para PDF de confiança.<a href="http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.3/ptb/AdbeRdr930_pt_BR.exe">Download</a> </p>                 </li>             </ul>         </div>     </div>     <br /> </div> <!-- fim container--> <div id="footer">     <p></p> </div> <!-- fim footer--> </body> </html> <?php mysql_close($mysql);?>

essa é a pagina do formmail.php

quando eu chamo o formmail.php ele puxa o arquivo que salva no formato que não abre, e não redireciona para a lista de novo


<?php      $url_img = $_POST['url_img'];            header("Pragma: public");           header("Expires: 0");           header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$url_img"); header("Content-Type: application/pdf"); header("Content-Transfer-Encoding: binary"); echo ($url_img); $mensagem = "Empresa: ".$_POST['Empresa']." \n"; $mensagem .= "Cnpj: ".$_POST['Cnpj']." \n"; $mensagem .= "Nome: ".$_POST['nome']." \n"; $mensagem .= "Cpf: ".$_POST['Cpf']." \n"; $mensagem .= "Endereço: ".$_POST['Endereco']." \n"; $mensagem .= "Email: ".$_POST['email']." \n"; $mensagem .= "Telefone: ".$_POST['Telefone']." \n"; $mensagem .= "Download: ".$_POST['Download']." \n"; $mensagem .= "Observações: ".$_POST['Observacoes']." \n"; $mensagem .= "<br>\n Por favor, não responda a esta mensagem pois foi gerada automaticamente e tem caracter informativo apenas.<br>\n"; $headers = "MIME-Version: 1.1\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "Content-type: text/html; charset=utf-8\n";   $headers .= "X-Priority: 1\n"; $emailsender = "getrojob@gmail.com"; //email de quem vai receber $emaildestinatario = "getrojob@gmail.com"; $assunto = "Formulario de inscrição - Licitação"; if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender)) { // Se for Postfix - hospedagem linux $headers .= "Return-Path: " . $emailsender . $quebra_linha; } echo ' <script type="text/JavaScript"> alert("Seu e-mail foi enviado com sucesso. Obrigado"); location.href="index.php" </script> '; ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

02-01-2013 23:25

Já verificou se $url_img está vindo? E também o caminho até esse arquivo? Porque é provável que o script não esteja achando ele.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

02-01-2013 23:33

sim estou passando de um jeito meio que na ganbiarra pelo o <input type="hidden" value="<?php echo $url_img; ?>" name="url_img" /> e no formmail eu pego ele aqui $url_img = $_POST['url_img'];

o arquivo esta armazenado no mysql pego o id e busco o arquivo. pra exibir o nome e o arquivo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

03-01-2013 08:52

Mas o arquivo está em alguma pasta ou na mesma pasta do arquivo php?

Usa como referência esse script http://www.codigosnaweb.com/forum/Scrip ... 5_696.html
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

03-01-2013 13:05

eu vou colocar o link http://www.licita.camarapoa.sp.gov.br da uma olhada pra vcs verem
os arquivo são selecionados antes atraves de uma lista.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

03-01-2013 14:46

Faz o seguinte, pega o script que indiquei, a partir do:

function retorna_extensao($arq){ // função q pega a extensão do arquivo

até o

erro_JS('Erro ao tentar fazer download de arquivo!');
}
}

Define as variáveis $dir e $arq de acordo com suas variáveis. Ai funciona.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 11:21

Opa, valeu pelo o esquema, mas o esquema não esta funcionando. eu recebo o email contendo o nome do arquivo e o download não começa.


olha como eu fiz


<?php      $url_img = $_POST['url_img'];  $dir = 'upload/'; if($url_img!="") { function erro_JS($tex){ // retorno quando houver erro echo '<SCRIPT language="JavaScript"> window.alert('.$tex.'); </SCRIPT>'; exit(); } function retorna_extensao($url_img){ // função q pega a extensão do url_imguivo $arr = explode('.', $url_img); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($url_img); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($dir.$url_img)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($dir.$url_img)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($dir.$url_img)); readfile($dir.$url_img); } else { erro_JS('Erro ao tentar fazer download de url_imguivo!'); } } $mensagem = "Empresa: ".$_POST['Empresa']." \n"; $mensagem .= "Cnpj: ".$_POST['Cnpj']." \n"; $mensagem .= "Nome: ".$_POST['nome']." \n"; $mensagem .= "Cpf: ".$_POST['Cpf']." \n"; $mensagem .= "Endereço: ".$_POST['Endereco']." \n"; $mensagem .= "Email: ".$_POST['email']." \n"; $mensagem .= "Telefone: ".$_POST['Telefone']." \n"; $mensagem .= "Download: ".$_POST['Download']." \n"; $mensagem .= "Observações: ".$_POST['Observacoes']." \n"; $mensagem .= "<br>\n Por favor, não responda a esta mensagem pois foi gerada automaticamente e tem caracter informativo apenas.<br>\n"; // Este sempre deverá existir para garantir a exibição correta dos caracteres $headers = "MIME-Version: 1.1\n";   // Para enviar o e-mail em formato texto com codificação de caracteres Europeu Ocidental (usado no Brasil) $headers .= "Content-type: text/plain; charset=iso-8859-1\n";   // Para enviar o e-mail em formato HTML com codificação de caracteres Europeu Ocidental (usado no Brasil) $headers .= "Content-type: text/html; charset=iso-8859-1\n";   // Para enviar o e-mail em formato HTML com codificação de caracteres Unicode (Usado em todos os países) $headers .= "Content-type: text/html; charset=utf-8\n";   $headers .= "X-Priority: 1\n"; //email do seu domínio hospedado $emailsender = "getrojob@gmail.com"; //email de quem vai receber $emaildestinatario = "getrojob@gmail.com"; $assunto = "Formulario de inscrição - Licitação"; // Envio dos dados do Formulário para seu e-mail: if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender)) { // Se for Postfix - hospedagem linux $headers .= "Return-Path: " . $emailsender . $quebra_linha; } echo ' <script type="text/JavaScript"> alert("Seu e-mail foi enviado com sucesso. Obrigado"); location.href="index.php" </script> '; ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 14:24

Quando o download iria iniciar, é interrompido pelo envio do email. Tenta o seguinte, adiciona

sleep(10);

antes de...

$mensagem = "Empresa: ".$_POST['Empresa']." \n";
$mensagem .= "Cnpj: ".$_POST['Cnpj']." \n";

Isso vai dar um intervalo de 10 segundos antes de iniciar o envio do email. Se der certo, reduza o tempo.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 18:36

mano o negocio ta osso sem os head o esquema envia o email corretamente, e redireciona para a pagina da listagem.

mas quando adicionei os heads não redireciona e esta corropendo os arquivo.

e com o script que vc me indicou simplismente não ativa o download. e recebo o email.

da um ligo no link http://www.licita.camarapoa.sp.gov.br
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 18:54

Eu testei aqui da forma que indiquei, com o sleep. Enviou o arquivo para download, no final enviou o email.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 19:36

segue o script exatamente como foi explicado, mas não funcionou !!! corretamente

<?php      $url_img = $_POST['url_img']; function retorna_extensao($url_img){ // função q pega a extensão do url_imguivo $arr = explode('.', $url_img); $num = count($arr)-1; $ext = $arr[$num]; return $ext; } $ext = retorna_extensao($url_img); switch($ext){ case "pdf": $var = "application/pdf"; break; case "exe": $var = "application/octet-stream"; break; case "zip": $var = "application/zip"; break; case "doc": $var = "application/msword"; break; case "xls": $var = "application/vnd.ms-excel"; break; case "ppt": $var = "application/vnd.ms-powerpoint"; break; case "gif": $var = "image/gif"; break; case "png": $var = "image/png"; break; case "jpeg": case "jpg": $var = "image/jpg"; break; default: $var = "application/force-download"; } if(file_exists($url_img)){ // adição do header para download header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename(url_img)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($url_img)); readfile($url_img); } else { erro_JS('Erro ao tentar fazer download de url_imguivo!'); } sleep(10); $emailsender = $_POST['Email']; //email de quem vai receber if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor"); $headers = "MIME-Version: 1.1".$quebra_linha; $headers .= "Content-type: text/html; charset=utf-8".$quebra_linha; // Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada. $headers .= "From: ". $emailsender . $quebra_linha; $headers .= "Return-Path: " . $emailsender . $quebra_linha; $mensagem = "Solicitação de documento.<br>\n<br>\n"; $mensagem .= "Empresa: ".$_POST['Empresa']."<br>" ; $mensagem .= "Cnpj: ".$_POST['Cnpj']."<br>" ; $mensagem .= "Nome: ".$_POST['Nome']."<br>" ; $mensagem .= "Cpf: ".$_POST['Cpf']."<br>" ; $mensagem .= "Endereço: ".$_POST['Endereco']."<br>" ; $mensagem .= "Email: ".$_POST['Email']."<br>" ; $mensagem .= "Telefone: ".$_POST['Telefone']."<br>" ; $mensagem .= "Download: ".$_POST['Download']."<br>" ; $mensagem .= "Observações: ".$_POST['Observacoes']."<br>" ; $mensagem .= "<br>\n Por favor, não responda a esta mensagem pois foi gerada automaticamente e tem caracter informativo apenas.<br>\n"; //email do seu domínio hospedado $emaildestinatario = "getrojob@gmail.com"; $assunto = "Formulario de inscrição - Licitação"; // Envio dos dados do Formulário para seu e-mail: if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender)) { // Se for Postfix - hospedagem linux $headers .= "Return-Path: " . $emailsender . $quebra_linha; } echo ' <script type="text/JavaScript"> alert("Seu e-mail foi enviado com sucesso. Obrigado"); location.href="index.php" </script> '; ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

04-01-2013 22:14

Baixou o arquivo correto? Porque esse tipo de ação, onde tenta executar download e envio de email ao mesmo tempo sempre um anula o outro.

O que pode ser feito, é fazer um submit pelo get, que poderia ser só para o arquivo, e o envio do email corre na janela normal. Segue uma base

<form action="" onsubmit="window.open('arquivo-do-download.php?img_url=arquivotal.php','','width=400,height=400')" method="post"> <input type="submit"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

05-01-2013 02:54

entendi. mas o script que enviar o email o formmail que contem as rotinas do envio de email ele é ativo quando clico enviar no formulario
e o download onde ficaria no esquema


<form method="post" action="formmail.php" enctype="multipart/form-data"> <input type="submit" name="Enviar" value="Enviar e Fazer download"/>  

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

05-01-2013 08:44

A parte do download ficaria aqui

arquivo-do-download.php?img_url=arquivotal.php

Vai ser aberto uma popup junto com o envio, nessa popup você passa o nome do arquivo a ser baixado.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

05-01-2013 13:53

putz mano tentei o esquema e não deu certo estou fazendo algo errado e não estou vendo o erro.
se voces tiverem paciencia de dar uma olhada no codigo fonte.

esta no link pode até ajudar alguem o codigo fonte. fiz um datagrid simple uma area administrativa apenas não estou conseguindo resolver a questão do download com o envio de email.

http://www.agenciajob3.com.br/sistema%2 ... online.zip
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

05-01-2013 14:13

Não mexo em código porque é personalização, ai eu cobro. Esse é um modelo simples do que indiquei

<form action="outroarquivo.php" onsubmit="window.open('arquivo.php','','width=400,height=400')" method="post"> <input type="submit"> </form>

Na linha do form action, uso o window.open para abrir e janela popup, no caso essa linha vai passar via link o arquivo a ser baixado, que vai carregar via popup.

Já o submit vai enviar os dados via post para outroarquivo.php
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Tópico Autor
Mensagens: 9
Nome: Getúlio
Sexo: Masculino

Enviar e-mail e download do arquivo ao mesmo tempo

06-01-2013 12:49

^^ putz pode cre tenho que declarar o id e o caminho do doc
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Enviar e-mail e download do arquivo ao mesmo tempo

06-01-2013 13:06

;)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado