Escolar Documentos
Profissional Documentos
Cultura Documentos
ndex
Um Formulrio de Pedidos On-line A Pgina Web A Seo Introdutrio do Documento HTML Definindo as Informaes Que Devem Ser Ocultadas do Cliente Apresentando as Opes do Produto Enviando o Pedido O Script Determinando o Mtodo Dividindo as Informaes em Pares Nome/Valor Manipulando os Elementos Que o Formulrio No Passa Definindo as Opes de Pagamento do Cliente Enviando uma Mensagem de Resposta ao Cliente Resumo Crditos & Autoria LOGO Biblioteca Virtual do STI
Pgina
01 01 02 02 03 05 05 05 06 06 08 09 10 10 11
A Pgina Web
Primeiro preciso criar a pgina Web. Esta pgina permite que o visitante digite informaes, selecione itens de listas ou checkbooks e submeta as informaes digitadas, que ento so enviadas para o script. Para que o documento HTML seja efetivo, ele precisa ser intuitivo. Simplesmente olhando a pgina, o cliente deve ser
capaz de compreender qual informao precisa ser digitada em qual lugar. Quanto mais intuitiva for sua pgina, mais chances deu script ter de funcionar corretamente, evitanto o perigo de desencorajar o visitante. A primeira seo do documento deve indicar ao visitante qual a finalidade da pgina. No exemplo de pgina usado neste Tutorial, uma empresa de venda de carros deseja comercializ-los na Web. Em seguida, deve-se permitir que o visitante digite informaes pessoais como nome, endereo de correio eletrnico, endereo residencial e tudo mais que for preciso para processar o pedido e enviar o produto ao cliente. Finalmente, oferea ao visitante uma lista de itens para escolher. No exemplo de pgina usado neste tutorial, permita que o visitante escolha um carro e seus acessrios.
Agora coloque essa lista no documento da seguinte maneira: Digite seu primeiro nome: <INPUT TYPE="text" NAME="fname" SIZE=46> Seu sobrenome: <INPUT TYPE="text" NAME="lname" SIZE=46> Seu email: <INPUT TYPE="text" NAME="fname" VALUE="login@provedor.com.br" SIZE=46> Separar o nome do sobrenome em vez de colocar ambos no mesmo campo uma boa idia. Assim fica mais fcil manipul-los separadamente ao criar o script. Observe o uso do atributo VALUE. Isso ajuda a dar ao visitante uma idia do tipo de informao de que voc precisa. Alm disso, use o atributo SIZE para limitar o tamanho de cada campo em 46. Isso serve apenas para manipular a aparncia do documento HTML. Agora precisamos de um endereo de correspondncia para enviar o produto ao cliente: Endereo = street
Tambm podemos pedir o nmero de telefone, se o cliente no puder ser acessado via correio eletrnico: Telefone Residencial Telefone Comercial = hphone = wphone
Essas informaes devem ser suficientes para a sua pgina Web. Claro, possvel acrescentar qualquer outra informao que atenda s suas necessidades especficas. Agora colocamos essas informaes no documento: Endereo: <INPUT TYPE="text" NAME="street" SIZE=46> Cidade: <INPUT TYPE="text" NAME="city" SIZE=12> Estado: <INPUT TYPE="text" NAME="state" SIZE=4> CEP: <INPUT TYPE="text NAME="zip" SIZE=9> Fone Res.: <INPUT TYPE="text" NAME="hphone" SIZE=13> Fone Com.: <INPUT TYPE="text" NAME="wphone" SIZE=13> <HR>
Neste exemplo, modelo NAME e Tortoise, Hyena, Aphid e Diamond Black so os valores. Pode-se deixar o usurio selecionar um modelo pelo marcador <SELECT> ou usar o tipo de input radio. Neste Tutorial, usaremos o marcador <SELECT>. Quanto s opes de cores, temos verde, roxo, marrom e azul: Cor = verda roxo marrom azul A seguir oferecemos ao cliente as opes para os modelos dos anos de 1995, 1996, 1997 e 1998: Ano = 1995 1996 1997 1998
Para fornecer essas opes no cdigo, o exemplo abaixo usa <SELECT> para modelo e ano e o tipo de input radio para cor: Aqui est, sua chance de escolher alguns carros de alta qualidade! Modelo/Ano: <SELECT NAME="model"> <OPTION> Tortoise <OPTION> Hyena <OPTION> Aphid <OPTION> Diamond Black </SELECT><SLECT NAME="year">
<OPTION> 1995 <OPTION> 1996 <OPTION> 1997 <OPTION> 1998 </SELECT> Cor: </PRE> <INPUT TYPE="radio" NAME="color" VALUE="Roxo"> Roxo <INPUT TYPE="radio" NAME="color" VALUE="Verde"> Verde <INPUT TYPE="radio" NAME="color" VALUE="Marrom"> Marrom <INPUT TYPE="radio" NAME="color" VALUE="Azul"> Azul Nota: Observe que o marcador <PRE> foi temporariamente removido para que os botes sejam exibidos lado a lado. Se fssemos incluir o marcador <PRE>, seria preciso colocar todas as quatro cores em uma linha, e como a largura do monitor limitada, no conseguimos ver nem metade das informaes. Sem o marcador <PRE>, as opes so colocadas lado a lado (o HTML no reconhece espaos). Agora apresentamos as opes adicionais: airbag do lado do passageiro, desembaador no vidro traseiro, calotas de plsticos e um estepe. Atribua a cada uma destas opes seu prprio valor. Use tambm o tipo de input checkbox para que, caso o cliente no selecione uma opo, voc no tenha de se preocupar com isso dentro do script. O script simplesmente verifica se o usurio selecionou o checkbox e em caso positivo, reage do modo apropriado. Airbag do lado do passageiro Calotas de plstico Desembaador no vidro traseiro Estepe A pgina HTML teria o seguinte aspecto: <PRE> <INPUT TYPE="checkbox" NAME="airbag">Airbag do lado do passageiro <INPUT TYPE="checkbox" NAME="pcaps">Calotas de Plstico <INPUT TYPE="checkbox" NAME="rdefrost">Desembaador do Vidro traseiro <INPUT TYPE="checkbox" NAME="stire">Estepe Observe que cada nome descreve o que o valor realmente . Ao examinar seu cdigo, possvel determinar com segurana o que representa cada valor. Os nomes so curtos, mais auto-explicativos. agora permitiremos que o visitante escolha um modelo de duas, trs ou quatro portas: Portas = 2 3 4 = iarbag = pcaps = rdefrost = stire
Podemos usar o marcador <SELECT> ou tipo de input radio. Aqui usaremos novamente o tipo de input radio para deixar o visitante escolher uma das trs opes: <INPUT TYPE="radio" NAME="doors" VALUE="2"> 2 portas <INPUT TYPE="radio" NAME="doors" VALUE="3"> 2 portas com bagageiro <INPUT TYPE="radio" NAME="doors" VALUE="4"> 4 portas Depois de receber as informaes pessoais do cliente e sua escolha de carro, preciso saber como ela vai pagar. Usando o nome Pagamento, damos ao cliente duas opes: Fatura e Carto de Crdito. Pagamento = Fatura Carto de Crdito
(Claro, os vendedores de automveis no costumam simplesmente "mandar a conta" para os clientes. O exemplo usa essas opes pouco realistas apenas para demostrar como possvel oferecer opes diferentes aos consumidores.) Se o cliente escolher a opo carto de crdito, ser preciso obter tambm as informaes sobre o carto. A seguir, apresentamos trs campos associados normalmente a cartes de crdito: o nome do carto, o nmero e a data de validade. Nome do Carto = Cname
= Cnum = cexpire
Ao escrever o script, verifique se o cliente escolheu a opo de carto de crdito; neste caso, preciso incluir as informaes sobre o carto ao enviar o pedido. Agora, basta formatar as opo de pagamento usando o cdigo HTML, conforme mostra o exemplo abaixo:
<HR> Pagamento <INPUT TYPE="radio" NAME="billing" VALUE="bill"> Fatura <INPUT TYPE="radio" NAME="billing" VALUE="Carto de Crdito"> Carto de Crdito Nome no Carto: <INPUT TYPE="text" NAME="Cname" SIZE=46> Nmero do Carto: <INPUT TYPE="text" NAME="cnum" SIZE=14> Validade do Carto: <INPUT TYPE="text" NAME="xexpire" SIZE=8> </PRE> <HR>
Enviando o Pedido
Finalmente, devemos permitir que o cliente nos envie as informaes. Para isso basta usar o tipo de input submit; convm incluir tambm o tipo de input reset para o caso de o cliente precisar refazer o pedido. Agora, se isto que voc quer pressione <INPUT TYPE="submit" VALUE="AQUI"> Ou se acha que cometeu um erro, <INPUT TYPE="reset" VALUE="Apague formulrio"> </FORM> </BODY> </HTML> Como no adicionaremos mais nada ao formulrio, fechemos o marcador <FORM>, assim como <BODY> e <HTML>. Agora que terminamos, nosso formulrio de pedidos deve estar bastante parecido com o exemplo dado inicialmente. Claro, possvel acrescentar imagens grficas, fundos diferentes ou links para outras pginas a fim de dar o formulrio de pedidos um aspecto profissional. Pode-se at mesmo mudar a formatao HTML da pgina para que fique mais a seu gosto. Entretanto, para o propsito deste exemplo especfico, o formulrio est concludo. Agora hora de trabalhar sobre o script.
O Script
Agora basta acessar as informaes que o visitante digitou. Crie um script que envie essas informaes pelo correio eletrnico para quem vai process-las. Ento informe ao visitante que seu pedido foi recebido com sucesso.
Determinando o Mtodo
Primeiro preciso descobrir se o script usou o mtodo POST para receber as informaes.
As informaes foram enviadas pelo mtodo POST ? Se no, informe o visitante. Se sim, continue. Primeiro, indique ao script qual programa est sendo usado para interpret-lo. Neste caso, estamos usando Perl. preciso informar ao script o path e nome do arquivo do intrprete. Nota: no UNIX, o modo mais fcil de encontrar o path de um arquivo com os comandos which e whereis. H muitos tipos de UNIX, portanto, se um destes comandos no funcionar, tente o outro. Em seguida, defina o tiro MIME da sada do script. #! /usr/local/bin/perl If ($ENV{'REQUEST_METHOD'} NE 'POST') { print <<"HTML"; <HTML> <HEAD> <TITLE>Lamento!</TITLE> </HEAD> <BODY> <H1>Uso de Mtodo Errado!</H1> Lamento, mas s utilizamos o mtodo POST aqui. </BODY> </HTML> HTML exit; }
($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form{$name} = $value; } Primeiro leia o STDIN at o final do string, tal como definido pelo uso de $ENV{'CONTENT_LENGHT'}. Em seguida, separe as linhas, dividindo a linha quando encontrar o E comercial (&), na lista @pairs. Neste ponto, temos vrios pares nome/valor e substituir os sinais de adio pelos espaos apropriados. (Lembre-se de que, ao enviar o string de dados para o servidor, os espaos so substitudos pelo sinal de adio.) Ento preciso converter os caracteres especiais de volta a seu formato ASCII. Em seguida, coloque cada nome/valor na lista $form, para que ento possamos chamar cada par nome/valor usando $form{'name'}. ]
Obtendo a Data
Pode-se obter a data automaticamente usando a funo chop() do Perl: chop($date = `date`); Este comando oferece como resultado algo parecido com isto: Thu May 23 15:02:15 PDT 1998 possvel mudar o formato da string $date. Procure assunto referente a date.
print MAIL "Subject: $subject\n\n"; Observe o uso de \n, que alimentao de linha. Sem \n, tudo ficaria em uma s linha. Depois de imprimir Subject:; inclumos duas novas linhas que separam o cabealho do restante da mensagem. A seguir pedimos sentea print para imprimir todo o contedo do descritor MAIL at encontrar EOM. Essa condio permite o uso da sentena print apenas uma vez para imprimir vrias 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 formulrio para criar a sentena. Basta inserir as strings no texto, de modo que leas ajudem a criar a mensagem. Dependendo do que o cliente digitou no formulrio, 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 sentenas if( ). O script diz essencialmente que:
Se existe airbag, ento imprima Airbag do lado do passageiro. Se existe pcaps, ento imprima Calotas de plstico. Se existe rdefrost, ento imprima Desembaador no vrido traseiro Se existe stire, ento imprima Estepe.
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"; } Ento, 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
Verifique se o cliente escolheu Fatura. Se sim, imprima Fatura. Verifique se o cliente escolheu Carto de Crdito. Se sim, imprima Carto de Crdito.
Como o formulrio usa o tipo de input radio, o cliente precisa selecionar Fatura ou Carto de Crdito. Basta marcar qual dessas opes o cliente escolheu. if ($form{'billing'} eq "bill")
{ print MAIL "Mandaremos a fatura.\n"; } if ($form{'billing'} eq "ccard") { print MAIL "Cobraremos pelo cartao de credito"; print MAIL "em nome de $form{'cname'}.\n"; print MAIL "CC\#$form{'cnum'} e validade $form{'cexpire'}.\n\n"; } Agora, sempre que abrimos um descritor de arquivo, ser preciso fech-lo. Abrimos o descritor de arquivo MAIL, portanto ao terminar de us-lo preciso usar a funo close() para fech-lo: print MAIL "Processar a requisio o mais rpido possivel.\n"; close(MAIL); Depois de fechar o descritor, eviamos a mensagem.
Resumo
Apesar de este tutorial ter apresentado um exemplo de formulrio de pedido, de maneira alguma esse exemplo esgota as possibilidades do script. possvel fazer com que o script salve essas informaes em um arquivo de log ou at mesmo usar um banco de dados para armazenar as informaes. As possibilidades so infinitas. Neste Tutorial aprendemos a criar documentos HTML usando formulrio e tambm a criar um script que permite que essas informaes sejam enviadas para outros usurios. Essencialmente, criamos uma interface Web para enviar informaes a outra pessoa via correio eletrnico. Com apenas algumas modificaes, poderamos criar um scrit que permitisse ao visitante usar o formulrio para deixar mensagens para voc. Tambm vimos o conceito mais importante da programao CGI: como enviar ao visitante um documento imediatamente criado*. * N.R.T. Esses documentos criados pelo prprio script so chamados e documentos virtuais.
www.sti.com.br