Professional Documents
Culture Documents
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Sumrio
Ol! Seja Bem-vindo(a)!5
O que voc ver neste e-book?6
Elementos HTML para construo de formulrios de contato7
Criando a pgina de contato do site do Galucho 18
Criando um arquivo PHP28
Concluso60
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Pgina de contato +
arquivo PHP para envio
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Ele validar as informaes e conforme desenvolvida a programao estes dados podem ir para
um banco de dados, ou serem, como no exemplo que usaremos, enviados por e-mail.
O uso de uma linguagem de programao de fundamental importncia para que a maioria das
aes dos formulrios HTML funcione. Isso justifica o porqu os elementos para construo de
formulrios no fizeram parte do e-book que foi focado somente em HTML e CSS. Ok?
NOTA IMPORTANTE: Este complemento no tem a inteno, e nem seria possvel em pouco tempo, tornar voc um programador. A ideia oferecer uma opo acessvel para voc implementar
em seus futuros projetos e quem sabe ser um estmulo para pesquisar mais sobre programao.
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Agora sem mais delongas apresentaremos os elementos HTML que usaremos no formulrio de
contato.
<form></form>
O elemento HTML form agrupa outros elementos que associados permitem ao usurio submeter informao a um determinado servidor web.
Em conjunto com este elemento podemos usar atributos especficos sendo que alguns so importantes como o action e o method. Vamos entend-los?
O atributo action: Ele indica a url do arquivo que ir processar os dados submetidos pelo formulrio.
7
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Veja a sintaxe:
<form action=arquivo-que-processa-dados.php>
</form>
O atributo method: Ele indica o mtodo que o navegador usar para enviar os dados inseridos
nos formulrios. Existem dois valores para method:
Mtodo get: Quando enviamos os dados de um formulrio pelo mtodo GET o navegador
pega esses dados, tambm a url do local onde formulrio vai ser enviado e, separando-os
com um ponto de interrogao ?, forma a url resultante.
Mtodo post: Ele envia os dados do formulrio colocando-os no corpo da mensagem. Ele deixa a url separada dos dados que sero enviados.
Diferena entre os mtodos: A maior diferena entre os mtodos GET e POST provavelmente
como visualizamos na url resultante. Uma requisio GET enviada os dados como string anexada a URL, enquanto que na requisio POST os dados so encapsulados e ocultos junto ao corpo
da requisio HTTP. Voc no v os dados anexados na url. Outra diferena importante a saber
que o GET somente envia textos, enquanto o POST alm de textos tambm pode transportar
dados binrios.
Observao:
A requisio HTTP ocorre quando o navegador ou dispositivo envia informaes solicitando
recursos ao servidor. O HTTP, que um Protocolo de Transferncia de Dados, serve para que o
navegadores e servidores possam se comunicar.
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Como j dito antes, existem outro atributos, porm vamos focar nos fundamentais action e
method. Voc tambm pode usar, caso queira, os atributos id e class para fins de estilizao.
Para conhecer todos os atributos do elemento form visite a pgina a seguir (em ingls);
https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/form
<label></label>
Este elemento um rtulo que informa para que serve um campo de formulrio. Trabalhando
junto com o atributo for possvel vincular o campo de formulrio ao rtulo. Veja sintaxe:
<form action=arquivo-que-processa-dados.php method=post>
<label for=nome>Digite seu nome</label>
</form>
Logo veremos o resultado visual, mas antes vamos apresentar o elemento responsvel por construir os campos de formulrios e entre outros controles interativos.
<input>
O elemento input usado para criar controles interativos para formulrios. O que determinar
o tipo de controle ser o valor do atributo type.
Veja a sintaxe bsica:
9
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
<input type=nome-do-tipo-de-controle>
Com o atributo type podemos visualizar uma infinidade de controles, geralmente chamados de
inputs, como campos para texto, e-mail, telefone, inputs tipo radio e checkbox, boto de enviar
formulrio, entre outros.
Quando no declarado, o tipo de atributo padro ser o text. Para conhecer todos os atributos
sugiro o link a seguir para leitura posterior:
https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/Input
Para nosso formulrio de contato usaremos os atributos text, email e submit.
Vamos um exemplo:
<form action=arquivo-que-processa-dados.php method=post>
<p><label for=nome>Digite seu nome</label></p>
<p><input type=text></p>
<p><label for=email>Digite seu e-mail</label></p>
<p><input type=email></p>
<p><input type=submit></p>
</form>
Veja o resultado a seguir:
10
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Note que o input text indicado para preenchimento de texto. No caso usado para digitar um
nome. O atributo for=nome corresponde ao rtulo de label e ao tipo de contedo a ser a digitado no input.
J o input email usado para digitar um e-mail
e nada mais que isso. O atributo for=email corresponde ao rtulo de label e ao tipo de contedo a ser a digitado no input.
O input submit cria um boto. Este responsvel pelo envio dos dados do formulrio quando
efetuamos um clique.
Tambm iremos inserir em nosso formulrio de contato os atributos placeholder, id e name nos
inputs type=text e type=email. Para o input type=submit usaremos o atributo value.
Veja:
<form action=arquivo-que-processa-dados.php method=post>
<p><label for=nome>Digite seu nome</label></p>
<p><input type=text name=nome id=nome placeholder=Digite aqui seu nome></p>
<p><label for=email>Digite seu e-mail</label></p>
<p><input type=email name=email id=email placeholder=Digite aqui seu e-mail></p>
<p><input type=submit value=Clique aqui para enviar></p>
</form>
Veja o resultado:
11
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Podemos notar algumas diferenas em relao ao formulrio da imagem anterior. Dentro dos
campos temos agora uma instruo para o usurio tomar uma ao. Tudo isso possvel por
causa do atributo placeholder (placeholder=Digite aqui seu nome).
Outra mudana que notamos no boto de submisso do formulrio. Agora temos um texto
novo que pede para o usurio clicar no boto para fazer o envio. Voc pode colocar o texto que
bem entender, para isso basta mexer no atributo value dentro do input type=submit (value=Clique aqui para enviar).
Inserimos o atributo id e tambm um atributo de fundamental importncia que ao atributo
name. Ele auxiliar na vinculao entre os dados digitados no inputs e a codificao com o PHP.
Mas isso veremos mais a frente, OK?
12
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
<fieldset></fieldset>
Este elemento agrupa elementos relacionados em um formulrio e desenha uma caixa em
torno deles.
Veja a sintaxe:
<form action=arquivo-que-processa-dados.php method=post>
<fieldset>
<p><label for=nome>Digite seu nome</label></p>
<p><input type=text name=nome id=nome placeholder=Digite aqui seu nome></
p>
<p><label for=email>Digite seu e-mail</label></p>
<p><input type=email name=email id=email placeholder= Digite aqui seu
e-mail></p>
<p><input type=submit value=Clique aqui para enviar></p>
<fieldset>
</form>
Vamos ao resultado a seguir:
13
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Veja que o elemento criou um Box agrupando os elementos filhos. Notamos isso pela borda padro que ele possui. Este recurso pode ficar mais bacana com o uso do prximo elemento.
<legend><legend>
Este elemento cria um rtulo para o contedo do seu ancestral, no caso o elemento fieldset.
Basta que coloquemos as tags aps a tag de abertura de fieldset e dentro coloquemos o contedo da legenda. Exemplo:
<legend>Voc deve preencher os dados a seguir:</legend>
Vamos agora inserir este cdigo acima dentro do cdigo do formulrio que vnhamos usando at
ento. Veja o resultado:
14
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Interessante, no?
Bom, mas um formulrio de contato sem o assunto e sem a mensagem no cumpre sua misso, n?
Portanto podemos usar outra label e input do tipo text para o assunto. Certo?
Mas e para mensagem? O que usar?
Simples! Usaremos o elemento textarea.
Vamos ver como funciona?
15
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
<textarea></textarea>
Este elemento um controle de edio multilinhas para insero de textos simples. muito usado para envio de mensagens, posts em redes sociais, comentrios em blogs, alguns tipos de cadastros, entre outros.
Tem bastante utilidade quando precisamos de um campo para insero de textos longos.
Vamos ao cdigo com insero de textarea e o input para o assunto.
16
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Conhecendo estes elementos e atributos HTML j possvel, pelo menos, criar a parte de interatividade com o usurio em um formulrio de contato.
Comearemos, no tpico a seguir, a construir nossa pgina de contato.
hey ho lets go!
17
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
18
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
3. Terceiro passo: mudar as urls dos links dos menus de cada pgina.
O link do menu de contato das pginas do site direciona o usurio para o rodap devido ao valor dentro de href que #contato. O que faremos agora alterar este valor para o endereo da
pgina de contato, contato.html.
Dever ficar assim:
<a href=contato.html><span>CONTATO</span></a>
Outra alterao importante para a usabilidade da pgina de contato o estilo aplicado ao menu
HOME. Veja que ele possui um background destacante que indica que o contedo se refere
pgina inicial. S que est errado. Este estilo deve estar aplicado ao menu CONTATO.
Para corrigir, basta retirar a class current-menu-item do menu HOME e colocar no menu
CONTATO.
Sendo assim, o nosso menu ficar assim:
<ul id=nav>
<li><a href=index.html><span>HOME</span></a></li>
<li><a href=portfolio.html><span>PORTFLIO</span></a></li>
<li class=current-menu-item><a href=#contato><span>CONTATO</span></a></li>
</ul>
Aps as alteraes basta salvar os arquivos e conferir o resultado
20
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
21
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Obs.: No final do e-book voc ter um link para acesso a os arquivos dos cdigos.
Voc ver o resultado na pgina a seguir:
Inserimos 2 inputs de texto (Nome e Assunto), 1 input de email, 1 textarea e 1 input submit.
Agora hora de deixar este formulrio mais apresentvel: entrar em ao nosso velho conhecido CSS!
Com os conhecimentos que voc adquiriu no E-book de Fluncia em HTML e CSS voc j tem
bagagem para interpretar as folhas de estilos que aplicaremos. Portanto, no aprofundaremos
neste aspecto para podermos focar no prximo passo.
E no se preocupe, pois forneceremos todos os cdigos e voc poder estudar os estilos aplicados no formulrio, ok?
Somente dois pontos novos que explicarei agora para que voc no fique perdido. Mas antes veja
como ficou o formulrio depois da estilizao.
22
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
24
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Por exemplo, em nossos campos de input e textarea do nosso formulrio requer preenchimento obrigatrio e da forma correta, principalmente no campo de e-mail. Ento basta colocar
o atributo required dentro da tags input e da tag de abertura do elemento textarea. Veja:
<input type=text name=nome id=nome placeholder=Insira seu nome required>
<input type=email name=email id=email placeholder=Insira seu e-mail required>
<input type=text name=assunto id=assunto placeholder=Insira o assunto da mensagem
required>
<textarea name=mensagem id=mensagem placeholder=Digite sua mensagem required></
textarea>
25
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Com todos os campos devidamente atribudos com required que tal fazer alguns testes?
26
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
O sistema tambm alerta quando o e-mail preenchido erroneamente. Veja na imagem a seguir:
Com esta validao, usando o HTML5, conseguimos prevenir problemas evitando que o usurio
perca tempo.
Prximo passo criar o arquivo PHP.
27
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Observao: Tome cuidado para no deixar espaos vazios nos delimitadores (<? php, ou < ?php.)
O PHP uma linguagem de que somente o servidor interpreta, portanto diferentemente do HTML,
no possvel ver os comandos usados no cdigo-fonte de uma pgina web. Tudo que vemos
puro HTML. O programa interpretado no servidor que envia at o usurio o resultado da requisio em forma de HTML.
Ento, onde colocar os cdigos PHP ento?
Colocaremos a sintaxe <?php ?> entre as tags de body. Com isso temos a possibilidade de estilizar com css e colocar links para orientar os prximos passos do usurio.
A pgina enviar.php alm de ser destino dos dados digitados no formulrio HTML tambm retorna mensagens de erro ou de sucesso para o usurio no corpo da pgina.
Tendo todos esses detalhes esclarecidos vamos efetivamente explicar a montagem dos cdigos
por etapas.
Etapa 1
O nosso formulrio precisa ser autenticado para envio da mensagem. Usaremos para isso, dados
da hospedagem e recursos em PEAR.
PEAR fornece bibliotecas estruturadas e aplicaes de cdigo PHP. Para que a autenticao de
nosso formulrio funcione precisamos inserir em nosso cdigo duas aplicaes do PEAR, o PEAR
Mail e o Mime. Voc pode baixar os pacotes destas aplicaes nos links a seguir:
Mail: http://pear.php.net/package/Mail/download
Mail Mime: http://pear.php.net/package/Mail_Mime/download
30
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Etapa 2
Nesta etapa comearemos a coletar e validar os dados do formulrio HTML. A validao necessria para que a mensagem no contenha caracteres maliciosos enviados por usurios mal
intencionados que visam prejudicar o sistema de alguma forma. Vamos aos cdigos.
//conta se houve erro durante a validao
$error = 0;
A primeira linha do cdigo acima um comentrio e no interpretado pelo programa. Ele
caracterizado pelo uso de duas barras antes do texto //.
J na segunda linha construmos uma varivel. Ela serve para contar possveis erros na validao
dos dados do formulrio para que sejam exibidos aos usurios. O conceito de varival explico
mais a frente.
O cdigo anterior deve ser inserido aps os cdigos de incluso dos recursos PEAR. Segue o prximo trecho:
31
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
}
}
} else {
echo <p>Por favor, preencha o seu nome!</p>;
}
A linha que contm if (isset($_POST[nome])) { verifica se existe dados e tambm coleta os dados
digitados. E sabe como ocorre esta coleta?
Essa coleta possvel porque existe uma vinculao entre o cdigo PHP e o HTML. E esta vinculao acontece graas ao atributo name usado em cada input do formulrio.
$_POST uma varivel responsvel por coletar dados digitados nestes campos de formulrios
input cujo envio se d pelo mtodo post (method = post). Para isso ele deve indicar um valor
que faa um vnculo com o atributo name de um input. E se voc reparar bem, isso que realmente acontece. Veja a seguir.
HTML:
<input type=text name=nome id=nome placeholder=Insira seu nome required>
PHP:
$_POST[nome]
Notamos que o atributo name possui o valor nome (name=nome), por isso obrigatoriamente a
varivel superglobal do PHP $_POST deve efetuar vnculo atravs do valor nome $_POST[nome].
Observao: Quando o mtodo de envio de um formulrio for method = get a varivel usada
no PHP deve ser $_GET[];
33
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Voc pode usar o valor que quiser nos atributos. Usamos em name o valor nome por uma
questo de semntica, porm poderia ser outro qualquer. O importante mesmo que o valor do
atributo name deve ser o mesmo usado em $_POST[].
Com os valores atribudos corretamente os dados digitados percorre um caminho lgico. Faremos agora uma simulao referente ao campo de insero do nome do usurio.
Primeiro digitamos os valores nos campos do formulrio:
O campo Nome recebeu o dado Galucho ( lembrando que este campo possui o atributo name
de valor nome.)
Aps preencher todos os campos o usurio clica no boto enviar.
O nosso arquivo PHP verificar se realmente houve o envio com if (!empty($_POST)) { . Se tudo
estiver certo segue a coleta de dados.
Logo em seguida o comando PHP $_POST[nome] coleta o dado Galucho, digitado no campo
de formulrio, que possui o atributo name com valor nome.
Analise a tabela a seguir e observe a vinculao entre o HTML e o PHP atravs do atributo name
da tag input e textarea.
34
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Tag HTML
Input
valor do atributo
name
nome
valor em $_POST[]
Varivel
nome
$nome
Agora que j sabemos como feita a coleta de dados digitados no formulrio HTML para o PHP,
vamos entender o cdigo que limpa esses dados e atribui o valores dos dados a varivel $nome.
Eis as linha de comando que usamos:
// limpa valores incorretos do campo nome e atribui o valor digitado e limpo varivel $nome
$nome = filter_input(INPUT_POST, nome, FILTER_SANITIZE_STRING);
Como voc j sabe a primeira linha um comentrio que explica a linha a seguir. J a segunda
reponsvel por filtrar os dados coletados em $_POST[nome] executando uma limpeza dos dados atravs das funes INPUT_POST e FILTER_SANITIZE_STRING.
Observao: Foge de nosso objetivo explicar estas funes. Caso queira conhecer mais consulte
a documentao PHP em http://php.net/manual/pt_BR/.
Continuando com nosso cdigo... Aps a filtragem, os dados so atribudos para a varivel $nome.
Logo em seguida verificado se a varivel no est vazia, caso esteja o sistema pede para o usurio preencher seu nome.
// Verifica se o usurio digitou o seu nome
if (!empty($nome)) {
$nome = trim($nome); // Remove os espaos em branco do valor
} else {
echo <p>Por favor, preencha o seu nome!</p>;
}
Voc pode estar se perguntando: Mas a gente j fez este processo l no HTML?. Sim fizemos. S
35
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
que por questo de segurana indicado realizar uma verificao tanto do lado do cliente (na
pgina HTML) quanto do lado do servidor com PHP. Uma segunda camada de validao se faz
necessria para impedir que um usurio use de forma indevida o nosso sistema para fins maliciosos. A validao do lado do cliente pode ser burlada, mas muito til para os usurios comuns
quando pensamos em usabilidade. Agora vamos entender o cdigo:
O trecho de cdigo anterior consiste em saber se o usurio digitou seu nome. Se sim, ele verifica
se existem espaos vazios desnecessrios. Se no, ele envia uma mensagem avisando o usurio
para preencher seu nome. Entretanto sabemos que a possibilidade de acontecer isso com um
usurio comum remota porque esta verificao j executada no prprio formulrio HTML.
Explicado o motivo de uma segunda verificao creio que ainda paira uma dvida em sua mente:
Varivel? O que isso?
o que veremos a seguir. Voc precisa saber o que so variveis antes de prosseguirmos, porque
elas so as protagonistas no restante do cdigo.
O que varivel?
um objeto que armazena um valor em uma regio da memria do computador, previamente
identificada, por um determinado espao de tempo.
Imagine a seguinte situao: Em um estabelecimento comercial todas as pessoas que o frequentem com objetivo de comprar algo so clientes. Porm nenhum cliente igual a outro, temos um
clientes chamados Joo, Maria, Jos.
No momento que um balconista pergunta o que o cliente deseja temos um cliente atendido. Em
programao cliente atendido seria uma varivel. Em PHP podemos definir como $cliente_atendido.
Digamos que no momento em que o estabelecimento comea a atender Joo, Joo se torna o
36
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
valor armazenado na varivel $cliente_atendido. Durante todo tempo do atendimento ele ser
o $cliente_atendido.
Esse tempo de atendimento equivale, em programao, ao tempo que um valor fica armazenado
na varivel em uma regio da memoria do computador.
Depois que Joo efetua o pagamento da compra e se despede do balconista ele deixa de ser o
valor armazenado na varivel abrindo espao para outro cliente com outras caractersticas. Pode
ser Maria, ou Jos ou outra pessoa. Entende?
Pegando esta explicao e trazendo para nosso formulrio vemos que para cada formulrio preenchido e enviado para o servidor teremos valores armazenados nas variveis do programa, por
um determinado espao do tempo, que no nosso caso se encerram assim que a mensagem
enviada para seu destino.
Isso quer dizer que os valores digitados nos campos do formulrio HTML e enviados ficam armazenados nas variveis $nome, $email, $assunto, $mensagem at que a mensagem seja enviada
com sucesso ou no. Como pessoas diferentes usaro o mesmo formulrio os valores das variveis sempre mudaro.
Com isso, agora vamos para a prxima etapa onde usaremos os valores digitados nos campos
de fomulrio email, assunto,mensagem. Coletaremos, filtraremos e armazenaremos nas variveis $email, $assunto, $mensagem de nosso programa. Em seguida verificaremos se o usurio
preencheu corretamente.
Etapa 3
Continuaremos com a validao em PHP dos dados do assunto e da mensagem que so similares
ao cdigos usados para o nome. Comeando com a validao dos dados do assunto:
37
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Voc deve ter notado que faltam os cdigos para validao dos dados do campo email. Deixamos este por ltimo , pois ele difere dos outros: alm de verificar se ele existe, temos que verificar
tambm se ele foi digitado corretamente. Veja:
// Verifica se o campo email foi preenchido e coleta o dado digitado
if (isset($_POST[email])) {
// limpa valores no conforme do campo email e atribui o valor digitado e limpo varivel $
email
$email = filter_input(INPUT_POST, email, FILTER_SANITIZE_STRING);
// Verifica se o usurio digitou o seu email
if (!empty($email)) {
$email = trim($email); // Remove os espaos em branco do valor
// Verifica se o usurio digitou um email vlido
if(!eregi(^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$,
($email)) || (filter_var($email, FILTER_VALIDATE_EMAIL) === false)) {
echo <p>Por favor entre um endereço de email válido!</p>;
}
} else {
echo <p>Por favor, preencha o seu e-mail!</p>;
}
}
Este trecho complexo abaixo responsvel por verificar se o valor digitado mesmo um e-mail :
if(!eregi(^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$, ($email)) || (filter_
var($email, FILTER_VALIDATE_EMAIL) === false)) {
39
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
41
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Etapa 4
Agora mostraremos os cdigos necessrios para o envio da mensagem focando nos trechos fundamentais. Veja:
E-mail de destino
Antes de qualquer coisa vamos inserir um cdigo para verificar se existem possveis erros:
// VERIFICA SE HOUVE ERROS NA VALIDAO
if($error == 0){
Agora precisamos do endereo de mail do seu site. Este e-mail receber as mensagens enviadas
pelos usurios.
Este endereo personalizado com o domnio do site aps o @. Ao adquirir um servio de hospedagem possvel criar este e-mail. Esse um dos motivos de possuir uma hospedagem. Falarei
mais sobre isso ainda neste e-book. Veja o cdigo:
// INCIO DAS INFORMAES PARA ENVIO DA MENSAGEM
// E-mail de destino. Caso seja mais de um destino, crie um array de e-mails
$email_destino = contato@endereco-do-seu-site.com.br; // Endereo de e-mail do seu site
Em seguida uma varivel chamada $recipients recebe o e-mail de destino.
// Dados obrigatrios
$recipients = array($email_destino);
42
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Cabealho
Cabealhos possuem as informaes comuns que encontramos no topo do e-mail como o remetente, o destinatrio, o assunto, etc.
Em nosso cabealho estamos usando variveis j apresentadas como $email e $assunto que
definem o e-mail do usurio (From) e o assunto (Subject). Tambm usamos varivel $email para
enviar uma cpia da mensagem do usurio para ele mesmo. O envio desta cpia opcional.
Como voc j sabe, $recepients possui o e-mail do site que receber a mensagem (To).
array (
From => $email, // O From *OBRIGATRIO*. Aqui ser o e-mail de quem envia a mensagem
To
=> $recipients,// O e-mail que receber a mensagem. No caso e empresa dona do site
Cc => $email, // OPCIONAL.
Permitimos que o usurio tambm receba uma cpia da mensagem que ele enviou
Subject => $assunto,
Reply-To => $email
);
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Na Hostgator voc tem a opo de registrar o domnio e tambm contratar o servio de hospedagem. Para isso basta que efetue uma pesquisa pelo nome desejado ao site digitando-o no
formulrio desta pgina http://www.hostgator.com.br/14336.html.
Caso o nome esteja disponvel o Hostgator exibir um boto para registrar o domnio com o custo de 30 Reais por ano (valor cobrado no perodo de construo deste e-book).
Clique ento neste boto. Com isso o domnio estar adicionado ao carrinho de compras.
Abrir um campo na pgina seguinte onde voc pode escolher o plano de hospedagem. Basta
clicar no link alterar e escolher nos campos que surgiro, o plano e o ciclo de pagamento.
Feito isso, necessrio em seguida preencher um formulrio com alguns dados obrigatrios e
45
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
46
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Aps o preenchimento dos dados, v ao final da pgina e clique no boto Finalizar compra. Podem surgir alguns procedimentos adicionais como confirmao e-mail de pagamento, impresso de boleto e coisas do tipo. Por isso fique atento sua caixa e e-mails.
Necessitaro de algumas horas para que sua hospedagem esteja configurada para que voc possa hospedar os arquivos de um site. A prpria empresa explica o procedimento.
Considerando tudo funcionando de acordo, vamos agora trabalhar com os dados necessrios
para prosseguir com a construo do nosso arquivo PHP.
Voc receber da empresa de hospedagem dados para efetuar login em sua conta. V at a pgina de sua hospedagem e efetue o login usando estes dados.
47
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Aps efetuar o login voc ser redirecionado para o painel de controle de sua hospedagem,
algo similar figura seguinte Com ele possvel voc gerenciar os arquivos que compe o seu
site, banco de dados, domnios e ao que mais importa a esse e-book que o gerenciamento de
e-mails. Clique no cone E-mail accounts conforme indica na imagem.
Feito isso, abrir uma pgina onde voc finalmente pode criar seu e-mail personalizado. Se seu
plano permitir voc poder criar contas de e-mail ilimitadas. Lembra-se do e-mail de destino?
Crie uma conta de e-mail para ser usado como destino das mensagens dos usurios. Este e-mail
ser usado nesta linha de cdigo j vista neste tutorial:
48
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Guarde estes dados, pois sero usados neste arquivo PHP e tambm para acessar sua conta
e-mail.
Bom, agora precisamos dos parmetros SMTP. Veja o cdigo abaixo:
// Parmetros para o SMTP. *OBRIGATRIO*
$params =
array (
auth => true, // Define que o SMTP requer autenticao
host =>
, // Aqui vai o servidor SMTP
49
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
username =>
password =>
);
Vemos que falta preencher 3 dados. Voc obtm esses dados nas configuraes de e-mail de sua
hospedagem.
No Hostgator, na mesma pgina que voc criou a conta de e-mail, voc tem acesso a esses dados
ao seguir o menu More e depois clicar em Configure E-mail Client.
Veja na figura a seguir:
50
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Voc ser redirecionado para uma pgina que fornecer dados para dois tipos de configurao.
Veja na imagem a seguir que o Hostgator fornece, no bloco esquerda, uma configurao recomendada, pois provm uma cifragem dos dados a serem transmitidos.
A opo a direita no trabalha com esta camada de segurana. Veja na imagem a seguir:
Vamos configurar primeiro com a verso mais simples, que usa os dados da direita.
Username o nome da conta de e-mail que voc criou (contato@endereco-do-seu-site.com.br).
Password a senha desta conta de e-mail;
Outgoing Sever nome do domnio do seu site precedido por mail.. Seria algo similar a isso
mail. endereco-do-seu-site.com.br.
51
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Muito bem. As informaes cruciais do arquivo PHP j foram inseridas. Estamos a um passo de
terminar nosso programa.
Etapa 5
O que o cdigo a seguir faz pegar todas as informaes coletadas nas etapas anteriores e atravs das aplicaes em PEAR efetuar o envio. Caso ocorra um erro o sistema informar atravs de
uma mensagem no corpo da pgina enviar.php o erro e fornecer um link para alguma pgina,
que pode ser a de contato para que o usurio possa efetuar uma nova tentativa. Entretanto se
tudo der certo, e o que desejamos, o usurio ser informado que a mensagem foi enviada com
sucesso. Ento, conforme programado, a conta de e-mail usada no cdigo receber a mensagem
do usurio e o usurio receber uma cpia.
// Define o mtodo de envio
$mail_object =& Mail::factory(smtp, $params);
$result = $mail_object->send($recipients, $headers, $body);
if (PEAR::IsError($result)) { // Verifica se ocorre erro
echo ERRO ao tentar enviar a mensagem! ( . $result->getMessage(). ); /* Caso ocorra erro,
mostra o erro. */
echo <p><a href=http://endereco-do-seu-site.com.br/>Ir para seu site</a></p>; /* Mostra
tambm na pgina, um link para alguma pgina predefinida. */
} else { // Caso no ocorra erro (Mensagem foi enviada para destino)
echo <p>Mensagem enviada com sucesso!<br/>Em breve entraremos em contato!<br/>A
[Nome de sua empresa] agradece a sua visita!</p>; /* Exibe um mensagem afirmando que deu
tudo certo. */
echo <p><a href=http://endereco-do-seu-site.com.br/>Ir para seu site</a></p>;
}
53
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
} else {
//Se houve algum erro na validao, exibido essa mensagem
echo A mensagem no pde ser enviada, por haver algum erro!;
echo <p><a href=http://endereco-do-seu-site.com.br/>Ir para seu site</a></p>; // Mostra
tambm na pgina, um link para alguma pgina predefinida.
}
?>
</body>
</html>
Etapa 6
Terminamos o desenvolvimento dos cdigos necessrios para um site possuir um formulrio de
contato. A prxima etapa testar se tudo est funcionando, porm antes de qualquer coisa quero
te passar algumas recomendaes:
Voc ter acesso completo aos arquivos enviar.php e contato.html deste e-book neste link:
http://ebookhtmlcss.com/arquivos/bonus-formulario/arquivos-para-estudos.zip .
Caso voc queira usar os cdigos voc ter que adaptar alguns trechos para se enquadrar ao que
planejou em seu site, como por exemplo, os atributos name (name=) usados em seus formulrios tem que bater com os valores usados em $_POST ($_POST[].
Voc tambm deve alterar os dados de SMTP e de domnio encontrados no arquivo enviar.php
de acordo com o domnio a ser usado. No se esquea de tambm baixar o pacote PEAR indicado
no decorrer deste e-book e coloc-los nos diretrios corretos dentro dos includes PHP.
Outra coisa importante que indico que o arquivo enviar.php esteja no mesmo diretrio do
arquivo contato.html. Caso no estejam no mesmo diretrio ser necessrio mudar o valor do
atributo action dentro da tag de abertura do elemento form no documento HTML.
54
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Agora que voc est por dentro destes detalhes importantes, para quando for por em prtica em
seus projetos, vamos aos testes!
Para testar agiremos como um usurio comum preenchendo o formulrio de contato do site
do Galucho.
Para visualizar a pgina pronta visite este link: http://ebookhtmlcss.com/galucho-bonus-contato/contato.html.
Usarei uma conta de e-mail do Gmail que tenho para testes.
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Agora vou at a conta de e-mail, que no caso do domnio do Ebook Solidrio, para ver se o
e-mail chegou corretamente.
Como esta conta est dentro do Hostgator, efetuo o login com os dados que ele me forneceu
quando adquiri a hospedagem.
Depois eu sigo o caminho E-mail accounts, menu more e em seguida, invs de ir em Configure E-mail Client, clico em Access Webmail. Abrir a seguinte pgina com 3 opes de
softwares de e-mail.
56
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Voc pode optar por qualquer um deles porque todos devem receber a mensagem.
Como voc ver na imagem a seguir, a mensagem chegou com sucesso.
Por questo de privacidade alguns dados foram omitidos, entretanto podemos ver que o objetivo
foi cumprido. Veja que tanto no Header, quanto no corpo da mensagem os dados so os mesmos
que foram digitados no formulrio de contato.
Confira o resultado:
57
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
58
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Muito bem! O teste foi um sucesso confirma que nosso sistema de e-mail funcional
59
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256
Concluso
Este um modelo prtico de pgina de contato com integrao ao PHP que voc pode aplicar
em seus sites. Voc pode optar por outros se quiser. O intuito deste e-book que voc tenha uma
base para entender como funcionam os sistemas de uma forma geral, bele?
Esperamos que seja til e que esses e-book fortalea ainda mais os seus conhecimentos.
E se voc gostou de programar eu lhe sugiro continuar estudando esta parte de desenvolvimento.
Voc pode sim se tornar um desenvolvedor e com isso criar seus prprios cdigos e sistemas.
Basta voc querer e se dedicar aos estudos.
Caso voc queria saber mais sobre programao e continuar os seus estudos em PHP eu lhe indico o Curso da Playcode .
Nesse curso da Playcode voc vai aprender a programar do zero e do jeito certo!
Ento, confira o curso aqui: http://goo.gl/0SxonZ
At mais.
Abrao.
Elaborado por:
David Arty e Ed Francisco
60
Licenciado para Jos Rodrigo Lemos Pinto, E-mail: rodrigolemos8@hotmail.com, CPF: 03381655256