Curso de CGI

Manipulando os Elementos Que o Formulário Não Passa

Agora que terminamos a parte mais difícil do script, é preciso preparar o restante. O formulário não passou quatro itens de que o script necessita:

• A data.
• endereço de correio eletrônico da pessoa que recebe o pedido.
• path e nome do programa de correio.
• Uma linha de assunto para o correio eletrônico que informa ao destinatário que o formulário de pedido é para a compra de um carro. Essa linha ajuda o leitor a compreender a natureza do pedido sem ter de ler a mensagem inteira.

Obtendo a Data

Pode-se obter a data automaticamente usando a função chop() do Perl:
chop($date = `date`); Este comando oferece como resultado algo parecido com isto: Thu May 23 15:02:15 PDT 1998 É possível mudar o formato da string $date. Procure assunto referente a date.

Lidando com o Correio Eletrônico

Definiremos então as strings que determinam o destino da mensagem de correio eletrônico, o programa de correio e a linha de assunto:

$mailprog =”/usr/lib/sendmail”;
$sendto = “rniles\@selah.net”;
$subject = “Compra de automovel”;

Agora, vamos enviar a mensagem. Primeiro use a função open() para enviar sua saída para sendmail:
open(MAIL, “|$mailprog -t”) |

Esse comando simplesmente designa o descritor MAIL como um pipe para a string $mailprog definida anteriormente. O pipe altera STDOUT. Sem ele, todas as informações vão retornar para o visitante dentro de um documento HTML. Se mudarmos a direção do pipe, é possível enviar as informações para o programa UNIX sendmail.
As três linhas a seguir criam o cabeçalho da mensagem. A string $sendto definida acima determina a linha To:. A linha From: é uma combinação de três dos campos digitados pelo visitante. Usaremos o endereço de correio eletrônico do visitante, seu nome e sobrenome. Finalmente, acrescentamos o assunto.
Juntas, as três linhas ficam assim:
print MAIL “To: $sendto\n”;
print MAIL “From: $form{‘email’} ($form{‘fname’} $form{‘lname’})\n”;
print MAIL “Subject: $subject\n\n”;
Observe o uso de \n, que é alimentação de linha. Sem \n, tudo ficaria em uma só linha. Depois de imprimir Subject:; incluímos duas novas linhas que separam o cabeçalho do restante da mensagem.

A seguir pedimos à senteça print para imprimir todo o conteúdo do descritor MAIL até encontrar EOM. Essa condição permite o uso da sentença print apenas uma vez para imprimir várias linhas.
print MAIL <<“EOM”; Em $date, $form{‘fname’} $form{‘lname’} decidiu comprar um carro conosco.
$form{‘fname’} escolheu um $form{‘model’} $form{‘color’} $form{‘year’} $form{‘doors’}- porta(s).
$form{‘fname’} escolheu os seguintes opcionais:
EOM

Observe como usamos as string do formulário para criar a sentença. Basta inserir as strings no texto, de modo que leas ajudem a criar a mensagem. Dependendo do que o cliente digitou no formulário, a mensagem pode parecer com:

Em Thu Jul 1 11:59:42 EST 1998, Eduardo Mota decidiu comprar um carro conosco. Eduardo escolheu um Tortoise verde 1995 2 portas(s).
Eduardo queria os seguintes opcionais:

A seguir vamos analisar algumas sentenças if( ). O script diz essencialmente que:

Se existe airbag, então imprima Airbag do lado do passageiro.
Se existe pcaps, então imprima Calotas de plástico.
Se existe rdefrost, então imprima Desembaçador no vrido traseiro
Se existe stire, então imprima Estepe.

Com Perl codificamos essas instruções if( ) da seguinte maneira:

if ($form{‘airbag’})
{
print MAIL “- Airbag para o passageiro\n”;
}
if ($form{‘pcaps’})
{
print MAIL “- Calotas de plastico\n”;
}
if ($form{‘rdefrost’})
{
print MAIL “- Desembacador do vidro traseiro\n”;
}
if ($form{‘stire’})
{
print MAIL “- Estepe\n”;
}

Então, para economizar trabalho, digitamos novamente o seguinte comando:

print MAIL <<“EOM”;

Esse comando permite que usemos o comando print apenas uma vez. Veja se consegue descobrir o que acontece no exemplo abaixo:

Seguem algumas informacoes pessoais de $form{‘fname’}:
$form{‘fname’} $form{‘lname’}
$form{‘email’}
$form{‘street’}
$form{‘city’}, $form{‘state’} $form{‘zip’}
Fone res.: $form{‘hphone’}
Fone com.: $form{‘wphone’}
$form{‘fname’} pediu para que nos:
EOM

2 comentários

  1. otimo curso pra quem gosta de construi paginas dinâmicas.

  2. LAURA

    Olá… Desculpe se as pergunta forem básicas, mas sou autodidata e pergunto para entender bem.
    No caso de tabelas, como ficaria?
    Qual é a função do ? E a linha de comando é um desvio para a buycar.pl. Sempre será essa extensão pl?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *