Jump to content


Photo

Formulário Fale Conosco


  • Faça o login para participar
18 replies to this topic

#16 luciano13

luciano13

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 29/08/2005, 15:06

Po galera tentuei colocar novos dados pra preenchimento neste formulario e naum deu certo alguem me ajude. hauauh tah fods.. to tomando varrias broncas no trampo!





#!/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 luciano13

luciano13

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 29/08/2005, 16:18

Bom agora consegui mesmo ..hehe valew ae galera sem mais duvidas!
To começando a gostar desse negoico de cgi e etc.. !
hehe falows (y) :ph34r:

#18 Whitesnake

Whitesnake
  • Visitantes

Posted 29/08/2005, 22:46

E ae Iron você pode fazer assim, utilizando um modo bem mais fácil, que nao precisa chamar o módulo CGi:

#!/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 Iron-Maiden

Iron-Maiden

    12 Horas

  • Usuários
  • 231 posts
  • Sexo:Não informado

Posted 30/08/2005, 14:44

Whitesnake
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




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq