kika 0 Denunciar post Postado Agosto 28, 2009 Estou fazendo um formulário mas estou meio confusa, pois é um formulário sem Banco de Dados e que cadastra as informações do usuario em uma página e na próxima faz o upload da foto(.jpg e .gif) e envia essa foto para o meu email e com envio de uma auto-resposta para o email que o usuário digitou. Então tenho as paginas: formulario.php (o usuário digita seus dados) e upload_foto.php (onde o usuario escolhe a foto que vai enviar) e o envio_sucesso.php (que exibe a mensagem de envio com sucesso) Minha dúvida é: Como o envio_sucesso.php pega esses dados de formulários anteriores. Tenho que colocar no form action do formulario.php chamando o upload_foto.php e no form action do upload_foto.php chamando o envio_sucesso.php ???? Tenho tb um radio button para a pessoa escolher o sexo (feminino/masculino) e um Checkbox para concordar com os termos...como pegar esses campos. Esses dados serão todos enviados para o meu email, e o que vai para o usuario é só uma mensagem de Aguarde que entraremos em contato. Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 28, 2009 O meu código de upload funciona, vou postar aqui, mas o que ele faz é salvar em uma pasta do ftp somente e não pega os dados do formulário cadastrado anterior...que é exatamente o que não sei como fazer. Segue o upload_foto.php <? // Prepara a variável caso o formulário tenha sido postado $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; $config = array(); // Tamano máximo da imagem, em bytes $config["tamanho"] = 7000; // Largura Máxima, em pixels //$config["largura"] = 350; // Altura Máxima, em pixels //$config["altura"] = 250; // Diretório onde a imagem será salva $config["diretorio"] = "fotos/"; // Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente.. // Função Recursiva function nome($extensao) { global $config; // Gera um nome único para a imagem $temp = substr(md5(uniqid(time())), 0, 10); $imagem_nome = $temp . "." . $extensao; // Verifica se o arquivo já existe, caso positivo, chama essa função novamente if(file_exists($config["diretorio"] . $imagem_nome)) { $imagem_nome = nome($extensao); } return $imagem_nome; } if($arquivo) { $erro = array(); // Verifica o mime-type do arquivo para ver se é de imagem. if(!eregi("^image\/(pjpeg|jpeg|gif)$", $arquivo["type"])) { $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg ou gif. Envie outro arquivo"; } else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " kb. Envie outro arquivo"; } } if(!sizeof($erro)) { // Pega extensão do arquivo, o indice 1 do array conterá a extensão preg_match("/\.(gif|jpg|jpeg){1}$/i", $arquivo["name"], $ext); // Gera nome único para a imagem $imagem_nome = nome($ext[1]); // Caminho de onde a imagem ficará $imagem_dir = $config["diretorio"] . $imagem_nome; // Faz o upload da imagem move_uploaded_file($arquivo["tmp_name"], $imagem_dir); } } ?> <? // Imagem foi enviada com sucesso, mostra mensagem de SUCESSO if($arquivo && !sizeof($erro)) { echo "<img src=\"" . $imagem_dir . "\" border=0><BR><BR>Sua foto foi enviada com sucesso!"; } // Ocorreu algum erro ou ainda o formulário não foi postado else { ?> <form action="<?echo $PHP_SELF?>" method=post enctype="multipart/form-data"> <table border=0 cellpadding=2 cellspacing=1 align=left> <? if(sizeof($erro)) { echo "<tr><td colspan=2 bgcolor=#FFFFFF><B><U>Ocorreu(am) o(s) seguinte(s) erro(s):</u><BR>"; foreach($erro as $err) { echo " - " . $err . "<BR>"; } echo "</B></td></tr>"; } ?> <tr> <td align=center>Enviar Foto: <input type=file size=30 name=foto /></td> </tr> <tr> <td align=center><span style="margin-top: 0; margin-bottom: 0"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"> <input type="image" src="bt_enviar.png" value="ENVIAR" alt="Enviar Foto" /> </font></font></font></font></span></td> </tr> </table> </form> <? } ?> Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 29, 2009 Alguém tem alguma idéia de como posso fazer isso, eu já deletei esse script de upload pq já acho que ele não serve para o que quero, já até procurei vários scripts na internet sobre formulário de contato com envio de arquivo anexo e não acho quase nada, e os que acho não funcionam...nada acontece. O formulário de contato onde usuário digita seus dados(Nome,endereço,telefone,email...) é uma página (formulario.php) e em uma outra página é onde o usuário faz o upload da imagem que é o upload_foto.php O que quero é tipo o que tem no site da Whiskas, a diferença é que meu selecionar arquivo é em outra páginawhiskas Eu não sei como fazer, não sei qual action no formulário de contato devo colocar e aonde devo colocar o script que envia os dados fornecidos pelo usuário e o arquivo que o usuário optou para envio para que tudo isso possa ser enviado para o meu email. Alguém me dá uma luz, uma dica, um tutorial que eu possa ter como referencia? Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo de Andrade 2 Denunciar post Postado Agosto 29, 2009 boa noite kika, esse script so faz o upload de imagens, para você receber os dados do formulario, você pode fazer atraves dos metodos : $_POST[""]; // ou $_GET[""]; // ou $_REQUEST[""]; quais dados você quer capturar ? posta o script do formulario. Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 29, 2009 Oi Tomb Raider...boa noite, vou postar meu código do formulário aqui. <table width="760" border="0" cellspacing="10" cellpadding="0"> <tr> <td colspan="2" valign="top"><p class="titulo"> </p> <form id="form1" name="form1" method="post" action="upload_foto.php"> <table width="545" border="0"> <tr> <td width="230">Nome:</td> <td colspan="2"><label> <input type="text" name="nome" id="nome" /> </label></td> </tr> <tr> <td>Data de Nascimento:</td> <td colspan="2"><label> <input name="data_nasc" type="text" id="data_nasc" size="15" maxlength="10" /> </label></td> </tr> <tr> <td>Sexo:</td> <td width="87"><label> <input type="radio" name="sexo" id="radio3" value="Feminino" /> Feminino</label></td> <td width="214"><label> <input type="radio" name="sexo" id="radio4" value="Masculino" /> Masculino</label></td> </tr> <tr> <td>Endereço:</td> <td colspan="2"><label> <input name="endereco" type="text" id="endereco" size="50" /> </label></td> </tr> <tr> <td>Cidade:</td> <td colspan="2"><label> <input type="text" name="cidade" id="cidade" /> </label></td> </tr> <tr> <td>CEP:</td> <td colspan="2"><label> <input type="text" name="cep" id="cep" /> </label></td> </tr> <tr> <td>Telefone:</td> <td colspan="2"><label> <input type="text" name="telefone" id="telefone" /> </label></td> </tr> <tr> <td>Email:</td> <td colspan="2"><label> <input type="text" name="email" id="email" /> </label></td> </tr> </table> <table width="543" border="0"> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"><p>Li e estou de acordo com o regulamento</p> </td> </tr> <tr> <td colspan="3"><label> <input name="concordo" type="checkbox" id="concordo" value="concordo" /> </label> Concordo</td> </tr> <tr> <td width="41"> </td> <td width="567"><div align="center"><input type="image" src="images/bt_avancar.png" alt="Avançar" /></div></td> <td width="104"> </td> </tr> </table> </form> E aqui a página onde tenho o form para fazer upload (enviar.php) <!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>Untitled Document</title> </head> <body> <table width="559" border="0"> <tr> <td>Selecione sua foto <label></label></td> </tr> <tr> <td><label>(formatos jpg, gif ou png) - (limite máximo permitido é de 600kb)</label></td> </tr> <tr> <td><form action="" method="post" enctype="multipart/form-data"> <table border="0" cellpadding="2" cellspacing="1" align="left"> <tr> <td align="center">Enviar Foto: <input type="file" size="30" name="foto" /></td> </tr> <tr> <td align="center"><span style="margin-top: 0; margin-bottom: 0"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"> <input type="image" src="images/bt_enviar.png" value="ENVIAR" alt="Enviar Foto" /> </font></font></font></font></span></td> </tr> </table> </form> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> </table> </body> </html> O script do upload que postei aqui apaguei e não estou usando pois ele faz o upload e joga a imagem para uma pasta para o ftp, mas o que preciso é que ele envie a imagem para o meu email. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 29, 2009 Olha, não assisti ainda, mas o tema é o mesmo. Vale a pena dar uma olhada. Video Aula sobre enviar e-mail com anexo Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 30, 2009 Matias Rezende, Muito obrigada...muito boa essa video aula, eu fiz o código mas ele não pega os dados do meu formulário, o anexo vem com 0kb e ele pega não sei como o email webmaster do meu provedor como remetente e quando tento pegar o $email pois quero que meu remetente seja o email que o usuário forneceu o código nem funciona, aí ele não envia mais nada. Não sei mais o que fazer Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 30, 2009 O formulário está com enctype correto? Deve ser multipart/form-data? Imprima o $_FILES e o $_POST para ver se você está usando os nomes corretamente. echo '<pre>'; print_r($_FILES); print_r($_POST); Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Agosto 30, 2009 da pra fazer isso tranquilo tb com o phpmailer.... Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 30, 2009 Matias, fiz o que você falou e mostrou isso na tela...mas não entendo o que significa Array ( [arquivo] => Array ( [name] => foto_kika.jpg [type] => image/pjpeg [tmp_name] => D:\webs\utils\data\php\uploads\phpBE69.tmp [error] => 0 [size] => 86825 ) ) Array ( ) Igor...eu nunca usei o phpmailer não faço ideia de como usar Vou postar o codigo da página que tem o Upload e que processa tudo aqui: <?php //verifica se o formulrio foi acionado if($_GET['acao'] == 'enviar'){ //resgata o que foi enviado do formulrio $nome_part = $_POST["nome_part"]; $data_nascimento = $_POST["data_nascimento"]; $sexo_part = $_POST["sexo_part"]; $nome_resp = $_POST["nome_resp"]; $from = $_POST["email"]; $arquivo = $_FILES["arquivo"]; //para quem vai ser enviado o e-mail $para = "kika@meuprovedor.com.br"; //boundary o que identifica cada parte da mensagem $boundary = "XYZ-".date("dmYis")."-ZYX"; $fp = fopen($arquivo["tmp_name"], "rb"); //abri o arquivo enviado $anexo = fread($fp, filesize($arquivo["tmp_name"])); //pega sua largura $anexo = base64_encode($anexo); //codifica para base 64 fclose($fp); //fecha a conexo //cabealho da mensagem $headers = "MIME-Version: 1.0 \n"; $headers .= "Content-Type: multipart/mixed; "; $headers .= "boundary=\"$boundary\" \r\n"; $headers .= "$boundary\n"; //corpo do email $corpoMSG = "--$boundary \n"; $corpoMSG .= "Content-Type: text/html; charset=\"iso-8859-1\" \n"; $corpoMSG .= "Content-Transfer-Encoding: 8bits \n\n"; //mensagem enviada pelo formulrio $corpoMSG .= "<strong>Dados do Participante: </strong> <br> <strong>Nome: </strong> $nome_part <br> <strong>Data de Nascimento: </strong> $data_nascimento <br> <strong>Sexo: </strong> $sexo_part <br> <strong>Dados do Responsvel: </strong> <br> <strong>Nome do Responsvel: </strong> $nome_resp <br> <strong>Email: </strong> $email \r\n"; $corpoMSG .= "--$boundary \n"; //Anexo $corpoMSG .= "Content-Type: ".$arquivo["type"]."; name=\"".$arquivo['name']."\" \n"; $corpoMSG .= "Content-Transfer-Encoding: base64 \n"; $corpoMSG .= "Content-Disposition: attachment; filename=\"".$arquivo['name']."\" \r\n"; $corpoMSG .= "$anexo \n"; $corpoMSG .= "--$boundary \n"; //envia o e-mail mail($para, "Concurso", $corpoMSG, $headers); echo '<pre>'; print_r($_FILES);print_r($_POST); } ?> <!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>Concurso</title> <script src="Scripts/swfobject_modified.js" type="text/javascript"></script> <link href="style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="Concurso" content="no-cache"/> <style type="text/css"> <!-- body { background-image: url(images/fundo.jpg); } .style1 {color: #661C78} --> </style></head> <body> <A NAME="topo"></A> <div id="div-logo"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="760" height="350"> <param name="movie" value="menu.swf" /> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <param name="swfversion" value="8.0.35.0" /> <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you dont want users to see the prompt. --> <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. --> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="menu.swf" width="760" height="350"> <!--<![endif]--> <param name="quality" value="high" /> <param name="wmode" value="transparent" /> <param name="swfversion" value="8.0.35.0" /> <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. --> <div> <h4>Content on this page requires a newer version of Adobe Flash Player.</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="350" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object></div> <div id="div-corpo"> <table width="760" border="0" cellspacing="10" cellpadding="0"> <tr> <td colspan="2" valign="top"><p class="titulo">Inscrição</p> <p class="subtitulo">Envie sua foto</p> <table width="559" border="0"> <tr> <td>Selecione sua foto <label></label></td> </tr> <tr> <td><label>(formatos jpg ou gif) - (limite máximo permitido é de 600kb)</label></td> </tr> <tr> <td> <form action="?acao=enviar" method="post" enctype="multipart/form-data" name="form1" id="form1"> <table border="0" cellpadding="2" cellspacing="1" align="left"> <tr> <td align="center">Enviar Foto: <input type="file" name="arquivo" id="arquivo" /></td> </tr> <tr> <td align="center"><span style="margin-top: 0; margin-bottom: 0"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"><font face="Tahoma"> <input type="submit" value="Enviar" /> </font></font></font></font></span></td> </tr> </table> </form> </td> </tr> <tr> <td> </td> </tr> <tr> <td> </td> </tr> </table> </td> </tr> <tr> <td width="485" valign="top"> </td> <td width="245" valign="top" class="espaco-col-dir"> </td> </tr> <tr> <td colspan="2" align="center" valign="top" class="campoprocurar"><img src="images/risco.gif" width="100%" height="5" /></td> </tr> <tr> <td colspan="2" align="center" valign="top" class="campoprocurar"><a href="index.php" target="_self">home</a> | <a href="oconcurso.php" target="_self">o concurso</a> | <a href="premios.php" target="_self">prêmios</a> | <a href="regulamento.php" target="_self">regulamento</a> |<a href="inscricoes.php" target="_self"> inscrições</a> | <a href="selecionados.php" target="_self">selecionados</a><br /> <span class="postcidade"> 2009 - Todos os direitos reservados</span></td> </tr> </table> </div> </body> </html> Eu testei pelo Firefox agora e acontece pior, ao invés da imagem vem um arquivo .txt vazio Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 30, 2009 Eu fiz mais um teste agora...coloquei o upload na mesma página do preenchimento do formulário, aí ele consegue pegar as informações preenchidas no formulário mas vem um arquivo em .txt com 0kb. Já testei com outros arquivos sem ser imagem e acontece a mesma coisa, já dei permissão na pasta tmp e uploads do provedor e nem assim funciona. Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Agosto 30, 2009 Achei um outro código e comecei a me basear por ele, está funcionando, pegando os dados preenchidos no formulário e enviando o arquivo perfeitamente, só que tive que colocar na mesma página o formulário e parte de upload, senão não funciona. O problema agora é que preciso fazer com que só pegue imagens .jpg e .gif e com tamanho até 600kb, mas não sei como fazer isso. O que acho é que seja nessa linha (Content-type: multipart/mixed;) que devo alterar isso mas não sei como. vou postar o código aqui. envia_dados.php <?php //pego os dados enviados pelo formulario $nome = $_POST["nome"]; $data_nascimento = $_POST["data_nascimento"]; $sexo_part = $_POST["sexo_part"]; $nome_resp = $_POST["nome_resp"]; $email_from = $_POST["email_from"]; $para = "kika@meuprovedor.com.br"; //valido os emails if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email_from)){ echo "<center>Digite um email valido</center>"; echo "<center><a href=\"java script:history.go(-1)\"><center>Voltar</center></a>"; exit; } $arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE; if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){ $fp = fopen($_FILES["arquivo"]["tmp_name"],"rb"); $anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"])); $anexo = base64_encode($anexo); fclose($fp); $anexo = chunk_split($anexo); $boundary = "XYZ-" . date("dmYis") . "-ZYX"; $mens = "--$boundary\n"; $mens .= "Content-Transfer-Encoding: 8bits\n"; $mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; //plain $mens .= "Nome: $nome<br>Data de Nascimento: $data_nascimento<br>Sexo: $sexo_part<br>Nome do Responsável: $nome_resp<br>Email: $email_from\n"; $mens .= "--$boundary\n"; $mens .= "Content-Type: ".$arquivo["type"]."\n"; $mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n"; $mens .= "Content-Transfer-Encoding: base64\n\n"; $mens .= "$anexo\n"; $mens .= "--$boundary--\r\n"; $headers = "MIME-Version: 1.0\n"; $headers .= "From: \"$nome\" <$email_from>\r\n"; $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n"; $headers .= "$boundary\n"; //envio o email com o anexo mail($para,"Concurso",$mens,$headers); //echo"Email enviado com Sucesso!"; header("location: http://www.meusite.com.br/inscricao.php"); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Setembro 1, 2009 Alguém sabe como posso fazer com que só pegue imagens .jpg e .gif e com tamanho até 600kb, não sei como fazer isso. Já procurei td e não acho nada Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Setembro 1, 2009 Olha, como foi sugerido, é mais fácil usar o PHPmailer. Aqui tem um exemplo. http://forum.imasters.com.br/index.php?/topic/349201-enviar-email-com-anexos-usando-phpmailer/ Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
kika 0 Denunciar post Postado Setembro 2, 2009 Carlos Eduardo, mas nesse exemplo ele não mostra como pegar só imagens .jpg e .gif e com tamanho restrito de até 600kb. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Setembro 2, 2009 Daí é só adaptar. Você não vai encontrar um código EXATAMENTE como você quer. Algumas referências http://forum.imasters.com.br/index.php?/topic/159362-classe-phpmailer/ Para o formato, é só testar antes de entrar na classe. Dê um print_r($_FILES) no início do código e veja qual deles mostra o formato do arquivo. Daí você testa se está dentro do que você quer. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
demarcio 0 Denunciar post Postado Dezembro 12, 2010 Olha, como foi sugerido, é mais fácil usar o PHPmailer. Aqui tem um exemplo. http://forum.imasters.com.br/index.php?/topic/349201-enviar-email-com-anexos-usando-phpmailer/ Carlos Eduardo Boa Noite, Matias,conforme você sugeriu eu peguei a classe phpmailer e consegui implantar beleza, mas não consegui adicionar campos extras, como cidade, estado, telefone, etc...quer dizer add os campos consegui, não consegui envia-los junto com a mensagem, você tem uma dica de como fazer isso? Desde ja agardeço. Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Dezembro 13, 2010 A idéia é simplse. Primeiro Passo: Envia as informações de $_POST e grava em uma $_SESSION. $_SESSION['Post'] = $_POST Segundo Passo: Envia a foto capturando $_FILES e tratando os dados. Ou se não tratando a imagem nas especificações que deseja receber (formato, dimensões). Para isso gosto muito da class Canvas. Dai só pegar a class PHPMailer para fazer o envio do e-mail. Anexa a imagem pelo caminho da imagem que você gerou. E inclui no corpo do e-mail as informações da $_SESSION. O envio do e-mail retornando true. Exibe a mensagem que o e-mail foi enviado com sucesso. ;) Compartilhar este post Link para o post Compartilhar em outros sites