Você está na página 1de 6

Boa tarde @Jorge, como disse que est iniciando na programao vou lhe passar um

exemplo bem simples de formulrio usando PHP.


Primeiro voc cria um arquivo index.php onde ir colocar o html do seu formulrio, segue
exemplo:
<form action="envia-contato.php" id="frmContato" method="POST">
<input type="text" name="nome" placeholder="Nome">
<input type="email" name="email" placeholder="Email">
<input type="tel" name="telefone" placeholder="Telefone">
<input type="text" name="assunto" placeholder="Assunto">
<textarea name="mensagem" placeholder="Mensagem"
rows="5"></textarea>
<input type="submit" value="Enviar">
</form>

Posterior vamos criar o arquivo envia-contato.php que o arquivo de action do nosso form,
ou seja, o arquivo que pegar os dados do formulrio e enviar por email.
// Destinatrio
$para = "email@email.com";
// Assunto do e-mail
$assunto = "Contato do atravs do site Teste.";
// Campos do formulrio de contato
$nome = $_POST['nome']; //aqui o que vai entre [] tem que ter o mesmo nome
do name do input
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$ass = $_POST['assunto'];
$mensagem = $_POST['mensagem'];
// Monta o corpo da mensagem com os campos
$corpo = "Nome: $nome <br>";
$corpo .= "Email: $email <br>Telefone: $telefone <br>Assunto: $ass
<br>Mensagem: $mensagem";
// Cabealho do e-mail
$email_headers = implode("\n", array("From: $nome", "Reply-To: $email",
"Subject: $assunto", "Return-Path: $email", "MIME-Version: 1.0", "X-Priority: 3",
"Content-Type: text / html;
charset = UTF-8"));

if (!empty($nome) && !empty($email) && !empty($mensagem)) { //testa de os


campos obrigatorios nao estao vazios
mail($para, $assunto, $corpo, $email_headers); //envia o email atravs da
funo mail
$msg = "Sua mensagem foi enviada com sucesso."; //mostra a mensagem ao
usuario
//apos o envio do formulrio lev o usurio a pgina desejada, s passar o
caminho.
echo
"<script>alert('$msg');window.location.assign('http://www.seusite.com');</scrip
t>";
} else {
$msg = "Erro ao enviar a mensagem."; //mostra a mensagem ao usuario
//apos o envio do formulrio lev o usurio a pgina desejada, s passar o
caminho.
echo
"<script>alert('$msg');window.location.assign('http://www.seusite.com);</script
>";
}

H anos atrs, quando queramos colocar um formulrio de e-mail em nosso


site, simplesmente pegvamos um script em Perl que funcionava, mas no
fazamos ideia de como as coisas aconteciam por trs. Neste post
demonstrarei que muito simples fazer a mesma coisa em PHP. Perceba que
o foco principalmente no PHP, e no necessariamente na validao do
formulrio ou CSS, embora usaremos algumas boas prticas de validao.
Aviso: O script apenas enviar o e-mail se estiver em um servidor. Voc no
conseguir mandar o e-mail do localhost (No Wamp ou Xampp por exemplo).

Criando os arquivos
Criaremos quatro arquivos que iro conter nosso script.
O index.php,

para que a pasta sempre abra no nosso arquivo de contato (voc


pode renomear depois para contato.php se quiser). O arquivo mail_ok.php,
para exibir a mensagem que o e-mail foi enviado, e o mail_error.php,
contendo a mensagem de erro. Finalmente, o mail_send.php, contendo o script
que envia o e-mail propriamente dito.

index.php
No index.php vamos fazer o nosso formulrio:
1. <!DOCTYPE html>
2. <html lang="pt-br">
3.
<head>
4.
<meta charset="utf8">
5.
<title>Contato</title>
6.
</head>
7.
<body>
8.
<form action="mail_send.php" method="post">
9.
<fieldset>
10.
<label for="email">E-mail: </label>
11.
<input required name="email" type="email">
12.
</fieldset>
13.
<fieldset>
14.
<label for="mensagem">Mensagem: </label>
15.
<textarea required
name="mensagem"></textarea>
16.
</fieldset>
17.
<fieldset>
18.
<button type="submit">Enviar</button>
19.
</fieldset>
20.
</form>
21.
</body>
22. </html>

Esse formulrio contm os campos e-mail e mensagem, ambos campos


obrigatrios.
Vamos agora fazer o mail_ok.php e mail_error.php:

mail_ok.php
1. <!DOCTYPE html>
2. <html lang="pt-br">
3.
<head>
4.
<meta charset="utf8">
5.
<title>Sucesso</title>
6.
</head>
7.
<body>
8.
<h1>Sucesso</h1>
9.
10.
<hr>
11.
12.
<p>O e-mail foi enviado com sucesso.</p>
13.
</body>
14. </html>

mail_error.php
1. <!DOCTYPE html>
2. <html lang="pt-br">
3.
<head>
4.
<meta charset="utf8">
5.
<title>Erro</title>
6.
</head>
7.
<body>
8.
<h1>Erro</h1>
9.
10.
<hr>
11.
12.
<p>Houve um erro no envio do e-mail. <a
href="index.php">Tentar novamente</a>.</p>
13.
</body>
14. </html>

Os arquivos anteriores mostram mensagens se o e-mail foi enviado. O seguinte


script PHP ir redirecionar para eles:

mail_send.php
1. <?php
2.
3. function pegaValor($valor) {
4.
return isset($_POST[$valor]) ? $_POST[$valor] : '';
5. }
6.
7. function validaEmail($email) {
8.
return filter_var($email, FILTER_VALIDATE_EMAIL);
9. }
10.
11. function enviaEmail($de, $assunto, $mensagem, $para,
$email_servidor) {
12.
$headers = "From: $email_servidor\r\n" .
13.
"Reply-To: $de\r\n" .
14.
"X-Mailer: PHP/" . phpversion() . "\r\n";
15.
$headers .= "MIME-Version: 1.0\r\n";

16.
$headers .= "Content-Type: text/html; charset=ISO-88591\r\n";
17.
18.
mail($para, $assunto, nl2br($mensagem), $headers);
19. }
20.
21. $email_servidor = "email@servidor.com";
22. $para = "seu@email.com";
23. $de = pegaValor("email");
24. $mensagem = pegaValor("mensagem");
25. $assunto = "Assunto da mensagem";
26.
27. ?>

Este ltimo script define trs funes:

pegaValor:

validaEmail:

enviaEmail

se existir, pega a vriavel enviada via post, seno, retorna


uma string vazia;
retorna se o e-mail vlido;

: chama a funo mail do PHP com as variveis que

definimos.
As variveis $de e $mensagem iro pegar os valores enviados pelo
formulrio. Nas variveis $email_servidor e $para voc dever colocar seu email do servidor e o e-mail para o qual ser enviado o formulrio,
respectivamente. A varivel $assunto ser, obviamente, o assunto da
mensagem.

Corpo do script
1. if ($nome && validaEmail($de) && $mensagem) {
2.
enviaEmail($de, $assunto, $mensagem, $para,
$email_servidor);
3.
$pagina = "mail_ok.php";
4. } else {
5.
$pagina = "mail_error.php";
6. }
7.
8. header("location:$pagina");

Esta parte do script o controle de fluxo. Se as variveis no forem vazias e o


e-mail for vlido, enviar o e-mail e atribuir a varivel $pagina para
mail_ok.php. Caso contrrio, a varivel $pagina ser mail_error.php. E
finalmente, redirecionaremos a pgina com a funo header.
Aviso: de suma importncia verificar no seu editor de texto se a codificao
UTF-8 sem BOM. Se no for, o script ir enviar um espao em branco antes
do cabealho de redirecionamente, e ir aparecer o seguinte erro:
Cannot modify header information - headers already sent

Com isso nosso script PHP est pronto. Adeus Perl!

Você também pode gostar