Você está na página 1de 7

Manuais e recursos para desenvolvimento web

www.criarweb.com

Envio de formulrios avanado

Autores do manual
Este manual foi criado pelos seguintes colaboradores de Criarweb.com:
Miguel Angel Alvarez Traduo de JML
(5 captulos)

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

Envio de formulrios por e-mail


Uma das funcionalidades importantes que tem que implementar uma pgina bem acabada o
contato com o administrador do site, de modo que os visitantes possam enviar seus
comentrios, pedidos ou perguntas.
Referncia: Explica-se tudo com detalhe a criao de formulrios em HTML em nosso Manual de HTML.
Inclumos explicaes sobre como construir um formulrio para envia-lo por e-mail e sobre os distintos
tipos de campos que podemos colocar.
Se desejarmos saber como criar a etiqueta <FORM> para enviar um formulrio por correio interessante
a leitura do artigo: http://criarweb.com/artigos/93.php?manual=2

Um dos mtodos de contato com o navegante, talvez o mais habitual, trata-se de criar um
formulrio que o visitante possa preencher com sua informao pessoal e os comentrios ao
administrador e posteriormente enviar por correio eletrnico. O envio do correio com o
formulrio efetuado atravs do programa de correio que o visitante tem instalado em seu
computador, por exemplo, o Outlook Express. O problema neste caso que, se o computador
do usurio no tem programa de correio ou se este se encontra mal configurado, o formulrio
no poder ser enviado.
Outros inconvenientes de mandar o formulrio utilizando o cliente de correio eletrnico,
consistem em que no se pode oferecer uma pgina que confirme o envio do correio e que
agradea ao visitantes o tempo utilizado em preencher o formulrio. Tudo isto pouco
interessante e incmodo.
Neste artigo vamos relatar, mais concretamente, as distintas opes de implementar um
formulrio que seja enviado automaticamente pelo servidor da pgina depois de seu
preenchimento.
Artigo por Miguel Angel Alvarez - Traduo de JML

Tecnologias para enviar formulrios pelo servidor


Sempre que for possvel, h que utilizar o servidor onde est hospedada a pgina para mandar
o correio dos formulrios. O servidor dever permitir o envio de correios e estar bem
configurado para isso.
Comprovando isto, estaremos certos que os correios podero ser enviados sem problemas
para todos os visitantes, j que a informao no se manda atravs do computador do usurio
-que no sabemos se se encontra bem configurado- e sim, atravs do servidor -que
comprvamos convenientemente-.
Distintas tecnologias
O envio de correios pelo servidor tem que se realizar mediante programao no servidor. Este
tipo de programao aquele no qual o processamento se realiza no servidor e o recurso
disponvel para realizar aes o prprio servidor.

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

Referncia:queles que no saibam que tipo de programao a do servidor e desejem clarear este
conceito, deveria ler o manual de Pginas Dinmicas ou o de Introduo s linguagens do web.

Neste artigo vamos assinalar as trs tecnologias com as quais usamos para implementar o
envio de correios e alguma outra indicao sobre como realiza-lo. As trs tecnologias so CGI,
ASP e PHP. Segundo nosso caso, deveremos escolher uma delas, a que melhor nos convm, ou
ento, a que tivermos a nossa disposio no lugar de hospedagem de nossas.
Se estivermos trabalhando com nosso prprio servidor no ser difcil saber qual destas
tecnologias temos disponvel, porque certamente j estaremos utilizando alguma delas. Por
exemplo, se instalamos Personal Web Server ou IIS, teremos disponvel a programao em
ASP. Se tivermos um Linux com Apache poderemos utilizar PHP ou CGI.
Referncia: Tudo necessrio para comear a programar em ASP e PHP pode ser encontrado em nossas
sees:
ASP a fundo
PHP a fundo

Se tivermos a pgina em um provedor de hosting deveramos perguntar ao servio tcnico do


provedor qual destas opes est disponvel para realizar o envio de formulrios pelo servidor.
A maioria dos provedores tem j instalados os recursos com os quais realizar esta tarefa, j
que uma das quais necessitam os desenvolvedores mais habitualmente. Em alguns casos,
daro vrias opes e inclusive tero a sua disposio, tutoriais onde explicam o uso das
ferramentas disponveis.
Tambm poderamos fazer exemplo com programao em Java -Servlets ou Java Server Pages
- ou com outras linguagens como Cold Fusion. Entretanto, neste artigo vamos centralizarmos
nas tecnologias mais habituais, ou mais populares, no desenvolvimento de webs.
Artigo por Miguel Angel Alvarez - Traduo de JML

Envio de formulrio por e-mail usando CGI


O mtodo de envio mais simples atravs de um programa CGI. CGI a tecnologia para
programao do servidor mais antiga, talvez um pouco obsoleta quanto metodologia visto
que no evoluiu muito nos ltimos anos.
Tambm um pouco mais complicado de aprender que as outras opes avanadas neste
artigo, como ASP ou PHP. Por tudo isso, comear desde zero a criar um sistema CGI , na
nossa opinio, desaconselhvel. Ao invs de construir nosso prprio CGI nos parece mais
interessante utilizar algum dos j criados.
CGI FormMail
um dos programas CGI que pode ser utilizado para o envio de formulrios. No endereo
www.scriptarchive.com/formmail.html permite o download dos arquivos e documentao para
configur-lo e criar os formulrios que utilizem o CGI para se enviar por correio.

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

Outros sites com programas CGI


Existem sites onde podemos encontrar um diretrio de programas CGI classificados por
categorias. Em nosso poderamos dar uma olhada na seo de Formulrios ou Envio de correio
para encontrar outras opes e examinar a oferta disponvel para realizar estas tarefas.
importante assinalar que, se tivermos hospedando nossas pginas em algum provedor de
hospedagem, estes certamente tero instalado e configurado algum programa de envio de
formulrios, portanto o melhor seria perguntar aos tcnicos de nosso servio de hosting qual
a maneira de funcionar que tem. Geralmente todos os provedores que so pagos tm algum
tipo de CGI pr-instalado e, apesar de algumas hospedagens gratuitas tambm disporem de
algo, no podemos lhes exigir que seja assim.
Exemplo de cdigo de utilizao de FormMail
No pretendemos explicar o manejo de um CGI para enviar correios, visto que o melhor seria
aprendermos a utilizar o CGI que tivermos disponvel em cada caso em nossa hospedagem.
De qualquer forma, inclumos aqui um cdigo de um formulrio que se enviaria por e-mail
utilizando o CGI FormMail. Podemos ver como o atributo action do formulrio est dirigido para
o CGI que se encarregar de envia-lo por e-mail. Assim mesmo, podemos ver uma srie de
campos hidden que tm como objetivo configurar o correio a enviar e assinalar o endereo ao
qual encaminhar o navegador depois de haver enviado o correio, que simplesmente teria um
texto dando um obrigado ao visitante.
<FORM ACTION="http://cgi.dominioxyz.com/FormMail.pl" METHOD="POST">
<input type=hidden name="recipient" value="jose@jose.com">
<input type=hidden name="subject" value="Assunto do email que se envia">
<input type=hidden name="redirect" value="http://www.dominioxyz.com/obrigado.html">
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nome:<br>
<input type="text" name="nome" size="25" maxlength="300">
</font></td>
<td> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email:<br>
<input type="text" name="email" size="25" maxlength="300">
</font></td>
</tr>
<tr>
<td><font size="2">Direccin:<br>
<input type="text" name="endereco" size="30" maxlength="500">
</font></td>
<td><font size="2">Telefone:<br>
<input type="text" name="telefone" size="12" maxlength="15">
</font></td>
</tr>
<tr>
<td colspan="2"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Observacoes:<br>
<textarea name="observacoes" cols="50" rows="5"></textarea>
</font></td>
</tr>
<tr>
<td colspan="2">
<div align="center"><br>
<input type="submit" value="Enviar">
</td>
</tr>
</table>
</form>

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

Artigo por Miguel Angel Alvarez - Traduo de JML

Enviar um formulrio por e-mail com ASP


Se desejarmos que, ao clicar o boto de envio de um formulrio, sejam mandados os dados
por e-mail utilizando o servidor e sem depender da configurao do cliente para saber se
certamente essa mensagem pode ser enviada, devemos utilizar alguma tecnologia de
programao de pginas do lado do servidor. Neste artigo vamos apresentar um exemplo
sobre como fazer esta tarefa com ASP.
ASP (Active Server Pages) a tecnologia de scripting do lado do servidor desenvolvido por
Microsoft. Com este tipo de programao podemos construir pginas que mostrem um
formulrio e mande um correio eletrnico automaticamente com os dados recebidos uma vez
enviado.
Poderamos utilizar um esquema de cdigo como o seguinte:
<%
if request.form="" then
'nao recebo formulario, entao o mostro
%>
<form action="formulario_mail_asp.asp" method="POST">
Nome: <input type="Text" name="nome" size="12" maxlength="200">
<br>
Email: <input type="Text" name="email" size="12" maxlength="200">
<br>
<input type="submit" value="Enviar">
</form> <%
else
'recebo um formulario, entao o trato
'recolho os dados
nome = request.form("nome")
email = request.form("email")
'componho o corpo da mensagem
corpo = "Formulario recebido" & VBNEWLINE & VBNEWLINE
corpo = corpo & "Nome: " & nome & VBNEWLINE
corpo = corpo & "Email: " & email
'mando o correio...
'..................
response.write "Obrigado por preencher o formulrio. Foi enviado corretamente." end if %>

No script anterior utilizamos if (request.form="") para saber se estvamos recebendo ou no


informao de um formulrio.
Se no recebemos nada (porque em request.form temos uma cadeia vazia) este if sairia por
seu caso verdadeiro, no qual teremos que apresentar o formulrio na pgina.
O caso else, quando recebemos um formulrio, recolhemos seus dados e criamos o corpo do email que enviaremos ao endereo do administrador.
O resto do cdigo, utilizado para definir as propriedades do e-mail e envia-lo, ainda no o
indicamos. Antes um esclarecimento.
ASP no tem entre as funes da linguagem uma que sirva para enviar correios eletrnicos.
Entretanto, podemos utilizar um componente ActiveX do servidor para realizar essas aes.

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

O componente CDONTS (presente em muitas das instalaes de IIS) serviria para realizar o
envio do e-mail, mas tambm existem no mercado outros componentes de servidor comerciais
para realizar essas aes com maiores funcionalidades. Um deles AspEmail, que o que
vamos utilizar neste script, mas no o nico.
Nota: Insistimos em dizer que o seguinte cdigo, que faz a ao de enviar um e-mail, no funcionar se
no tivermos o componente ASP AspEmail instalado corretamente em nosso servidor. Ademais,
deveramos consultar a documentao do componente, para comprovar que na verso que baixarmos
continua funcionando tudo como aparece a seguir.

O cdigo para enviar um e-mail poderia ser algo como isto:


'crio o objeto correio
set mail = server.createObject("Persits.MailSender")
'configuro a mensagem
'assinalo o servidor de sada para enviar o correio
mail.host = "mail.seudominio.com"
'indico o endereo de correio do remitente
mail.from = "oqueseja@seudominio.com"
'indico o endereo do destinatrio da mensagem
mail.addAddress "oqueseja@seudominio.com"
'indico o corpo da mensagem
mail.body = corpo
'o envio
'certifico-me que no se apresentem erros na pgina se se produzem
On Erro Resume Next
mail.send
if Err ><0 then
response.write "Erro, no pode completar a operao"
else
response.write "Obrigado por preencher o formulrio. Foi enviado corretamente." end if

Podemos nos guiar pelos comentrios para termos uma idia do funcionamento deste pedao
de cdigo. Basicamente cria-se o objeto mail, que conter o correio que vai ser gerado, e
definem-se suas propriedades como o servidor de correio a utilizar, o destinatrio ou o
assunto. Logo, envia-se e realiza-se uma simples tarefa de deteco de erros para saber se a
tarefa pde ser realizada com xito ou no e mostrar uma mensagem adequada para cada
caso.
Nota: No se pretende explicar os pormenores deste Control Activex do servidor, j que existe uma
excelente documentao e exemplos na pgina web da empresa que o desenvolveu. Neste caso de que se
deseja aprender algo mais, por favor, dirijam-se pgina www.aspemail.com ou a do componente o qual
disponham.

Artigo por Miguel Angel Alvarez - Traduo de JML

Enviar um formulrio por mail com PHP


Para comear, seria muito til que aprendssemos a enviar correios eletrnicos com PHP, para
o qual j temos um artigo em CriarWeb.
Esquema de funcionamento
Usabilidade na web: http://www.criarweb.com/usabilidade/
Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web


www.criarweb.com

Neste caso vamos utilizar a varivel $_POST, que deveria conter o formulrio, para saber se
recebemos ou no dados desde um formulrio. Essa varivel vamos utiliza-la num enunciado if
(!$_POST), que se for positivo (no temos nada em $_POST), significa que no se recebeu
nada desde um formulrio. Nesse caso, mostro o formulrio de contato.
Em caso contrrio (quando temos algo em $_POST), quer dizer que estamos a receber dados
atravs de um formulrio e nesse caso, recolhemos os dados e compomos o corpo da
mensagem.
Vejamos o cdigo da pgina para criar o formulrio , recebe-lo e compor o corpo da mensagem
que vai ser enviada. No mesmo cdigo poderemos encontrar tambm a chamada funo que
envia o correio.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Envie-nos os seus comentrios</title>
</head>
<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$_POST){
?>
<form action="envia_form_php.php" method=post>
Nome: <input type=text name="nome" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentrios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estou a receber o formulrio, componho o corpo
$corpo = "Formulrio enviado\n";
$corpo .= "Nome: " . $_POST["nome"] . "\n";
$corpo .= "Email: " . $_POST["email"] . "\n";
$corpo .= "Comentrios: " . $_POST["coment"] . "\n";
//envio o correio...
mail("admin@seudominio.com","Formulrio recebido",$corpo);
//agradeo pelo envio
"Obrigado por preencher o formulrio. Foi enviado corretamente.";

}
?>
</body>
</html>

Artigo por Miguel Angel Alvarez - Traduo de JML

Usabilidade na web: http://www.criarweb.com/usabilidade/


Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Você também pode gostar