EMotaWeb - Programação - Formulário CGI
Data: 14/11/2003

  ESMPerl v1.00


INDEX

Tutorial ESMPerl v1.00
Código do Formulário HTML
Resultado do Código HTML
Código da Página de Resposta
Resultado do Código HTML
Como me achar !? - Contato
Introdução a Linguagem Perl/CGI
  -  Quebra de Linha ( ; )
  -  Indicador ( ! )
  -  Comentar ( # )
  -  Variáveis ( $ @ )
  -  Função ( sub & )
  -  Regra SE ( if )
Código Perl/CGI
  -  Controlador de Eventos
  -  ERRO_POST
  -  METHOD
  -  VAR
  -  MAIL_1
  -  MAIL_2
  -  RESPOSTA
  -  Finalizando o Script
Transferindo o Arquivo via FTP
  -  Imagens do WS_FTP ( Estrutura de Diretórios )
  -  Imagens do WS_FTP ( Modelo de Permissões )

Tutorial ESMPerl v1.00

Criação de Formulário
( ESMPerl v1.00 )

Este tutorial tem como finalidade auxiliar os iniciantes em programação Perl/CGI.

Após a criação de 2 Programação ( um sobre formulário HTML e um sobre Script Perl/CGI ), recebi inúmeros emails com a mesma dúvida, "como finalizar o Script" ( enviar via FTP e configurar detalhes do Servidor ).

Nota rápida ...
Não sou programador experiente ( nem avançado e nem intermediário ), sou apenas um iniciante que estou aprendendo conforme as minhas necessidades diárias, espero que você faça o mesmo ...
Se alguém de vocês estiverem precisarem de uma ajuda / auxílio sobre este tutorial, basta me localizar através da internet. Se sua solução estiver ao meu alcance, garanto que irei lhe ajudar ...

Pré-requisitos:
É extremamente importante que o leitor tenha algum tipo de conhecimento em lógica linguagem de programação e conceitos básicos de internet tais como HTTP e FTP.

Programas utilizados:
- Programação HTML ( HomeSite 4.5 )
- Programação Perl ( HomeSite 4.5 )
- Servidor WebHost ( Linux – CL4.0 )
- Navegador Web ( Inte. Explorer )
- Cliente para FTP ( WS_FTP PRO6 )
- Editoração Texto ( MS - Word 97 )

Informações úteis - Atenção !!!
- Fonte "Verdana", estará referindo-se a comentários.
- Fonte "Courier New - 10", estará referindo-se aos códigos de programação.
- As cores serviram para auxiliar o entendimento ( algumas pessoas dizem que piora ).
- O Itálico nos códigos indica que são conteúdo variável ( podem mudar ).
- O Negrito será aplicado para demonstrar blocos/etapas importantes ao sistema.


Código do formulário HTML

Exibir código fonte – esmperl.html


<html><head><title>EMota Web</title><style>
<!--
A:link { text-decoration:none; color: #000000 };
A:visited { text-decoration:none; color: #000000 };
A:active { text-decoration:none; color: Blue };
A:hover { color: #4F4F4F; };
-->
</style></head>
<body bgcolor="white"><font size="1"><br><center><hr width="640"><br></font>
<font face="Arial" size="4" color="Red">
<b>Contato via Internet</b></font><br><font size="1"><br></font>
<table width="640" border="0" cellspacing="0" cellpadding="3" bgcolor="White">
<tr><td bgcolor="#3264AF"><font face="Arial" size="2" color="white">
<b>Formul&aacute;rio de Contato Via Internet</b><br></td>
</tr>
<tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><form action="http://www.dme.com.br/cgi-bin/esmperl.cgi" method="POST">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><font face="Arial" size="2">Nome: </td>
<td><input type="Text" name="nome" align="MIDDLE" size="50"></td>
</tr>
<tr><td><font face="Arial" size="2">E-Mail: </td>
<td><input type="Text" name="email" align="MIDDLE" size="50"></td>
</tr>
</td></tr></table>
<font size="1"><BR></font>
<font face="Arial" size="2"><center>Mensagem ...<br></font>
<textarea name="mensagem" cols="50" rows="10"></textarea><BR>
<font size="1"><br></font>
<table width="50%" border="0" cellspacing="0" cellpadding="0"><tr>
<td width="50%" align="CENTER">
<input type="submit" value="Enviar"></td>
<td width="50%" align="CENTER">
<input type="Reset" name="limpar" value="Limpar"></td>
</tr></table>
</center><font size="1"><br></font></td>
</tr>
<input type="hidden" name="titulo" value="[EMotaWeb] - Contato">
<input type="hidden" name="para" value="emota@emota.com.br">
<input type="hidden" name="resposta" value="http://www.dme.com.br/contato/esmperl.htm">
</form>
</table></td>
</tr>
</table>
<hr width="640"><font size="1"><br></font>
<font face="Arial" size="2" color="black"><b>
<a href="mailto:emota@emota.com.br">WebMaster EMota</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255">UIN: 2731255</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255"><img src="http://wwp.icq.com/scripts/online.dll?icq=2731255&img=9" border="0" align="absmiddle"></a><br><br>
</font></center>
</body></html>

Resultado do Código HTML

Exibir como Web – esmperl.html


Contato via Internet

Formulário de Contato Via Internet
Nome:
E-Mail:

Mensagem ...





WebMaster EMota - UIN: 2731255 -



As explicações

Aqui está o código que será utilizando no formulário, o resto apresentado é apenas ilustração.

<form action="http://www.dme.com.br/cgi-bin/esmperl.cgi" method="POST">
<!-- Tudo que estiver entre o comando <form> e </form> são informações do formulário.
Por exemplos o comando <input type="submit"> é o responsável pelo envio do formulário, caso eu o coloque fora do comando </form>, esse formulário será enviado ao servidor. !-->

<input type="Text" name="nome" align="MIDDLE" size="50">
<input type="Text" name="email" align="MIDDLE" size="50">
<textarea name="mensagem" cols="50" rows="10"></textarea>
<input type="submit" value="Enviar">
<input type="Reset" name="limpar" value="Limpar">
<input type="hidden" name="titulo" value="[EMotaWeb] - Contato">
<input type="hidden" name="para" value="emota@emota.com.br">
<input type="hidden" name="resposta" value="http://www.emota.com.br:81/003/esmperl.htm">
</form>

INPUT – inclui um campo ao formulário
TYPE – Tipo do campo ( alguns tipos: TEXT/texto, HIDDEN/oculto, SUBMIT/envio e RESET/apaga )
NAME – nome do campo ( isso é muito importante, cuidado com maiúsculo e minúsculo, pois o servidor entende como ASSIM é diferente de Assim que pode sua vez é diferente de assim.
ALIGN – Alinha o campo
SIZE – Determina o tamanho do campo ( o tamanho do campo não influi na capacidade de caracteres )
VALUE – Determina um valor para o campo ( no caso do campo TEXT esse valor pode ser alterado )
TEXTAREA – Define um campo de texto maior que o TEXT onde "cols = colunas" e "rows = linhas"


Código para a programação da página de Resposta

Aqui não tem nada para explicar, apenas que o código abaixo é um exemplo de código utilizado para a exibição de uma página de resposta para um formulário.
Neste caso, chamamos o arquivo de esmperl.htm .

Nota importante: o arquivo do formulário chama esmperl.html a extensão .HTML é diferente da .HTM
Sua finalidade é a mesma, mais sua vantagem é poder criar dois arquivos com o mesmo nome, só !!!
Na linguagem Perl/CGI, os arquivos podem ter extensão .PL ou .CGI ... entendeu ?!



Exibir código fonte – esmperl.htm

<html><head><title>EMota Web</title><style>
<!--
A:link { text-decoration:none; color: #000000 };
A:visited { text-decoration:none; color: #000000 };
A:active { text-decoration:none; color: Blue };
A:hover { color: #4F4F4F; };
-->
</style></head>
<body bgcolor="white"><font size="1"><br><center><hr width="640"><br></font>
<font face="Arial" size="4" color="Red">
<b>Contato via Internet</b></font><br><font size="1"><br></font>
<table width="640" border="0" cellspacing="0" cellpadding="3" bgcolor="White">
<tr><td bgcolor="#3264AF"><font face="Arial" size="2" color="white">
<b>Formul&aacute;rio de Contato Via Internet</b><br></td>
</tr>
<tr><td><font face="Arial" size="2">
Seu formulário foi enviado com sucesso !<br><br></td>
</tr>
<tr><td bgcolor="#3264AF"><center><font face="Arial" size="2" color="white">
<b>Outras Informa&ccedil;&otilde;es</b></td>
</tr>
<tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td><font face="Arial" size="2">
Estaremos entrando em contato dentro de no máximo 48 horas.</td>
</tr></table>
</td>
</tr></table>
</td>
</tr>
</table><br>
<hr width="640"><font size="1"><br></font>
<font face="Arial" size="2" color="black"><b>
<a href="mailto:emota@emota.com.br">WebMaster EMota</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255">UIN: 2731255</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255"><img src="http://wwp.icq.com/scripts/online.dll?icq=2731255&img=9" border="0" align="absmiddle"></a><br>
<br></font></center>
</body></html>

Resultado do Código HTML

Exibir como Web – esmperl.htm


Contato via Internet

Formulário de Contato Via Internet
Seu formulário foi enviado com sucesso !

Outras Informações
Estaremos entrando em contato dentro de no máximo 48 horas.



WebMaster EMota - UIN: 2731255 -



As explicações - Contato

Infelizmente não tem nem o que explicar ...
Mais se você tiver alguma dúvida, pode entrar em contato ...

Nome: Eduardo Mota
Apelido: EMota

E-Mail: emota@emota.com.br
Web Site: http://www.emota.com.br

ICQ UIN – 2731255 ( EMota )

Rede IRC
- BrasIRC.NET ( Canais: #EMota - #EggHelp )
- BrasIRC.Com.Br ( Canais: #EMota - #EggHelp )
- BrasNET.Org ( Canais: #EMota - #EggHelp )

Se com todos esses dados você não me achar, infelizmente eu morri !


Programação de Script Perl/CGI

Introdução a Programação Perl/CGI

A linguagem Perl é baseada na C e não é necessário compilar o Script, mesmo assim, existe um compilador chamado Perl 2 EXE, mais particularmente não o conheço.

Quebra de Linha ( ; )
No termino da linha de programação, é necessário utilizar o ; ( ponto-e-vírgula como quebra de linha ).

Indicador ( ! )
O Script Perl necessita ser informado da origem do seu interpretador, onde geralmente tem como endereço os seguintes caminhos abaixo:
/usr/bin/perl ou /bin/perl
Esses caminhos, podem variar conforme seu Servidor e Administrador.
Caso você não saiba qual é o caminho, entre em contato com o Administrador/Suporte do seu WebHost.
Onde deve ser definido na primeira linha do Script Perl da seguinte forma:
#!/usr/bin/perl

Comentar ( # )
O Comentar é útil ao programador, onde você pode ir desenvolvendo seu programa em Perl e comentar suas funções. Ele é utilizado para inserir comentários junto do código de programação, onde esses linhas "Comentadas" não serão lidas quando o Script for rodado ( executado ).
Modo de utilização do # ( Comentar )
# Aqui se inicia o Script
##### Seu autor sou eu ...
## Se quiser copiá-lo, favor me enviar uns US$ 5.000,00 pelo correio :-)
Obs.: não a limite de Comentar ( # ) num script e nem numa linha, você pode usar diversos na mesma linha ou apenas um # , a finalidade é a mesma ... as pessoas usam vários apenas para melhorar o visual.
O Comentar pode ser usado no final da linha de programação, mais eu não aconselho, mais útil é usar ele acima ou abaixo.

Dica: Ao usar um Script pronto e configurá-lo para seu site, uma boa dica é duplicar a linha que você irá mudar, onde na original, você coloca o # antes, apenas para não perder a fonte original.

Variáveis ( $ @ )
Como toda as boas linguagens de programação, o Perl também contém "variáveis", onde se define um valor a eles e esse valor é mostrado toda vez que essa variável for chamada.
As variáveis do Perl são iniciadas com o caracter: $ ( cifrão ), ela deve ser apresentada da seguinte forma:
$nome_da_var = "conteúdo texto"; ## Valor em forma de texto
$nome_da_var = 9999; ## Valor em forma de número

Explicando:
$ - Define uma variável
nome_da_var – Nome que essa variável irá conter ( sobre seus critérios eu não sei exatamente, mais tive problemas com variável denominadas com acentos, caracteres especiais e números )
= - Indica que $nome_da_var será igual ao valor definido posteriormente
"conteúdo" – indica conteúdo texto, tudo que tiver entre " " ( aspas ), será o valor texto da variável
9999 – números utilizados sem aspas será interpretado como números Reais

As variáveis podem também aparecerem com a inicial @ ( arroba ) no lugar de $, mais infelizmente não poderei explicar corretamente a variável @ pois não conheço bem suas diferenças, sei algo ...
@nome_da_var = alguma_ação – onde essa variável irá receber todos o valor dessa ação.

Dando uma resumida FEIA, ela praticamente comporta um conteúdo maior, onde @ suporta diversas $ .

Função ( sub & )
As funções são muito úteis, pois você pode criar um bloco de comandos onde toda vez que for chamado, ele irá executar todo o bloco. Digamos assim, "para colocar ordem na casa", você usa ele. Assim, você pode controlar melhor os erros e saber o que será executado tal momento, não precisando programar na ordem correta dos processos.

A função é criada assim:

sub nome_da_fun {
# ...
# Comandos da Função fun
# ...
}

Para executar a função, basta chamá-la assim:

&nome_da_fun;

Existe uma forma de criar variáveis de função, mais isso fica para depois, pois ainda não conheço as muito bem, então é melhor não mencionar para não complicar.

Comando SE ( if )
Se isso é igual aquilo então faça isso! Legal isso né?!

O Comando if é utilizado para determinar regras, podendo se definido assim:

if ($var01 eq $var02) { &fun; } # Se $var01 é igual a $var02 então executa &fun .
if ($var01 ne $var02) { &fun; } # Se $var01 é diferente de $var02 então executa &fun .

Onde você pode agregar mais regras assim:
if (($var01 eq $var02) || ($var02 ne $var03)) { &fun; } # Se $var01 é igual a $var02 ou ( || ) $var02 é diferente de $ver03, então executa &fun .

Onde temos:
eq – eqüivale, igual a ... ( = )
ne – negativo, diferente ... ( != )
> - maior que ...
< - menor que ...
|| - ou ( caso um ou caso outro passe, então executa )
&& - e ( caso um e caso outro passe, então executa )
elsif – se não, caso contrário ... ( else if )

Exemplo:

if ((($var001 eq $var002) && ($var003 ne $var002)) || ($var001 ne $var003)) {
&funcao_passo;
}
elsif {

&funcao_nao_passo;
}

Se $var001 igual a $var002 e $var003 diferente de $var002, ou $var001 diferente de $var003, então executa &funcao_passo, senão ( caso contrário ), executa &funcao_não_passo .


Código Perl/CGI - esmperl.cgi

Agora, após uma introdução básica sobre a linguagem, daremos início a parte de programação Perl/CGI.
Daqui para frente, iremos criar o arquivo esmperl.cgi que será o Script.

Código Perl/CGI – esmperl.cgi

#!/usr/bin/perl –w
##################################################
###
Script CGi - Formulário de Contato ###
###
Autor: Eduardo Mota - emota@emota.com.br ###
##################################################
###
Este Script é de livre utilização! ###
##################################################
###
Controlador de Eventos !
&method;
### Que acha de ir dar uma olhada na Função executada ... veja abaixo o METHOD !!
### Aqui temos a função com uma regra, para executar a função, a regra precisa ser válida.
### A variável $ENV{
'REQUEST_METHOD'} é uma variável de sistema, ela informa qual foi o tipo de método requisitado ao sistema, neste caso, utilizaremos os método POST ( Postagem / Enviou ) o outro método seria o GET ( Pega informações / Recebe informações ).
&erro_post
if ($ENV{'REQUEST_METHOD'} ne 'POST');
&var; ### Função que carrega variáveis
&mail_1; ### Função que envia um email
&mail_2 if
($form{'email'} ne ""); ### Função que envia um email para o visitante
&resposta; ### Exibe tela de resposta
##################################################
###
ERRO_POST - Checkup do Método de Envio
sub erro_post {

print <<HTML;

<html><head><title>EMota Web</title><style>
<!--
A:link { text-decoration:none; color: #000000 };
A:visited { text-decoration:none; color: #000000 };
A:active { text-decoration:none; color: Blue };
A:hover { color: #4F4F4F; };
-->
</style></head>
<body bgcolor="white"><font size="1"><br><center>
<hr width="640"><font size="1"><br></font>
<font face="Arial" size="4" color="Red">
<b>Contato via Internet</b></font><br>
<font size="1"><br></font>
<table width="640" border="0" cellspacing="0" cellpadding="3" bgcolor="White">
<tr><td bgcolor="#3264AF"><font face="Arial" size="2" color="white">
<b>Formul&aacute;rio de Contato Via Internet</b><br></td>
</tr>
<tr><td><font face="Arial" size="2">
Seu formulário não pode ser enviado!<br><br></td>
</tr>
<tr><td bgcolor="#3264AF"><center><font face="Arial" size="2" color="white">
<b>Outras Informa&ccedil;&otilde;es</b></td>
</tr>
<tr><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td>
<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td>
<font face="Arial" size="2">
Ocorreu um erro no formulário, o método de envio do formulário só pode ser <i>POST</i><br>
Entre em contato com o WebMaster do Site e informe-o sobre este erro.<br>
O método utilizado foi <i>$ENV{'REQUEST_METHOD'}</i><br></td></tr>
</table></td></tr></table></td></tr></table><br>
<hr width="640"><font size="1"><br></font>
<font face="Arial" size="2" color="black"><b>
<!—
Na programação Perl/CGI, o arroba é definição de variáveis, ao utilizar uma caracter especial dentro do Script, utilize a \ ( barra invertida ).
!-->
<a href="mailto:emota\@emota.com.br">WebMaster EMota</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255">UIN: 2731255</a> - <a href="http://wwp.icq.com/scripts/search.dll?to=2731255"><img src="http://wwp.icq.com/scripts/online.dll?icq=2731255&img=9" border="0" align="absmiddle"></a><br>
<br></font></center>
</body></html>
HTML
exit;
}

##################################################
###
METHOD - Interpretador POST
### Aqui está o Interpretador de METHOD ( método ), ele será responsável por transformar cada campo do meu formulário em uma simples variável, onde será definida como:
### $form{'
nome_do_campo'} – onde nome_do_campo é o nosso amigo, valor do NAME ... lembra?
sub method {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); ### Lê o conteúdo do formulário
### Se length($buffer) menor que 5, então $buffer será igual a $ENV{QUERY_STRING}
if (length($buffer) < 5) {
$buffer = $ENV{QUERY_STRING};
}
@pairs = split(/&/, $buffer);
### Pega todas as informações, separa e armazena em @paris
foreach $pair (@pairs) {
### Pega as partes do @pairs e divide em diversas $pair
($name, $value) = split(/=/, $pair);
### Separa nome e valor do campo
$value =~ tr/+/ /;
### Algo como arrastar caracteres ... não sei
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
### Substitui caracteres
$value =~ s/<!--(.|\n)*-->//g;
### Elimina algumas caracteres não seguras
$form{$name} = $value;
### Define a variável
}
}
### Este é o formato básico do Interpretador de Método, existe outras formas de escreve-lo, mais eu particularmente utilizo apenas esse.
##################################################
###
VAR – Variáveis
sub var {
chop($date = `date`); ### Carrega data
$origem_nome = "$form{'nome'}"; ### Define $origem_nome igual $form{'nome'}
$origem_email = "$form{'email'}"; ### Define $origem_email igual $form{'email'}
$origem_texto = "$form{'mensagem'}"; ### Define $origem_texto igual $form{'mensagem'}
$mail_prog = "/usr/sbin/sendmail -t"; ### Define $mail_prog igual "/usr/sbin/sendmail -t"
$mail_to = "$form{'para'}"; ### Define $mail_to
$mail_from = "$form{'nome'} <$form{'email'}>"; ### Define $mail_from
$mail_subject = "$form{'titulo'}"; ### Define $mail_subject
}
##################################################
###
MAIL_1 - Editando o E-Mail de Retorno
sub mail_1 {
open(MAIL, "|$mail_prog") || die "ERRO - No SendMail"; ### Abre o Editor de Correio
print MAIL "To: $mail_to\n"; ### Define quem irá receber o email
print MAIL "From: $mail_from\n"; ### Define quem mandou o email
print MAIL "Subject: $mail_subject\n\n"; ### Define Título / Assunto do email
print MAIL <<"MAIL"; ### Dá início a parte de texto no corpo do email
Nome: $origem_nome
E-Mail: $origem_email
Mensagem ...
$origem_texto
____________________________________________________________________
Informações Sobre o Remetente
MAIL
### Quebra a parte de texto do email.
### Agora, para incluir uma linha, é preciso usar o comando "print MAIL".
### As linhas abaixo são apenas para dar uma "melhorada" no email.
# Parte de Registro
#
Divide a string em duas, navegador e versao
($browser, $version) = split(/\//, $ENV{'HTTP_USER_AGENT'});
# Troca o nome Mozilla por Netscape
if ($browser eq "Mozilla") {
$browser = "Netscape";
}
# Verifique se MSIE esta fingindo ser Netscape
if ($version =~ /MSIE/) {
$browser = "Microsoft Internet Explorer";
}
if ($ENV{'REMOTE_HOST'}) {
print MAIL "Domínio do Provedor: $ENV{'REMOTE_HOST'}\n";
print MAIL "Endereço de IP: $ENV{'REMOTE_ADDR'}\n";
}else {
print MAIL "Endereço de IP: $ENV{'REMOTE_ADDR'}\n";
}
print MAIL "Estava usando o $browser, versão $version\n";
if ($ENV{'HTTP_REFERER'}) {
print MAIL "Foi requisitado o arquivo: $ENV{'DOCUMENT_URI'}\n";
print MAIL "Através da Página: $ENV{'HTTP_REFERER'}/$ENV{'DOCUMENT_URI'}\n";
}
close(MAIL);
### Fecha o email
}

##################################################
###
MAIL_2 - Editando o E-Mail de Confirmação
### O mesmo esquema do anterior, a diferença que é o Destinatário e o Remetente foram alterados e não temos aquelas informações sobre o Remetente, tal como IP e tralalás!
sub mail_2 {
### Ao uma um nome para informativo, aqui no open(NOME, ...), esse nome é será definido como responsável por essa ação, a partir do momento que você abrir uma ação, será preciso fechá-la futuramente. Quando quiser incluir uma linha nesta ação, basta usar o print.
open(RMAIL, "|$mail_prog") || die "ERRO - No SendMail";
print RMAIL "To: $mail_from\n";
print RMAIL "From: $mail_to\n";
print RMAIL "Subject: $mail_subject\n\n";
print RMAIL <<"RMAIL";
Olá $origem_nome
Você enviou a seguinte mensagem:
$origem_texto
_______________________________________________________________________
Obrigado por nos visitar e entrar em contato.
Assim que possível estaremos analisando o seu email e
estaremos tomando as devidas providências conforme o necessário.
Atenciosamente,
WebMaster EMota.
RMAIL
close(RMAIL);
}
##################################################
###
RESPOSTA - Localizando a Página de Resposta
### Com essa função, o script irá localizar o endereço ( URL ) informado e irá direcionar o script para ele, com isso ele não ficará mais no caminho do script.
sub resposta {
print "Location: $form{'resposta'}\n\n";
}
##################################################
###
Finalizando o Script CGI
### Finaliza do Script, não sei o porque dos (), se não me engano funciona em isso também!
exit();

Transferindo o Arquivo via FTP

Agora que já temos os três arquivos:
- esmperl.html ( página do formulário HTML )
- esmperl.htm ( página de resposta do formulário )
- esmperl.cgi ( Script para interpretador o formulário )

Precisamos agora colocar tudo isso para funcionar ...
Primeiro, precisamos saber se seu Servidor de WebHost suporta Perl/CGI, se suportar, seu diretório de arquivos irá conter uma pasta ( diretório ), chamado: CGI-BIN ( ao algo muito similar ).

O Script você irá colocá-lo na pasta /CGI-BIN e os demais você colocará no diretório RAIZ o / .
Isso de colocar no diretório RAIZ e no CGI-BIN não precisa ser exatamente assim, pode ser variada:

Exemplo de estrutura de diretório:
/index.html
/CONTATO/esmperl.html
/CONTATO/esmperl.htm
/CGI-BIN/FORM/esmperl.cgi

O que importa é que seu Script precisa estar dentro da subdiretório CGI-BIN e seu formulário e página de resposta, "preferencialmente", precisam estar localizados fora desse diretório, isso é mais pela segurança.

O que muitos tem problemas na transferência do Script é que ele precisa de "cuidados" especiais, onde não poder ser simplesmente transferido.

O FTP atualmente tem duas opções de envio, o método ASCII e o BINário.
Onde os arquivos comuns, tais como Imagens, textos e tudo mais, precisa ser transferido em método Binário ( pois são arquivos binários ), já o Script, é uma arquivo ASCII ( não sei o significado dessa sigla ), e se não basta-se essa frescura, ele ainda precisa que editemos as suas permissões ( aqui rola o grilo ).

Permissões ...
Os arquivos podem conter as seguintes permissões:
READ/Leitura ( 4 ) – WRITE/Escrita ( 2 ) – EXECUTE/Execução ( 1 )
Elas podem ser somadas e com isso você pode controlar sua segurança e função.

Mais as coisas não param por ai, você precisa definir essas permissões para cada categoria de acesso, mais antes de entrar em pânico com categorias, saiba que existem apenas 3 ... vamos ler ?

OWNER/Dono – GROUP/Grupo –OTHER/Outros
Sendo assim, você transferiu o arquivo para o Servidor, Correto ? então o servidor irá definir que você é o OWNER/Dono daquele arquivo, entendeu ?!
Seu Grupo, para falar a verdade, será todos os outros clientes do Servidor que você utilizar.
E ou outros, são todos os outros mesmo, desde desconhecidos até convidados do sistema ( Povão Geral ).

Para definir as permissões, basta utilizar o comando CHMOD.
Vamos a alguns exemplos:

Arquivos Owner Group Other CHMOD Resultado
esmperl.cgi 7 5 5 755 Owner ( ler/gravar/executar ) os demais ( ler/executar )
arq_de_log.txt 6 6 6 666 Todos ( ler/gravar )
informacao.dat 4 4 4 444 Todos ( ler )

Sendo, leitura 4, escrita 2 e execução 1, basta ir somando para saber a definição, entendeu ?!
Ler + Gravar ( 4 + 2 ) = 6 | Ler + Executar ( 4 + 1 ) = 5 | Gravar + Executar ( 2 + 1 ) = 3
Ler ( 4 ) = 4 | Gravar ( 2 ) = 2 | Executar ( 1 ) = 1 ( lembre: como executar algo que não se pode ler ? )



Vejamos agora umas imagens que podem melhoras o entendimento da transferência.



Na figura acima, o script é chamado de padrao.cgi
Note a existência do diretório cgi-bin no sistema remoto.
Note também na barra inferior, as opções para tipo de envio ( ASCII e Binary ), onde ASCII está ativo.





Após a transferência, resta apenas configurar o CHMOD ...
Para a configuração CHMOD, basta selecionar o arquivo desejado, clicar com o botão direito do mouse em cima dele e escolher a opção CHMOD.

Veja agora um Exemplo de permissão 755 ( Owner ler/gravar/executar e demais ler/executar )



Logo abaixo, temos uma exemplo de CHMOD 666 ( Todos ler/gravar )



Note que existem um comentário na caixa de diálogo ...
These are usually only applicable on UINX hosts.

Quer dizer mais ou menos assim ...
Isto é usando apenas para usuários de hosts UNIX.
Geralmente você estará usando um Host ( WebHost ) Linux, que por sua vez é compatível com UNIX.

Pronto !!!
Caso você tenha alguma dúvida, atenção, pode entrar em contato, isso não mata e ajuda !!!
Finalização do Tutorial ESMPerl v1.00 ... será que consigo criar até a versão 10.00 ?


Qualquer dúvida ou informação, entre em contato emota@emota.com.br

EMotaWeb | Textos | Programação | Linux | Wireless | Contato | Topo ^