Ir ao conteúdo
  • Cadastre-se

formulário de contato


Posts recomendados

Olá colegas de fórum, venho mais uma vez recorrer a vocês pois depois de horas e horas de pesquisas :confused: , copiar, colar e editar códigos não consegui resolver a situação.  Tenho um site educativo e preciso publicar um formulário com campos simples de texto, botões select, etc, preciso que o mesmo permita ao usuário o upload de uma foto ou outro arquivo qualquer.  De início eu pretendia que o formulário chegasse em meu e-mail do yahoo mas como não consegui até agora me contento em que o formulário vá para uma pasta "contatos" no servidor. Mas não sei como fazer isso.  Sei que provavelmente precisarei de uma pagina tipo "contato.htm" e "algumacoisa.php". Aguardo e desde já agradeço quem puder dar um help. 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

É por aí...  tens de usar php...  e uma classe de envio como por exemplo phpmailer... aí você envia direto para seu e-mail.

Recomendo procurar aqui no fórum tópicos sobre o uso do phpmailer. Existem vários na qual eu ajudo os usuários.

 

ps: o phpmailer é uma classe php que permite o envio de e-mails complexos como anexo de arquivos, cópias ocultas... e etc

Link para o comentário
Compartilhar em outros sites

Obrigado pela resposta mas que tem que passar pelo php eu ja sei.  Ate ja desisti do formulario chegar no meu e-amail e quero saber como manda-lo para uma pasta em meu servidor.  Lembrando que alem do formulario em si quero que o usuario possa fazer o upload de uma imagem por exemplo


segue um exemplo deu um arquivo que ja tentei

formulario.htm

<html><head><script language="javascript"> function checa_formulario(email){if (email.nome_para.value == ""){alert("Por Favor nao deixe o nome em branco!!!");email.nome.focus();return (false);} if (email.email.value == ""){alert("Nao deixe o email destinatario em branco!!!");email.email.focus();return (false);} if (email.assunto.value == ""){alert("Nao deixe o assunto em branco!!!");email.assunto.focus();return (false);} }</script><title>Enviando texto</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css"><!--.email {text-transform: lowercase;}.texto {color: #0000FF }.style1 {color: #FF0000} --></style></head> <body onLoad="document.email.nome.focus();"><form onsubmit="return checa_formulario(this)" action="envia.php" method="post" enctype="multipart/form-data" name="email"><h1 align="center" class="style1">Formulário de email com anexo </h1><table width="50%" border="0" align="center"><tr><td><div align="right"><span class="texto">Nome do destinatario:</span></div></td><td><input name="nome_para" type="text" id="nome_para"></td></tr><tr><td><div align="right" class="texto">Email de destino</div></td><td><input name="email" type="text" class="email"></tr><tr><td><div align="right" class="texto">Assunto</div></td><td><input name="assunto" type="text" id="assunto"></td></tr><tr><td><div align="right" class="texto">Mensagem</div></td><td><textarea name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td></tr><tr><td><div align="right" class="texto">Anexo</div></td><td><input name="arquivo" type="file"></td></tr><tr><td> </td><td><input type="submit" name="Submit" value="Enviar"></td></tr></table></form></body></html>
 
Forumulario php
<?php //Pega os dados postados pelo formulário HTML e os coloca em variaveisif (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com, $_SERVER[HTTP_HOST])) {//substitua na linha acima a aprte locaweb.com.br por seu domínio.$email_from='email@seudominio';    // Substitua essa linha pelo seu e-mail@seudominio}else {$email_from = "email@" . $_SERVER[HTTP_HOST];// Na linha acima estamos forçando que o remetente seja 'webmaster@',// você pode alterar para que o remetente seja, por exemplo, 'contato@'.}  if( PATH_SEPARATOR ==';'){ $quebra_linha="\r\n"; } elseif (PATH_SEPARATOR==':'){ $quebra_linha="\n"; } elseif ( PATH_SEPARATOR!=';' and PATH_SEPARATOR!=':' ) {echo ('Esse script não funcionará corretamente neste servidor, a função PATH_SEPARATOR não retornou o parâmetro esperado.'); } //pego os dados enviados pelo formulário $nome_para = $_POST["nome_para"];$email = $_POST["email"];$mensagem = $_POST["mensagem"];$assunto = $_POST["assunto"];//formato o campo da mensagem $mensagem = wordwrap( $mensagem, 50, "<br>", 1); //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)){ echo"<center>Digite um email valido</center>";echo "<center><a href=\"javascript:history.go(-1)\">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" . $quebra_linha . "";$mens .= "Content-Transfer-Encoding: 8bits" . $quebra_linha . "";$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"" . $quebra_linha . "" . $quebra_linha . ""; //plain $mens .= "$mensagem" . $quebra_linha . "";$mens .= "--$boundary" . $quebra_linha . "";$mens .= "Content-Type: ".$arquivo["type"]."" . $quebra_linha . "";$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"" . $quebra_linha . "";$mens .= "Content-Transfer-Encoding: base64" . $quebra_linha . "" . $quebra_linha . "";$mens .= "$anexo" . $quebra_linha . "";$mens .= "--$boundary--" . $quebra_linha . ""; $headers = "MIME-Version: 1.0" . $quebra_linha . "";$headers .= "From: $email_from " . $quebra_linha . "";$headers .= "Return-Path: $email_from " . $quebra_linha . "";$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"" . $quebra_linha . "";$headers .= "$boundary" . $quebra_linha . "";  //envio o email com o anexo mail($email,$assunto,$mens,$headers, "-r".$email_from); echo"Email enviado com Sucesso!"; } //se nao tiver anexo else{ $headers = "MIME-Version: 1.0" . $quebra_linha . "";$headers .= "Content-type: text/html; charset=iso-8859-1" . $quebra_linha . "";$headers .= "From: $email_from " . $quebra_linha . "";$headers .= "Return-Path: $email_from " . $quebra_linha . ""; //envia o email sem anexo mail($email,$assunto,$mensagem, $headers, "-r".$email_from);  echo"Email enviado com Sucesso!";} ?>
Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

Vamos entender uma coisa, 

No servidor, tu só pode armazenar a imagem ou arquivo. 

 

Então no caso,  tu terias que fazer o php criar um arquivo TXT com os dados.. e toda vez que alguém mandar.. teria que editar esse arquivo com novas informações.

Bom isso seria ruim demais. 

Na minha opinião chega a ser inviável.. por que o arquivo pode ficar imenso a ponto de demorar para abrir.. e também de você ler tudo.

 

Então a única solução é retomar a ideia de enviar por e-mail.  MAS não por esse script que postou.  além de obsoleto várias das funções... a função mail() do php é muito ruim. 

 

Por isso que eu recomendei usar uma classe  chamada PHPmailer.  use ela e não tem erro.

 

Aqui no fórum TEM vários tópicos que eu ensino usar a classe.

 

Esqueça a ideia de enviar para o servidor.

 

Exemplo de uso da classe:

 

Imagine que tem um formulário com os seguintes campos:  Nome, assunto, mensagem e um campo file para anexar um arquivo

<?php $nome 	    = $_POST['nome']; $assunto   = $_POST['assunto']; $mensagem  = $_POST['mensagem']; $arquivo   = $_FILES["arquivo"];  $corpoMSG = "<strong>Nome:</strong> $nome<br> <strong>Mensagem:</strong> $mensagem"; // chamada da classe		 require_once('class.phpmailer.php'); // instanciando a classe $mail   = new PHPMailer(); // email do remetente $mail->SetFrom('[email protected]', 'remetente'); // email do destinatario $address = "[email protected]"; $mail->AddAddress($address, "destinatario"); // assunto da mensagem $mail->Subject = $assunto; // corpo da mensagem $mail->MsgHTML($corpoMSG); // anexar arquivo $mail->AddAttachment($arquivo['tmp_name'], $arquivo['name']  );  if(!$mail->Send()) {   echo "Erro: " . $mail->ErrorInfo;  } else {   echo "Mensagem enviada com sucesso!";  }

A vantagem de usar a classe phpmailer é você poder autenticar o envio usando uma conta do Gmail.. ou se você tiver um e-mail próprio no No cpanel do seu servidor podess configurar um usuário, senha e porta de envio.

Uma coisa é certa, o código que você postou é ruim.. e já era de se esperar que não funcionasse.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

É bem simples mesmo.. 

<form method="post" action="envia.php" enctype="multipart/form-data">   <input type="text" name="nome" placeholder="Nome"/>   <input type="text" name="assunto" placeholder="Assunto"/>   <input type="text" name="mensagem" placeholder="Mensagem"/>   <input type="file" name="arquivo" />   <input type="submit" value="Enviar" /></form>  

Este é o básico... podes aplicar um CSS e estilizar o formulário. Usei o atributo placeholder para não precisar colocar um label fora do campo.

Perceba que o exemplo do php que mostrei só recebe 1 arquivo. ou seja, ele não é multiplo... para ser múltiplo tem de fazer ele enviar um array de dados e no php percorre-los com foreach.

Outra coisa  é que no exemplo é beeeem simples mesmo. não coloquei a autenticação feita com gmail.. eu sempre utilizo se por acaso precisar depois eu posto o trecho que faz a autenticação.

Mas eu recomendo que procure no google sobre isso..   procure por esta tag no google:  "PHPmailer  com Gmail" vai aparecer muitos blogs e sites mostrando como autenticar!

Link para o comentário
Compartilhar em outros sites

Olá colega, fiz os dois arquivos como mencionaste mas quando clico em enviar o servidor retorna o seguinte:

Fatal error: require_once(): Failed opening required 'class.phpmailer.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/vhosts/quimicanaescola.orgfree.com/envia.php on line 10

 

a única modificação que fiz no envia.php foi na linha 16 onde coloquei o meu e-mail.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

o erro é porque falhou em buscar o arquivo class.phpmailer.php..  provavelmente pode ter errado no caminho dele.

 

o require_once() dá esse erro fatal quando não acha o arquivo.  reveja o caminho...  teste com o caminho completo do arquivo se estiver usando o caminho relativo.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

esta linha:  

require_once('class.phpmailer.php');

ali indica que o caminho do arquivo é no root.. ou seja no diretório principal.

 

se tu tem por exemplo esta estrutura:

 Root(raiz do servidor mais conhecido como " / ")   |-site       |-lib           |-class.phpmailer.php

A linha mencionada seria por exemplo:

require_once('lib/class.phpmailer.php'); 

Este é o caminho relativo.

 

já o caminho completo seria:

require_once('http://www.seusite.com.br/lib/class.phpmailer.php'); 

então o erro está acontecendo porque não foi reconhecido o lugar onde o arquivo está.  Se não coloca o nome da pasta antes... ele entende que o arquivo está na raiz. do servidor.

Se realmente o arquivo estiver na raiz.. aí eu não o por que do problema... mas segundo a mensagem de erro que postou.. o problema é mesmo por causa de caminho errado.

Link para o comentário
Compartilhar em outros sites

ok, vou tentar mais uma vez. obrigado

 


fiz o caminho o script mostra a mensagem enviado com sicrsso mas o formulário não chega em meu email. como disse na abertura do tópico aceito que o formulário fique no servidor. nao há problema de ser um arquivo de texto pois semanalmente tudo será apagado. quero ajuda pois não sei como fazer pois alem dos campos do formulário as imagens também precisam ir para uma pasta no servidor. aguardo. obrigado

 

ninguém?
tenho um projeto de divulgação em que meus alunos e professores que tenham vira_latas mandem fotos do mesmo para o estimulo da adoção. no formulário bastaria os campos nome, email, nome do bicho e um espaço para que o usuário conte uma pequena história sobre seu pet. ao clicar em enviar esses dados iriam para o meu servidor (orgfree.com) e o resto eu me viro. continuo aguardando um help. obrigado

Link para o comentário
Compartilhar em outros sites

  • Moderador

@reisvieira

 

Eu apresentei como se faz... mas tens que postar aqui como tentou fazer.   além disso.. eu disse que precisava de autenticação para enviar o e-mail .. via gmail por exemplo.  e eu disse q não tinha posto ali... com intenção de que tu pesquisasse... e estudasse um pouquinho..  enviar um email via php é uma das coisas mais fáceis de que se pode fazer... ainda mais com um modelo ali em cima

 

Não podes ficar esperando alguém postar algo que funcione aqui...  pesquise e tente fazer.. e poste as tentativas(código)

 

https://www.todoespacoonline.com/w/2014/07/phpmailer-email-smtp-php/

pesquisa google

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!