
Formulário Fale Conosco
#16
Posted 29/08/2005, 15:06
#!/usr/bin/perl -w
# Acima deve ser colocado o caminho do Perl
################################################################
# CONSULTE O ARQUIVO MANUAL.HTML PARA #
# SABER COMO CONFIGURAR ESSE CGI. #
# A versao 2.5 esta mais segura e mais objetiva #
# ------------------------------------ #
# Programa FormUla v2.5 #
# Data 17/09/2002 #
# Arquivos: formula.cgi, formulario.html, formulario2.html #
# erro.html, confirmado.html, manual.html, botao.gif #
# Verifique novas versoes em: #
# http://www.oceanodigital.com/ods #
# ------------------------------------ #
################################################################
############### CONFIGURACAO ###################################
# Coloque abaixo o seu e-mail que vai receber os campos do formulario
# Existe possibilidade de colocar uma \ (barra) antes da @ (arroba). Exemplo: \@
$SeuEmail = 'vendas@queijospinheiros.com.br';
# Modifique abaixo com o seu dominio ou os que podem ter acesso ao script
@referers = ('www.queijospinheiros.com.br','queijospinheiros.com.br');
# Caminho do sendmail em seu servidor
$sendmail = '/usr/sbin/sendmail -i -t';
# Pagina de erro
$erro = "http://www.queijospi....br/erro.html";
# Pagina de confirmacao de envio do formulario
$fim = "http://www.queijospi...nfirmado.html";
# Coloque abaixo o que voce quer que apareca no assunto
$Subject = "pedido!";
################ FIM DA CONFIGURACAO ############################
#############################################
######## NAO ALTERE NADA ABAIXO #############
#############################################
&segurovamp;
&metodo;
$Nome = $in{'Nome'};
$Email = $in{'Email'};
$Telefone = $in{'Telefone'};
$Mensagem = $in{'Mensagem'};
&formatoemail;
&checa;
&form;
print "Location: $fim\n\n";
exit;
#######################################
sub form {
open (MAIL,"|$sendmail -t");
print MAIL "To: $SeuEmail\n";
print MAIL "From: $Email\n";
print MAIL "Subject: $Subject\n";
print MAIL "$Mensagem\n\n";
print MAIL "$Nome\n";
print MAIL "E-mail: $Email\n\n";
print MAIL "Telefone: $Telefone\n\n";
close (MAIL);
}
#######################################
sub metodo { local (*in) = @_ if @_;
local ($i, $key, $val); if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val; } return length($in); }
#######################################
sub formatoemail {
if (index($Email, "@") < 1) {&esquec;}
if (index($Email, ".") < 1) {&esquec;}
if (index($Email, " ") > -1) {&esquec;}
}
sub checa {
if (!$Nome || $Nome eq ' ') {&esquec;}
if (!$Email || $Email eq ' ') {&esquec;}
if (!$Telefone || $Telefone eq ' ') {&esquec;}
if (!$Mensagem || $Mensagem eq ' ') {&esquec;}
}
sub esquec {
print "Location: $erro\n\n";
exit;
}
#######################################
sub segurovamp {
if ($ENV{'HTTP_REFERER'}) {
foreach $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$check_referer = '1';
last;
}}}
else {$check_referer = '1';}
if ($check_referer != 1) {
print "Location: $erro\n\n";
exit;
}}
#######################################
exit;
#17
Posted 29/08/2005, 16:18
To começando a gostar desse negoico de cgi e etc.. !
hehe falows


#18
Whitesnake
Posted 29/08/2005, 22:46
#!/usr/bin/perl
print "Content-type:text/html\n\n";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@conteudo = split(/&/, $buffer);
foreach $par (@conteudo) {
($campo, $valor) = split(/=/, $par);
$valor =~ tr/+/ /;
$valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$CAMPO{$campo} = $valor;
}
$qs =$ENV{QUERY_STRING};
if(!$qs || $qs eq "etapa=1"){ # Etapa 1 do formulário, ou página inicial
print qq|
<html>
<body>
<form action="?etapa=2" method="post">
<table>
<tr><td>Nome:</td><td><input type="text" name="nome"></td></tr>
<tr><td>Email:</td><td><input type="text" name="email"></td></tr>
<tr><td align="center" colspan="2"><input type="submit" value="Continuar >>"></td></tr>
</table>
</form>
|;
}
if ($qs eq "etapa=2"){ # Etapa 2 do formulário, ou segunda página
print qq|
<html>
<body>
<form action="email.pl" method="post">
<input type="hidden" name="nome" value="$CAMPO{nome}">
<input type="hidden" name="email value="$CAMPO{email}">
<table>
<tr><td>Endereço:</td><td><input type="text" name="nome"></td></tr>
<tr><td>Comentários:</td><td><textarea name="comentarios"></textarea></td></tr>
<tr><td align="center" colspan="2"><input type="submit" value="Enviar"></td></tr>
</table>
</form>
|;
}
Flw.
#19
Posted 30/08/2005, 14:44
show de bola brother.......era isso mesmo q eu queria fazer!!!!!
Só ñ sabia como!
Agora é só ir montando os ifs e fazer o resto do FORM !!!
Magina a pessoa preencher 120 campos de uma vez só? kakakakakaka
Ai é fod.....

Foi um ótimo Tutorial !
Tu podia dar uma explicada melhor pra galera e colocar na sessão de tutos, pq ñ vi nenhum tuto desse tipo aqui no Cgi =P
Muito obrigado pela explicação e pela ajuda mais uma vez!!!
Abraço ,Luis
2 user(s) are reading this topic
0 membro(s), 2 visitante(s) e 0 membros anônimo(s)