NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigos › ASP 3.0 › Capítulo 04 : 04
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
SITES DINÂMICOS COM ASP 3.0 - CURSO COMPLETO
Autor: Júlio Battisti


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


Lição 030 - Capítulo 04 - O Objeto Request

Com o Objeto Request podemos ter acesso a diversas informações fornecidas pelo cliente ao acessar uma página ASP, ou ao preencher um formulário e enviar os dados do formulário. Podemos ter acesso a informações a respeito do Navegador que o cliente está utilizando, quais os Cookies gravados no computador do usuário, qual Certificado Digital o usuário está utilizando e muitas outras informações importantes.

A partir de agora passaremos a estudar os principais métodos, coleções e propriedades do objeto Request. Analisaremos os diversos aspectos do objeto Request, através da utilização de alguns exemplos práticos.

Coleções do Objeto Request

O Objeto Request possui diversas coleções. Uma coleção nada mais é, do que uma estrutura de dados. Nesta estrutura de dados temos diversos valores, e a cada valor está associada uma chave de identificação, a qual pode ser utilizada para acessar o valor contido na coleção. Através das coleções do objeto Request, podemos ter acesso a diversas informações do Cliente, como por exemplo, os dados que o cliente digita em um formulário.

A Coleção Form do Objeto Request

Para estudar esta coleção, vamos fazer uma revisão rápida sobre a maneira como os dados digitados em um formulário são passados para o servidor para processamento.

Considere o formulário da Listagem 4.2

Listagem 4.2 – Um Formulário HTML simples – list4-2.htm

1          <HTML>
2          <HEAD>
3          <TITLE>Formulário para Cadastro  de Clientes !!</TITLE>
4          </HEAD>
5          <BODY>
6          <P><STRONG>Formulário para  Cadastro de Clientes:</STRONG></P>
7          <P>Digite os dados solicitados e  clique no botão Enviar.</P>
8          <FORM  action="list4-2.asp" method="post">
9          <P>Nome: <INPUT id=nome  maxLength=50 name=nome></P>
10        <P>Rua: <INPUT id=rua  maxLength=35 name=rua ></P>
11        <P>Cidade: <INPUT id=cidade  maxLength=30 name=cidade></P>
12        <P>e-mail: <INPUT id=email  maxLength=50 name=email></P>
13        <P>Cartão Crédito: 
14        <INPUT id=cartao name=cartao  type=radio value=Visa>Visa&nbsp; 
15        <INPUT id=cartao name=cartao  type=radio value="Master Card">&nbsp;Master Card 
16        <INPUT id=cartao name=cartao  type=radio value=Outros>&nbsp;Outros</P>
17        <P>
18        <INPUT id=enviar name=enviar  type=submit value=Submit>
19        <INPUT id=limpar name=limpar  type=reset value=Reset>
20        </P>
21        </FORM>
22        </BODY>
23        </HTML>

Ao acessarmos o arquivo da Listagem 4.2, no Internet Explorer, obtemos o resultado indicado na Figura 4.6:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.6 O Formulário da Listagem 4.2.

Para maiores detalhes sobre a construção de formulários HTML, veja o Capítulo 2.

Observe que cada campo possui as propriedades “id” e “name” iguais. Definimos estas duas propriedades por questões de manter a padronização. Para os objetos do ASP, o que é realmente utilizado é a propriedade “name”, a qual identifica cada um dos campos de um formulário.

Observe que o atributo method do formulário, na linha 8, foi definido como post. Quando utilizamos o método post, os dados digitados no formulário, são enviados em uma conexão separada, fazendo com que os mesmos não fiquem visíveis na linha de endereço do Navegador. Além disso o método post permite que mais informações sejam enviadas, do que se estivéssemos utilizando o método get. Falaremos um pouco mais sobre as diferenças entre os métodos post e get, no próximo item.

O atributo action do formulário, na linha 8, foi definido como list4-2.asp. Isto significa que a página ASP list4-2.asp é que vai processar os dados enviados pelo formulário. Neste caso digitamos somente o nome da página, porque a página HTML que contém o formulário e a página ASP que irá processar os dados digitados no formulário, estão na mesma pasta do servidor Web. Poderia acontecer da página ASP estar, inclusive, em um outro servidor. Neste caso devemos digitar o endereço completo da página ASP, como por exemplo:

<FORM action="http://www.abc.com.br/Capitulo4/list4-2.asp"  method="post">

Ao clicar no botão Enviar, os dados digitados no formulário são passados para a página list4-2.asp. Precisamos de uma maneira de ter acesso a estes dados. A coleção que nos permite ter acesso a estes dados é a coleção Form do Objeto Request.

IMPORTANTE = A coleção Form somente é utilizada, quando o atributo method do formulário é definido como post. Quando o método for definido como get, conforme veremos mais adiante, devemos utilizar a coleção QueryString, ao invés da coleção Form.

A maneira de acessar os dados é exemplificada abaixo:

Request.Form(“Nome_do_Campo”) 

Onde Nome_do_Campo é o valor definido no atributo name de cada um dos campos do formulário. Por exemplo, o campo nome, na Listagem 4.2, tem a sua propriedade name definida como nome. Para acessar o valor digitado no campo nome, utilizaríamos o seguinte comando:

Request.Form(“nome”)

Na Listagem 4.3, temos um exemplo para a página list4-2.asp, a qual simplesmente informa ao usuário, quais os valores que ele digitou em cada um dos campos. Para isso, é utilizamos a coleção Form do Objeto Request.

Listagem 4.3 – A Página ASP list4-2.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
 
5          <BODY>
6          <h2> Você digitou os seguintes  dados !!</h2>
 
7          <P>Nome:
8          <%
9          =Request.Form("nome")
10        %>
11        </P>
 
12        <p>Rua:
13        <%
14        =Request.Form("rua")
15        %>
16        </p>
 
17        <p>Cidade:
18        <%
19        =Request.Form("cidade")
20        %>
21        </p>
 
22        <p>E-mail:
23        <%
24        =Request.Form("email")
25        %>
26        </p>
 
27        <p>Cartão de Crédito:
28        <%
29        =Request.Form("cartao")
30        %>
31        </p>
 
32        <P><A  href="list4-2.htm">Clique aqui para voltar ao  formulário</A></P>
 
33        </BODY>
34        </HTML>

Observe que vamos alternando trechos de código HTML com trechos de código ASP. Vamos analisar o seguinte trecho de código:

7          <P>Nome:
8          <%
9          =Request.Form("nome")
10        %>
11        </P>

Na linha 7, é aberta uma tag de parágrafo - <p>. Dentro deste parágrafo é colocado o texto Nome: . Na linha 8 é aberto um trecho de código ASP. Dentro deste trecho utilizo a coleção Form do objeto Request, para ter acesso ao valor digitado no campo nome. No nosso exemplo, a linha 8 simplesmente retorna o texto digitado no campo nome do formulário. Este nome é colocado logo após o Nome: . Finalmente na linha 11 é fechado o parágrafo. O resultado deste trecho de código que retorna para o usuário é o seguinte (suponde que no campo nome tenha sido digitado Júlio Cesar Fabris Battisti):

<P>Nome:  Júlio Cesar Fabris Battisti</P>

Na Figura 4.7, temos o retorno da página list4-2.asp, para os dados de exemplo indicados na Figura 4.6:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.7 O retorno da página list4-2.asp.

Observe que com o uso da coleção Form, podemos ter acesso a todos os campos do formulário.

A maneira como foi construída a página list4-2.asp irá funcionar sem problemas, porém poderemos ter alguns problemas. Por exemplo, vamos supor que por algum motivo, o nome de um dos campos do formulário precisa ser alterado. Caso isso aconteça, precisaríamos alterar a página ASP, pois a coleção Form, utiliza a propriedade name do campo, para ter acesso ao conteúdo do mesmo.

Podemos contornar esta dificuldade utilizando uma estrutura de controle que permite percorrer todos os itens de uma coleção. Percorreremos os itens da coleção Form capturando o nome do campo e o valor do mesmo. Com isso caso o nome de algum campo mude, a mudança será detectada cada vez que a página ASP for chamada, pois o nome do campo não estará fixado dentro do próprio arquivo ASP, como é o caso da Listagem 4.3.

A estrutura de controle que permite percorrer todos os elementos de uma coleção possui a seguinte estrutura:

For  Each membro In Nome_da_Coleção
            Comando 1
            Comando 2
            ...
            Comando n
Next

Com a estrutura For Each...Next, conseguimos percorrer todos os membros de uma coleção. Considere o seguinte exemplo:

<%
            For Each Item in Request.Form
                =Item
            Next
%>

Neste caso estaremos listando todos os nomes dos campos do formulário, através da utilização da estrutura For Each...Next.

Agora vamos utilizar a estrutura For Each...Next, para rescrever a nossa página ASP de uma maneira mais genérica, conforme indicado na Listagem 4.4:

Listagem 4.4 – A Página ASP list4-2-2.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
 
6          <H2> Você digitou os seguintes  dados !!</H2>
 
7          <%
8          For Each Item in Request.Form %>
9          <P>
10        <%=Item%> 
11        =
12        <%=Request.Form(Item)%>
13        </P> 
14        <% Next %>
 
15        <P><A  href="list4-2.htm">Clique aqui para voltar ao formulário</A></P>
16        </BODY>
17        </HTML>

Esta página produz o mesmo resultado que a página ASP da Listagem 4.3, porém vejam como o código é bem menor. Além disso este código funciona sempre, mesmo que o nome de algum dos campos do formulário sejam alterados. Para testar este código basta salvar esta listagem com o nome de list4-2-2.asp e alterar a página list4-2.htm. No atributo action da tag <FORM>, troce action=”list4-2.asp” por action=”list4-2-2.asp”.

Também é interessante notar que fomos alternando trechos de código HTML com código ASP. Por exemplo, as linhas 7 e 8 são código ASP, onde é iniciado o laço For Each...Next. Na linha 9 abrimos uma tag de parágrafo. Na linha 10 é exibido o nome do campo, através da utilização de <% = Item%>. Na linha 11 colocamos o sinal de = que vai ficar entre o nome do campo e o valor digitado no campo. Na linha 12 é exibido o valor digitado no campo do formulário, cujo atributo nome foi exibido pela linha 10. A linha 13 fecha a tag de parágrafo e, finalmente, a linha 14 encerra o laço For Each...Next. Observe que o laço foi aberto em uma seção de código e fechado em outra, o que nos dá uma grande flexibilidade. 

A Coleção QueryString do Objeto Request

Utilizamos a coleção QueryString, quando o formulário utilizar o método get ao invés do método post. Quando utilizamos o método get, os dados são passados para o servidor, junto com a URL de endereço. Vamos alterar o formulário da Listagem 4.2, para que o mesmo utilize o método get ao invés do método post. Também vamos alterar o atributo action, para que o mesmo chame a página ASP formget.asp, para processar os dados digitados no formulário. Com estas modificações, teremos o formulário indicado na Listagem 4.5:

Listagem 4.5 – Um Formulário HTML simples – formget.htm

1          <HTML>
2          <HEAD>
3          <TITLE>Formulário para Cadastro  de Clientes !! </TITLE>
4          </HEAD>
5          <BODY>
 
6          <P><STRONG>Formulário para  Cadastro de Clientes:</STRONG></P>
7          <P>Digite os dados solicitados e  clique no botão Enviar.</P>
 
8          <FORM  action="formget.asp" method="get">
 
9          <P>Nome: <INPUT id=nome  maxLength=50 name=nome></P>
10        <P>Rua: <INPUT id=rua  maxLength=35 name=rua ></P>
11        <P>Cidade: <INPUT id=cidade  maxLength=30 name=cidade></P>
12        <P>e-mail: <INPUT id=email  maxLength=50 name=email></P>
 
13        <P>Cartão Crédito: 
14        <INPUT id=cartao name=cartao  type=radio value=Visa>Visa&nbsp; 
15        <INPUT id=cartao name=cartao  type=radio value="Master Card">&nbsp;Master Card 
16        <INPUT id=cartao name=cartao  type=radio value=Outros>&nbsp;Outros</P>
 
17        <P>
18        <INPUT id=enviar name=enviar  type=submit value=Submit>
19        <INPUT id=limpar name=limpar  type=reset value=Reset>
20        </P>
21        </FORM>
 
22        </BODY>
23        </HTML>

Ao acessarmos o arquivo da Listagem 4.5, no Internet Explorer, obtemos o resultado indicado na Figura 4.8:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.8 O Formulário da Listagem 4.5. 

Para criar o arquivo formget.asp, basta pegar o código da Listagem 4.4 e trocar Request.Form por Request.QueryString. Com isso teremos o código da Listagem 4.6. 

Listagem 4.6 – A Página ASP formget.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
 
6          <H2> Você digitou os seguintes  dados !!</H2>
 
7          <%
8          For Each Item in Request.QueryString  %>
9          <P>
10        <%=Item%> 
11        =
12        <%=Request.QueryString(Item)%>
13        </P> 
14        <% Next %>
 
15        <P><A  href="formget.htm">Clique aqui para voltar ao  formulário</A></P>
16        </BODY>
17        </HTML>

Esta página fornece o retorno indicado na Figura 4.9. Observe que o resultado é praticamente o mesmo da Figura 4.7, porém com a diferença que os dados foram passados através do endereço de chamada da página.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.9 O retorno da página formget.asp.

No campo endereço temos o seguinte:

http://servidor/Capitulo4/formget.asp?nome=J%FAlio+Cesar+Fabris+Battisti&rua=Sinimbu+
-+456&cidade=Boqueir%E3o+do+Le%E3o&email=batisti@hotmail.com&cartao=Outros&enviar=Submit

Observe que os dados foram passados dentro da própria URL. Caracteres especiais como o u com acento agudo, são substituídos. Observe que o nome Júlio foi substituído por J%FAlio, ou seja, o ú foi substituído por %FA. Também podemos observar que todo espaço em branco foi substituído por um sinal de +, e assim por diante. Neste caso a coleção QueryString sabe tratar estes caracteres especiais e exibi-los corretamente, conforme indicado pela Figura 4.9.

O método get possui limitações quanto a quantidade de informações que o mesmo pode passar para o servidor. Esta limitação está em torno de 1000 caracteres, conforme definição do protocolo HTTP.  Além disso toda a informação passada será visível na URL, o que em muitas situações não é desejado.

Por isso que hoje, na maioria dos casos, utilizamos o método post, o qual não sofre das mesmas limitações do método get. Algumas aplicações antigas, com alguns scripts CGI, podem ter sido desenvolvidos para usar o método get,  neste caso os mesmos não funcionarão com o método post. No restante deste livro, estaremos utilizando o método post.

Alguns campos que merecem considerações especiais

Um dos campos de formulários que merecem considerações especiais é o caso do uso de um grupo de Check Box. Quando temos um grupo de Check Box, um ou mais itens do grupo podem ser selecionados. Neste caso precisamos determinar qual item ou quais itens foram selecionados e qual o valor associado com cada um deles. Observe a Listagem 4.7:

Listagem 4.7 – Modificando o formulário formget.htm.

1          <HTML>
2          <HEAD>
3          <TITLE>Formulário para Cadastro  de Clientes !! </TITLE>
4          </HEAD>
5          <BODY>
 
6          <P><STRONG>Formulário para  Cadastro de Clientes:</STRONG></P>
7          <P>Digite os dados solicitados e  clique no botão Enviar.</P>
 
8          <FORM  action="formget.asp" method="get">
 
9          <P>Nome: <INPUT id=nome  maxLength=50 name=nome></P>
10        <P>Rua: <INPUT id=rua  maxLength=35 name=rua ></P>
11        <P>Cidade: <INPUT id=cidade  maxLength=30 name=cidade></P>
12        <P>e-mail: <INPUT id=email  maxLength=50 name=email></P>
 
13        <P>Cartão Crédito: 
14        <INPUT id=cartao name=cartao  type=radio value=Visa>Visa&nbsp; 
15        <INPUT id=cartao name=cartao  type=radio value="Master Card">&nbsp;Master Card 
16        <INPUT id=cartao name=cartao  type=radio value=Outros>&nbsp;Outros</P>
 
17        <P>
18        <INPUT id=enviar name=enviar  type=submit value=Submit>
19        <INPUT id=limpar name=limpar  type=reset value=Reset>
20        </P>
 
21        <P>
22        <INPUT id=estado name=estado  type=checkbox value=SP>SP
23        <INPUT id=estado name=estado type=checkbox  value=RJ>&nbsp;RJ 
24        <INPUT id=estado name=estado  type=checkbox value=RS>&nbsp;RS
25        <INPUT id=estado name=estado  type=checkbox value=SC>&nbsp;SC
26        <INPUT id=estado name=estado  type=checkbox value=PR>&nbsp;PR
27        </P>
 
21        </FORM>
 
22        </BODY>
23        </HTML>

Ao acessarmos o arquivo da Listagem 4.7, no Internet Explorer, obtemos o resultado indicado na Figura 4.10:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.10 Um grupo de Check Box foi adicionado ao formulário.

Ao clicar no botão Enviar, receberemos os resultados indicados na Figura 4.11. Observe que a nossa página ASP formget.asp já processou corretamente os resultados.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.11 O resultado dos Check Box marcados já é exibido corretamente.

Um detalhe que devemos observar é que os valores associados a cada um dos Check Box marcados é o valor do atributo Value. Se este atributo não tiver sido definido, será exibido On para cada um dos Check Box marcados. Observe, na Listagem 4.7, que o atributo name é o mesmo para todos os Check Box do grupo. É justamente isto que caracteriza um grupo de Check Box, todos possuem o mesmo valor para a propriedade name.

Quando a página ASP recebe os dados, ele recebe os valores selecionados, todos no nome do grupo. Por exemplo o seguinte código:

<% =Request.QueryString("estado") %>

Produziria uma saída com o valor dos Check Box selecionados. Caso mais do que um Check Box tenha sido selecionados, os valores serão exibidos separados por vírgula, conforme indicado abaixo:

SP, RS, PR 

Com isso dizemos que o elemento estado, da coleção QueryString possui valores múltiplos. Existem situações em que pode ser necessário acessar um destes valores individualmente. Isto é possível, pois cada um dos valores possui uma propriedade de índice associada. O primeiro valor selecionado possui índice 1, o segundo possui índice 2 e assim por diante.

IMPORTANTE = No caso de um grupo de Check Box, os índices não são associados a ordem com que os Check Box são apresentados no formulário, mas sim em relação a quantos são selecionados. Se tivermos 2 Check Box selecionados, somente teremos o índice 1 e o índice 2. O índice 1 é ligado ao primeiro Check Box selecionado que aparece no formulário. O índice 2 é ligado ao próximo Check Box do grupo que aparecer selecionado, e assim por diante.

Caso quiséssemos acessar somente o valor do primeiro Check Box selecionado, utilizaríamos o seguinte código:

<%  =Request.QueryString("estado")(1) %>

Observe a utilização do índice (1) após o nome do campo. Com isso estou pedindo para que seja retornado apenas o valor do primeiro Check Box selecionado. Este código retornaria simplesmente SP, no nosso exemplo.

Estas mesmas considerações são válidas para elementos do tipo Caixa de seleção e Caixa de combinação.

A coleção ServerVariables do objeto Request

A coleção ServerVariables possui valores que são somente de leitura, isto é, não podemos modificar os valores desta coleção. São valore enviados através da requisição do Navegador do cliente, dentro do cabeçalho do protocolo HTTP, e alguns valores existentes no servidor Web.

Podemos acessar o valor de uma determinada variável utilizando a seguinte sintaxe:

Request.ServerVariables("Nome_da_Variável")

Por exemplo, o seguinte código retorna o número IP do computador do cliente:

<%=Request.ServerVariables("remote_addr")%>

Na Tabela 4.1, temos uma descrição das principais variáveis disponíveis:

Nome Descrição
ALL_HTTP Retorna todos os cabeçalhos HTTP enviados pelo cliente.
ALL_RAW Captura todos os cabeçalhos, da maneira como foram enviados pelo cliente.
AUTH_TYPE Retorna o tipo de autenticação utilizado pelo Servidor Web.
AUTH_USER Retorna o nome do usuário autenticado no servidor Web.
CERT_COOKIE Retorna um identificador único, ligado ao Certificado do cliente.
CERT_FLAGS Mostra se o certificado do Cliente é válido.
PATH_INFO Retorna informações sobre o caminho relativo da página que está sendo exibida.
PATH_TRANSLATED Retorna informações sobre o físico (por exemplo: c:\inetpub\wwroot\page1.asp), relativo à página que está sendo exibida.
QUERY_STRING Retorna os valores de um formulário passados através do método get.
REMOTE_ADDR Retorna o endereço IP da máquina do Cliente.
REMOTE_HOST Retorna o nome da máquina do Cliente.
REQUEST_METHOD Retorna o método utilizado para a requisição da página: POST ou GET.
SERVER_PORT Retorna a porta TCP na qual a requisição foi feita. Por padrão, o servidor Web atende requisições na porta 80.
SERVER_PROTOCOL Retorna a versão e o nome do protocolo de requisição. Por exemplo HTTP 1.1.
SERVER_SOFTWARE Retorna o nome e a versão do servidor HTTP.
URL Retorna a porção básica da URL.

Tabela 4.1 Variáveis de Ambiente acessíveis através da coleção ServerVariables. 

Na Listagem 4.8, utilizamos o laço For Each...Next, para exibir todos os valores contidos na coleção ServerVariables. 

Listagem 4.8 – Exibindo os valores contidos na coleção ServerVariables – variables.asp.

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
 
6          <TABLE border=2>
7          <%For Each Variavel in  Request.ServerVariables %>
8               <TR>
9               <TD>
10             <% =Variavel %>
11             =</TD>
12             <TD>
13             <% =Request.ServerVariables(Variavel) %>
14             &nbsp;</TD></TR>
15        <%Next%>
 
16        </BODY>
17        </HTML>

Com este código simples, conseguimos exibir todo o conteúdo da coleção ServerVariables. Observe, na Listagem 4.8, que utilizamos algumas tags HTML para a construção de tabelas. Estas tags foram utilizadas apenas para melhorar a aparência do documento resultante. Para cada variável exibimos o nome da variável (Linha 10) e o valor contido na Variável (Linha 13). Na linha 14, utilizamos &nbsp. Este é um caracter especial para o HTML e é utilizado para que o Navegador do cliente exiba as células da tabela, mesmo quando estas estiverem vazias. O Internet Explorer não exibe os contornos de uma célula, caso não exista nenhum conteúdo na mesma, o que torna o resultado final pouco elegante. Na Figura 4.12, podemos ver a parte final do resultado do processamento do documento variables.asp:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.12 Exibindo o conteúdo da coleção ServerVariables.

Observe a variável SERVER_SOFTWARE, a qual exibe o valor: Microsoft-IIS/5.0, indicando que esta página está armazenada em um servidor Windows 2000, com servidor Web IIS 5.0.

Um pequeno exemplo prático: Vamos supor que você deseja construir uma página que somente deve ser acessada por pessoas de uma determinada rede. Os computadores da Internet utilizam um protocolo chamado TCP/IP. Todo computador que faz parte da rede deve possuir um número IP, e não podem existir dois computadores com o mesmo número IP. O número IP é um número no seguinte formato:

10.200.120.135
162.233.140.72

São quatro números separados por um ponto. O valor máximo de cada número é 249, ou seja, não posso ter um endereço IP 10.300.210.143. O 300 é um valor inválido em termos de número IP. Parte do número IP identifica a rede a qual pertence o computador e outra parte identifica o número do computador dentro da rede. Esta fora do escopo deste livro uma discussão mais ampla sobre o protocolo TCP-IP, mas existem excelentes fontes de referência na Internet. Você pode começar pelos sites da CISCO (www.cisco.com) e 3COM (www.3com.com).

Vamos supor que somente devem acessar a nossa página, computadores cujo endereço IP começa com 10.204.123 (que é exatamente o número da rede que utilizo em minha casa), sendo que o quarto número não importa. Neste caso estamos admitindo que os três primeiros números identificam a rede (10.204.123) e o último número identifica o computador dentro da rede. Neste caso, quero construir uma página que somente permita acesso á computadores da rede 10.204.123. Vamos ver como se faz isto ?

O algoritmo que utilizaremos é o seguinte:

Utilizaremos a variável REMOTE_ADDR para capturar o número IP do computador que está tentando acessar a nossa página.

Depois utilizaremos funções do VBScript para capturar apenas a parte do endereço da rede (três primeiros números), e comparo este valor com o valor 10.204.123.

Caso o valor esteja OK, o acesso ao restante da página é liberado, caso contrário o usuário será direcionado para um outra página, a qual contém uma mensagem dizendo que o mesmo não tem permissão para acessar a página desejada.

A código que implementa o nosso algoritmo é mostrado na Listagem 4.9.

Listagem 4.9 – Um exemplo prático de uso da coleção ServerVariables – filtro.asp.

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
 
6          <% 
7          'Captura o número IP do computador do  Cliente
 
8          Dim ip_cliente
9          Dim num_rede
10        ip_cliente=Request.ServerVariables("REMOTE_ADDR")
 
11        ' Utilizo a função Left para extrair apenas 
12        ' os 10 primeiros caracteres, os quais  devem
13        ' ser iguais a 10.204.123
 
14        num_rede=Left(ip_cliente,10)
 
15        ' Agora comparo o número de rede do  cliente com
16        ' o número de rede permitido
 
17        If num_rede="10.204.123" Then
18                    Response.Write  "<P>Parabéns !!!</P>"
19                    Response.Write  "<P>VOCÊ CONSEGUIU ACESSAR ESTA PÁGINA,<BR> PORQUE O SEU"
20                    Response.Write  "COMPUTADOR<BR> FAZ PARTE DA REDE<BR>" %>
21                    <%=num_rede%>
22                    <% Response.Write  "</P>" %>
23                    <% Else
24                    Response.Redirect("erro.htm")
25        End If
26        %>
27        </BODY>
28        </HTML>

Embora a linha 19 não esteja sendo exibida toda em uma única linha, digite a mesma toda em uma única linha.

Ao acessar esta página de um computador que faz parte da rede 10.204.123, receberemos a página indicada na Figura 4.13.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.13 Usuários da rede 10.204.123 tem permissão de acesso.

Ao acessar esta página de um computador que não faz parte da rede 10.204.123, receberemos a mensagem de erro indicada na Figura 4.14.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.14 Usuários fora da rede 10.204.123 não tem permissão de acesso.

Na linha 24 utilizamos o método Redirect do objeto Response (Response.Redirect), para redirecionar o usuário para uma outra página (erro.htm), caso o mesmo não fizesse parte da rede 10.204.123. Falaremos mais sobre o objetos Response e seus métodos ainda neste Capítulo.

A coleção Cookies do objeto Request

Esta coleção contém todos os valores de todos os Cookies enviados pelo Navegador do cliente, juntamente com a requisição da página ASP. Conforme descrevemos anteriormente, Cookies são pequenos arquivos que são gravados no computador do usuário. A informação contida nestes Cookies, normalmente, é utilizada para identificar o usuário para o site, na próxima vez que o usuário acessar o site. Quando o usuário acessa uma determinada página, o Navegador envia, junto com a requisição da página, todos os Cookies relacionados com o site que está sendo acessado. Cada Cookie pode conter um ou mais valores, e podem existir um ou mais Cookies associados com o site que está sendo acessado. Todos os valores de todos os Cookies são acessíveis através da coleção Cookies do objeto Request. Estes valores são somente para leitura, isto é, não podem ser modificados. Os Cookies são gravados utilizando o método Cookies do Objeto Response. Veremos o objeto Response em mais detalhes ainda neste capítulo. A título de exemplo, vamos considerar a página da Listagem 4.10:

Listagem 4.10 – Criando um Cookie no computador do usuário –CreateCookie.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
6          <p>ESTA PÁGINA CRIA UM COOKIE  CHAMADO TESTE_COOKIE</p>
7          <%
8          Response.Cookies("TESTE_COOKIE")("Nome")=  "Júlio Battisti"
9          Response.Cookies("TESTE_COOKIE")("Cidade")=  "Boqueirão do Leão"
10        Response.Cookies("TESTE_COOKIE")("Data")=  Date()
11        %>
12        </BODY>
13        </HTML>

A página da Listagem 4.10 cria um Cookie chamado TESTE_COOKIE. Dentro deste Cookie são gravados três campos ou chaves, conforme indicado na Tabela 4.2:

Campo/Chave Valor
Nome Júlio Battisti
Cidade Boqueirão do Leão
Data 3/7/1999

TABELA= Tabela 4.2 Valores gravados no Cookie TESTE_COOKIE.

Na Figura 4.15, temos o resultado do acesso à página da Listagem 4.10.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.15 Criando um Cookie no computador do usuário.

Observe que o endereço desta página, no nosso exemplo é: http://servidor/Capitulo4/getCookie.asp. Conforme descrevemos anteriormente, o Cookie é associado com o domínio no qual reside a página. No nosso exemplo, todas as páginas que estiverem em http://servidor, poderão acessar informações deste Cookie.

Para acessar as informações do Cookie, podemos utilizar a coleção Cookies do objeto Request, conforme indicado na Listagem 4.11.

Listagem 4.11 – Acessando os valores gravados no Cookie TESTE_COOKIE – getCookie.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
6          <B><FONT COLOR=BLUE> Seja  bem vindo: 
7          <%Response.Write Request.Cookies  ("TESTE_COOKIE")("Nome")& "<br>"%>
8          </FONT></B>
9          <%
10        Response.Write "Valores presentes  em Cookies" & "<br>"
11        Response.Write Request.Cookies  ("TESTE_COOKIE")("Nome")& "<br>"
12        Response.Write Request.Cookies  ("TESTE_COOKIE")("Cidade")& "<br>"
13        Response.Write Request.Cookies  ("TESTE_COOKIE")("Data")& "<br>"
14        %>
15        <P>&nbsp;</P>
16        </BODY>
17        </HTML>

Observe que a sintaxe para acessar os valores da coleção Cookie é a seguinte:

Request.Cookies(“Nome_do_Cookie”)  (“Nome_da_chave”)

Por exemplo, a linha de código:

11        Response.Write Request.Cookies  ("TESTE_COOKIE")("Nome")& "<br>"

Acessa o valor da chave Nome, do Cookie TESTE_COOKIE. Este valor é retornado para o Navegador do Cliente pelo método Write do objeto Response.

Na Figura 4.16, temos o resultado do acesso à página da Listagem 4.11.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.16 Acessando os valores, utilizando a coleção Cookies do objeto Request.

Também podemos utilizar a estrutura For Each...Next, para percorrer todos os valores de um determinado Cookie, exibindo o nome das chaves e o valor associado à cada chave, conforme indicado na Listagem 4.12.

Listagem 4.12 – Utilizando a estrutura For Each...Next, para acessar as chaves do Cookie TESTE_COOKIE – forCookie.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
6          <I><B><FONT COLOR=RED><P>Valores  de Cookies:</P></FONT></B></I>
7          <%
8             For Each Chave in Request.Cookies("TESTE_COOKIE")
9                 Response.Write Chave & ": "
10               Response.Write Request.Cookies("TESTE_COOKIE")(Chave) &  "<BR>"
11           Next
12        %> 
13        </BODY>
14        </HTML>

Na Figura 4.17, temos o resultado do acesso à página da Listagem 4.12.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.17 Utilizando a estrutura For Each...Next para acessar todas as chaves do Cookie TESTE_COOKIE.

A coleção ClientCertificate do objeto Request

Com a necessidade de efetuarem-se operações seguras através da Internet, foi criada a tecnologia de Certificados Digitais. Um Certificado funciona como uma espécie de Carteira de Identidade do usuário ou do Site que está sendo acessado. Um Certificado Digital pode conter diversas informações, tais como nome, e-mail, endereço, telefone, etc. No Capítulo 10, falaremos um pouco mais sobre Certificados Digitais.

Quando o usuário acessa uma determinada página, o Navegador envia informações sobre o Certificado Digital do usuário, caso o usuário possua um Certificado Digital. Para acessar as informações sobre o Certificado Digital do Cliente, podemos utilizar a coleção ClientCertificate do objeto Request.

A sintaxe para utilizarmos a coleção ClientCertificate é a seguinte:

Request.ClientCertificate(Chave[Subchave])

Onde temos:

  • Chave: É o nome do campo do certificado a ser acessado. Por exemplo, o campo ValidForm retorna a data a partir da qual o Certificado é válido, o campo ValidUntil, determina a data de expiração do Certificado, e assim por diante. A código da linha abaixo, irá exibir a Data de expiração do certificado do Cliente: 
Response.Write  “Seu Certificado expira em: “
Response.Write  Request.ClientCertificate(“ValidUntil”) 

Voltaremos a tratar sobre Certificados Digitais, no Capítulo 10.

Propriedade do Objeto Request

O Objeto Request apresenta uma única propriedade: TotalBytes. Esta propriedade informa o número total de bytes enviados pelo Navegador do Cliente. Esta informação está ligada a utilização do método Post, para enviar as informações digitadas em um formulário. A sintaxe é bastante simples, conforme indicado no seguinte exemplo:

total_bytes  = Request.TotalBytes

Na Listagem 4.13 temos um exemplo da utilização da propriedade TotalBytes. Este exemplo é uma pequena modificação do exemplo da Listagem 4.4, onde incluímos código para informar quantos bytes foram enviados pela requisição do usuário (linhas 7 até 9).

Listagem 4.13 – Utilizando a propriedade TotalBytes do objeto Request –TotalBytes.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
6          <B><P>A sua requisição  enviou o seguinte quantitativo de bytes para o servidor:</B></P>
 
7          <%
8          Response.Write Request.TotalBytes 
9          %>
10        <H2> Você digitou os seguintes  dados !!</H2>
11        <%
12        For Each Item in Request.Form %>
13        <P>
14        <%=Item%> 
15        =
16        <%=Request.Form(Item)%>
17        </P> 
18        <% Next %>
19        <P><A  href="list4-2.htm">Clique aqui para voltar ao  formulário</A></P>
 
20        </BODY>
21        </HTML>

O código da Linha 8, informa quantos bytes foram enviados pelo Navegador do Cliente.

Método do Objeto Request

O Objeto Request apresenta um único método: BinaryRead(quantidade_de_bytes). Este método é utilizado para capturar um determinado número de bytes, do total de bytes que foram enviados pela requisição do Cliente, através do método Post. O número de bytes a ser capturado é definido pelo parâmetro “quantidade_de_bytes”.  Não podemos utilizar este método na mesma página ASP em que utilizamos Request.Form. Somente podemos utilizar um dos dois: “Ou utilizamos a coleção Request.Form, ou utilizamos o método BinaryRead, não sendo possível a utilização dos dois na mesma página”. A sintaxe para utilização deste método é a seguinte:

tantos_bytes = Request.BinaryRead(tantos_bytes)

O exemplo abaixo, coloca os 100 primeiros bytes enviados pelo cliente, na variável 100_bytes:

100_bytes = Request.BinaryRead(100)

Na Listagem 4.14 temos um exemplo onde tentamos utilizar a propriedade BinaryRead e a coleção Request.Form, na mesma página.

Listagem 4.14 – Não Podemos utilizar Request.BinaryRead e Request.Form na mesma página – BinaryRead.asp

1          <%@ Language=VBScript %>
2          <HTML>
3          <HEAD>
4          </HEAD>
5          <BODY>
 
6          <P>Não podemos utilizar  Request.BinaryRead e:</P>
7          <P>Request.Form na mesma  página:</P>
 
8          <%
9          Dim vinte_bytes
10        vinte_bytes=Request.BinaryRead(20)
11        ‘ Esta linha irá gerar um erro.
12        Nome=Request.Form("Nome")
13        %>
 
14        </BODY>
15        </HTML>

Ao tentarmos acessar esta página, receberemos a mensagem de erro indicada na Figura 4.18:

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 4.18 Mensagemd e erro.

Com isso, encerramos o estudo do Objeto Request. Estudamos todos as coleções, propriedades e métodos do objeto Request, lembrando que o objeto Request não possui nenhum evento. Com a utilização do objeto Request, podemos ter acesso a diversas informações enviadas pelo Cliente, como por exemplo, informações enviadas através do preenchimento de um formulário.

No próximo item passaremos ao estudo do objeto Response. Os demais objetos do Modelo de Objetos do ASP 3.0, serão estudados nos demais capítulos deste livro.


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

Cursos Online

  • Banco de Dados
  • Carreira
  • Criação/Web
  • Excel/Projetos
  • Formação
  • + Todas as categorias
  • Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

    Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

    Todos os direitos reservados, Júlio Battisti 2001-2019 ®

    [LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

    APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI