Ir ao conteúdo
  • Cadastre-se
diegorj2

Formulário em PHP que envie anexo.

Recommended Posts

Olá pessoal!

Dei uma procurada no google e encontrei alguns modelos de formulários em php com envio de anexo. Tentei adaptar para o formulário que eu tenho aqui, mas não consegui, por isso peço ajuda a quem tenha conhecimento na linguagem.

O meu formulário em PHP é este:

Página 1 - formulario.html


<form name="form1" method="post" action="form2.php">
<table width="434" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="8">  </td>
<td colspan="3"><font size="2" face="Verdana"><strong>Faça
um orçamento sem compromisso</strong></font></td>
</tr>
<tr>
<td> </td>
<td colspan="3"> </td>
</tr>
<tr>
<td> </td>
<td width="67"><font size="2" face="Verdana"><strong>Nome:</strong></font></td>
<td width="8">  </td>
<td width="351"><table width="303" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="302"><div align="right">
<input name="nome" type="text" id="nome" size="44" maxlength="50">
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td><strong><font size="2" face="Verdana">E-mail:</font></strong></td>
<td> </td>
<td><table width="303" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="302"><div align="right">
<input name="email" type="text" id="email" size="44" maxlength="50">
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td><strong><font size="2" face="Verdana">Telefone:</font></strong></td>
<td> </td>
<td><table width="301" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="94"><div align="right"><font size="2" face="Verdana"><strong>DDD:</strong></font></div></td>
<td width="10"><div align="right">  </div></td>
<td width="30"><div align="right">
<input name="ddd" type="text" id="ddd" size="5" maxlength="3">
</div></td>
<td width="9"><div align="right">  </div></td>
<td width="62"><div align="right"><strong><font size="2" face="Verdana">Número:</font></strong></div></td>
<td width="8">  </td>
<td width="90"><div align="right">
<input name="numero" type="text" id="numero" size="14" maxlength="13">
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td><strong><font size="2" face="Verdana">Cidade:</font></strong></td>
<td> </td>
<td><table width="301" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="176"><div align="right">
<input name="cidade" type="text" id="cidade" size="23" maxlength="50">
</div></td>
<td width="10">  </td>
<td width="55"><div align="right"><strong><font size="2" face="Verdana">Estado:</font></strong></div></td>
<td width="9">  </td>
<td width="53"><div align="right"><font size="2" face="Verdana">
<select name="estado" id="estado">
<option value="AC" selected>AC</option>
<option value="AL">AL</option>
<option value="AM">AM</option>
<option value="AP">AP</option>
<option value="BA">BA</option>
<option value="CE">CE</option>
<option value="DF">DF</option>
<option value="ES">ES</option>
<option value="GO">GO</option>
<option value="MA">MA</option>
<option value="MG">MG</option>
<option value="MS">MS</option>
<option value="MT">MT</option>
<option value="PA">PA</option>
<option value="PB">PB</option>
<option value="PE">PE</option>
<option value="PI">PI</option>
<option value="PR">PR</option>
<option value="RJ">RJ</option>
<option value="RN">RN</option>
<option value="RO">RO</option>
<option value="RR">RR</option>
<option value="RS">RS</option>
<option value="SC">SC</option>
<option value="SE">SE</option>
<option value="SP">SP</option>
<option value="TO">TO</option>
</select>
</font> </div></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td colspan="3"><table width="359" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="80"><strong><font size="2" face="Verdana">Seu site
<br>
(opcional):</font></strong></td>
<td width="9"><div align="left">  </div></td>
<td width="270"><div align="right">
<input name="site" type="text" id="site" value="http://" size="43" maxlength="50">
</div></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td colspan="3"><table width="363" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="80"><strong><font size="2" face="Verdana">Segmento:</font></strong></td>
<td width="10">  </td>
<td width="273"><input name="segmento" type="text" id="segmento" size="43" maxlength="40"></td>
</tr>
</table></td>
</tr>
<tr>
<td><font size="1" face="Verdana"> </font></td>
<td colspan="3"><font size="1" face="Verdana"> </font></td>
</tr>
<tr>
<td> </td>
<td colspan="3"><strong><font size="2" face="Verdana">Mensagem: <font size="1">(descreva
detalhadamente as necessidades)</font></font></strong></td>
</tr>
<tr>
<td> </td>
<td colspan="3"><table width="350" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="350"><textarea name="proposta" cols="44" rows="5" id="proposta"></textarea></td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
<td colspan="3"> </td>
</tr>
<tr>
<td> </td>
<td colspan="3"><div align="center">
<input type="submit" name="Submit" value="Enviar Orçamento">
<input type='hidden' name='para' [EMAIL="value='contato@avantesites.com.br'"]value='contato@avantesites.com.br'[/EMAIL]>
<input type='hidden' name='assunto' value='Orcamento'>
<input type='hidden' name='retorno' value='sucesso.html'>
</div></td>
</tr>
</table>
</form>

Página 2 - form2.php (a página .html chama esta página .php)


<?php
$para=$_POST['para'];
$assunto=$_POST['assunto'];
$retorno=$_POST['retorno'];
$nome=$_POST['nome'];
$email=$_POST['email'];
$ddd=$_POST['ddd'];
$numero=$_POST['numero'];
$cidade=$_POST['cidade'];
$estado=$_POST['estado'];
$site=$_POST['site'];
$segmento=$_POST['segmento'];
$proposta=$_POST['proposta'];
if (isset($para)){
$texto .= "<strong>Nome:<br></strong>".$nome."";
$texto .= "<br><strong>E-mail:</strong><br>".$email."";
$texto .= "<br><strong>DDD:</strong><br>".$ddd."";
$texto .= "<br><strong>NumeroTelefone:</strong><br>".$numero."";
$texto .= "<br><strong>Cidade:</strong><br>".$cidade."";
$texto .= "<br><strong>Estado:</strong><br>".$estado."";
$texto .= "<br><strong>Site:</strong><br>".$site."";
$texto .= "<br><strong>Segmento:</strong><br>".$segmento."";
$texto .= "<br><strong>Proposta:</strong><br>".$proposta."";
$texto .= $msg;
if (mail($para,$assunto,$texto,"From: $para\nContent-type: text/html\n")){
header("Location:$retorno");
}else{
echo 'não foi possivel enviar sua mensagem...';
}
header("Location:$retorno");
}else {
header("Location: sucesso.html");
}
?>


Até ai tudo bem, funciona perfeitamente, eu recebo a mensagem certinha no meu e-mail. Eu preciso adaptar para receber arquivo em anexo. Ai começa o problema... não consegui de jeito nenhum. Segue abaixo o código que eu peguei de anexar arquivo:


rpo é a variável do corpo do e-mail isso é onde aparece a mensagem do e-mail !
$mime_list = array("gif"=>"image/gif", "jpg"=>"image/jpg", "jpeg"=>"image/jpeg"); // Uma lista de tipos de arquivo que podaram ser enviados em anexo !
$ABORT = FALSE;
$data = "XYZ-" . date(dmyhms) . "-ZYX"; // Data de envio do e-mail !
// Mensagem do e-mail para o script entender que é um e-mail com anexo !
$message = "--$data\n";
$message .= "Content-Transfer-Encoding: 8bits\n";
$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n\n";
$message .= $corpo;
$message .= "\n";
// Pega o caminho completo do nome do arquivo !
$vet_anexo[1] = $anexo;
//Checa se o arquivo que será anexado do existe e este será codificado !
foreach($vet_anexo as $chave => $caminho) {
if ($caminho !='') {
if (file_exists($caminho)){
//Tentando abrir o aquivo
if ($arq = fopen($caminho,"rb")) {
//Pega o nome do aquivo a partir do seu caminho
$arq_nome = array_pop(explode(chr(92),$caminho));
$conteudo = fread($arq,filesize($caminho));
//Codifica os dados do Arquivo
$codificado = base64_encode($conteudo);
//*****SPLIT(Separando ou quebrando os dados codificados)*****
$codificado_split = chunk_split($codificado);
fclose($arq);
$message .= "--$data\n";
$message .= "Content-Type: $anexo_type\n";
$message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n";
$message .= "Content-Transfer-Encoding: base64\n\n";
$message .= "$codificado_split\n";
}
else { $erro = "Não foi possivel abrir o Arquivo $chave: $arq_nome";
$ABORT = TRUE; // $ABORD = TRUE significa que o script ira parar neste ponto !
}
}
else {
$erro = "O Arquivo $chave Não Exite: $arq_nome";
$ABORT = TRUE;
}
}
}
$message .= "--$data--\r\n";
$topo = "MIME-Version: 1.0\n";
$topo .= "From: <$de>\r\n";
$topo .= "Content-type: multipart/mixed; boundary=\"$data\"\r\n";

$mensagem = mail($para, $assunto, $message, $topo);
if ($mensagem) {
$erro = "Mensagem enviada!";
} else {
$erro = "O envio da mensagem falhou!";
}
}else{
$erro = "Você deixou um dos campos do formulário vazio!!";
}
}else{
$erro = "O arquivo deve ter no máximo 2MB !! Desculpe!!";
}
}
?>
<!-- Código HTML do Script em PHP de enviar arquivos em ANEXO ! deve esta junto com o código em PHP acima ! -->
<table border="0" align="center" cellpadding="0" cellspacing="0" ><br>
<!-- Quando enviar um aquivo o form tem que ter este enctype= -->
<form method="post" enctype="multipart/form-data" action=""> <br>
<tr>
<td colspan="2"> <div align="left"><strong>
ANEXO
<!-- Para permitir que qualquer pessoa mude os e-mails de origem e destino mude o type de hidden dos imputs
do name="de" e name="para" e do name="assunto" para text e mude os value para " " -->
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type="hidden"name="acao" value="anexar">
<input type="hidden" name="de" size=40 value="[EMAIL="contato@avantesites.com.br"]contato@avantesites.com.br[/EMAIL]">
<input type="hidden"name="para" size=40 value="[EMAIL="contato@avantesites.com.br"]contato@avantesites.com.br[/EMAIL]">
<input type="hidden" name="assunto" size=40 value="Assunto">
</strong></div></td>
</tr>
<tr>
<td colspan="2"><div align="center"><? echo $erro; // Aqui aparecera as msg de erro caso ocorra erro !! ?></td>
</tr>
<tr>
<td width="115"> </td>
<td width="303">Obs.: O arquivo deve
ter no máximo 2MB!</b></font></td>
</tr>
<tr>
<td width="115">Arquivo:
</td>
<td width="303"><input type="file" name="anexo">
</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="submit" type="submit" value="Enviar">
</td>

A única coisa que eu preciso, é que no meu formulário, apareça a caixinha de anexar arquivo. Tentei adaptar isso, mas não consegui.

Quem puder me dar uma força, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

diego to querendo colocar um formulario de e-mail em um site e fui tirar uma base com esse que você usa, mas no meu quando eu clico em enviar mens. da como pág nao existe . Ele tenta procurar a pág form2.php

pode me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê uma olhada se o caminho do form está apontando corretamente:

<form name="form1" method="post" action="form2.php">

O seu servidor tem que suportar php, senão ele dará como página inexistente mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é meu servidor

Plano: PHP BASIC

Características Gerais Espaço em disco100 MB Transferencia mensal2 GB Emails20 Quota email30 MB Recursos de linguagem ASP... ASP.NET 1.1... ASP.NET 2.0... XML... PHPsim_escuro.jpg JSP... Perl... Recursos de Banco de dados MySQLsim_claro.jpg Access... Recursos Gerais Painel de Controlesim_claro.jpg Sub-dominios5 Acesso FTP ilimitado, Usuários de FTP adicionais10 Pagina de erro personalizada... Estatísticas de acesso Webalizersim_escuro.jpg Gerenciamento de emailssim_claro.jpg POP3/SMTP própriosim_escuro.jpg Webmailsim_claro.jpg Redirecionamento de emailssim_escuro.jpg Apelidos (alias) de email ilimitadossim_claro.jpg Auto-resposta de emailsim_escuro.jpg Anti-vírus de email

Obs. onde tem ... é porque o provedor não aceita

a linha p chamar o form2.php está correta mas dá página inexistente

Onde será que estou errando ?

As páginas deixei com os mesmos nomes que você p nao haver erro .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei De Verificar Minha Caixa De E-mail E Chegou Os E-mails Q Mandei P Fazer Teste.

SÓ Tem Um Problema, Quando Clico No Sie Em Enviar Da A ImpressÃo De Q NÃo Enviou, porque Aparece Que NÃo É PossÍvel Localizar A PÁgina.

O Cliente Pode Pensar Q O E-mail NÃo Foi Enviado.

Tem Como Depois Q Clicar Em Enviar Aparecer Uma PÁgina De Agradecimento ?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×