HTML
Dicas de Uso para a Construção de Páginas
Web
Uma das perguntas mais freqüentes que se
fazem na lista HTML_BRasil é como integrar um FORM e um CGI, de
tal sorte a que os dados digitados sejam entregues ao Web
Master, sem que seja necessário que os visitantes tenham
instalado, ou simplesmente usem, um programa de E-Mail.
Para alcançar esses objetivos, é
obrigatório atender-se a todas as três condições abaixo:
Ter acesso a um diretório CGI, no
servidor onde é hospedada sua Home Page;
em geral os servidores gratuitos NÃO permitem esse tipo de
CGI personalizado
Adaptar seu FORM para que ele envie
a saída dos dados digitados para o programa CGI;
Criar um script PERL, que será o
programa CGI que manipulará os dados digitados e permitirá
usar o programa SENDMAIL - existente no Servidor - para
enviar os dados para o Web Master, diretamente;
Parte # 2: Criando seu script CGI personalizado
O Código abaixo traz nosso script PERL completo.
Para Copiar e Colar em seu Editor de Textos vá até o último
link nesta página, e siga as instruções
básicas abaixo, para adaptar às necessidades do seu Servidor:
Chamada ao programa Perl e ao SendMail :
#!/usr/bin/perl
$mail_prog = '/usr/lib/sendmail';
Estas têm que ser as primeiras duas linhas de seu script PERL -
cheque com seu Hoster se eles usam os mesmos diretórios, e
altere em acordo com sua determinação.
Chamada a Subrotina de Entrada de Dados e Definição dos Campos
:
Os nomes dos campos devem ser exatamente os mesmos que se
encontram em seu FORM. Não altere nada nesta área, ou você
poderá ter sérios problemas com seu script.
Validação
dos Campos Obrigatórios e Chamada a Subrotina de Erro :
# VALIDA AS ENTRADAS OBRIGATóRIAS
if ($CDROM eq "") {$CDROM = "NÃO";}
if ($SCANNER eq "") {$SCANNER = "NÃO";}
$errmsg = "<p>O campo 'NOME' deve ser preenchido.</p>\n";
if ($NOME eq "") {
$message = $message.$errmsg;
$found_err = 1;}
$errmsg = "<p>Por favor entre com um endereço de E-MAIL válido!</p>\n" ;
if ($EMAIL !~ /.+\@.+\..+/) {
$message = $message.$errmsg;
$found_err = 1; }
if ($found_err) {
&PrintError; }
Somente os campos obrigatórios devem estar presentes nesta
seção. Ao final a rotina checa se houve algum erro - neste
caso aciona a subrotina de apresentação dos Erros encontrados.
Mostra todos
os dados digitados para confirmação do Usuário:
# ***MOSTRA NA TELA OS DADOS QUE FORAM PREENCHIDOS
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'."\n" ;
print "<html>\n" ;
print "\n" ;
print "<head>\n" ;
print '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'."\n" ;
print '<meta name="Author" content">'."\n" ;
print '<meta name="GENERATOR" content="Microsoft FrontPage 4.0">'."\n";
print "<title>Obrigado pelo seu Cadastro</title>\n";
print "</head>\n";
print "\n";
print '<body bgcolor="#8080C0" text="#000000" link="#800000" vlink="#000080" alink="#800000">'."\n" ;
print "\n";
print '<p align="center"><font color="#FFFFFF" face="Verdana" size="3"><strong>Obrigado,'."\n";
print "".$NOME."!</strong></font></p>\n";
print "\n";
print "<hr>\n";
print "\n";
print '<p align="left"><font color="#000080" face="Verdana" size="2"><strong>Vc. digitou '."\n";
print "estes dados:</strong></font></p>\n";
print "\n";
print '<p align="left"><font color="#000080" face="Verdana" size="2">E-mail: <b>'.$EMAIL.'</b><br>'."\n";
print "Hardware: CPU <b>".$CPU."</b> - Clock: <b>".$CLOCK."</b> - RAM: <b>".$RAM."</b><br>\n";
print "Possui: CD-ROM: <b>".$CDROM."</b> - Scanner: <b>".$SCANNER."</b><br>\n";
print "\n";
print "<hr>\n";
print "\n";
print '<p><font face="Verdana" size="1">Este material é apenas um EXEMPLO de uso de CGI'."\n" ;
print " / Obrigado por visitar as nossas páginas...</font></p>\n" ;
print "\n" ;
print "<hr>\n" ;
print '<p align="center"><font color="#FFFFFF" face="Verdana" size="1">Clique no link ao lado para retornar'."\n";
print 'à nossa </font><strong><font color="#0000FF" face="Verdana" size="2"><a'."\n" ;
print 'href="http://www.abcdicas.com.br" target=\"_top\">Home Page</a></font></strong></p>'."\n" ;
print "</body>\n" ;
print "</html>\n" ;
Esta seção cria uma página WEB dinâmica (ela não existe em
lugar algum deste mundo!), que é gerada logo em seguida ao
pressionar do botão SUBMIT do FORM. O usuário é convidado a
rever os dados digitados, e pode avançar, passando para outra
área de seu site, ou pressionar o botão BACK/VOLTAR de seu
browser, no caso de necessitar corrigir algum dado digitado de
forma incorreta.
Mostra todos
os dados digitados incorretamente (entre os campos
obrigatórios):
Esta seção cria uma página WEB dinâmica (ela não existe em
lugar algum deste mundo!), que é gerada logo em seguida ao
pressionar do botão SUBMIT do FORM, mas apenas nos casos de
algum campo obrigatório ter sido deixado em branco, ou tenha
sido digitado de forma incorreta. O usuário é convidado a
rever os dados digitados de forma incorreta, e deve pressionar o
botão BACK/VOLTAR de seu browser, para que possa corrigir os
dados digitados de forma incorreta.
Esta seção encerra a operação de checagem dos dados, feitas
em tempo real pelo script PERL, e termina com os comandos de
saída (EXIT 0;) e (RETURN 1;). A última rotina
que iremos apresentar, responsável pelo envio de uma mensagem
para a caixa-postal do Web Master do site (veja próxima
seção), deve estar fisicamente antes desses comandos de saída
do script, ou senão jamais será executada.
Envio da
Mensagem de E-Mail (através do SendMail):
# *** ENVIA EMAIL
$recip = $EMAIL ;
open (MAIL, "|$mail_prog -t");
print MAIL "To: $recip\n";
print MAIL "Reply-to: cgi\@abcdicas.com.br\n";
print MAIL "From: cgi\@abcdicas.com.br\n";
print MAIL "Subject: TESTE DE ENVIO DE E-MAIL POR CGI\n";
print MAIL "\n\n";
print MAIL "Prezado/a Internauta:\n" ;
print MAIL "\n" ;
print MAIL "Recebemos seu cadastro (vide detalhes abaixo), em nossa caixa-postal.\n" ;
print MAIL "\n" ;
print MAIL "Obrigado pelo seu retorno\n" ;
print MAIL "\n" ;
print MAIL "Os Dados Informados foram estes:\n" ;
print MAIL "Nome: ".$NOME."\n" ;
print MAIL "\n" ;
print MAIL "Seu Hardware:\n" ;
print MAIL "CPU: ".$CPU." - Clock: ".$CLOCK." - RAM: ".$RAM."\n" ;
print MAIL "CD-ROM: ".$CDROM." - Scanner: ".$SCANNER."\n" ;
print MAIL "\n" ;
print MAIL "\n" ;
print MAIL "Francisco Panizo Beceiro\n";
print MAIL "WebMaster da abcDICAS.com.br\n";
print MAIL "http://www.abcdicas.com.br\n";
print MAIL "cgi\@abcdicas.com.br\n";
print MAIL "\n\n";
close (MAIL);
Este é o bloco responsável pelo envio dos dados digitados no
FORM, e já anteriormente validados, através do programa SendMail,
existente no servidor onde seu site está hospedado. Note que a
variável $EMAIL, correspondente ao campo E-MAIL do FORM, é
atribuída à variável interna $recip. Este será o
recipiente da mensagem de e-mail, que conterá todos os dados
digitados pelo visitante do seu site.
ATENÇÃO:
Em nosso exemplo essa variável e os valores para os campos FROM
e REPLY-TO estão obviamente invertidos. Isto é devido a que,
neste nosso exemplo, preparamos um EXEMPLO VIVO, para você
testar todos os códigos - assim invertemos esses campos para
que você possa experimentar e você mesmo possa receber a
mensagem de retorno. Não esqueça de inverter esses campos na
sua aplicação real.
Atenção: não temos condição de dar suporte direto para todos os visitantes;
use nosso
Super Fórum Web Design para poder enviar suas dúvidas. O registro é gratuito!
Para um suporte diferenciado use o nosso
Clube do Help Desk.