Internet Information Server, MS-Access, MSSQL Server, Active Server Pages: Uma Solução Web João Garrott Negreiros (Univ. Lusófona e Univ. Nova Lisboa) Ana Cristina Costa (Univ. Nova Lisboa) Ilídio Lopes (Instituto Politécnico Santarém) Dulce Sá (Univ. Nova Lisboa) José Santos (Univ. Nova Lisboa)

Portugal, Abril 2007

apostilando.com

2

1

Internet Information Server

1.1. Conceitos Básicos Antes de se introduzir um estudo mais aprofundado do Internet Information Server, é necessário relembrar alguns conceitos básicos da Internet, segurança, Windows XP e, nomeadamente, TCP/IP. Alternativamente, apresenta-se no Glossário desta obra alguns conceitos sobre Web mas os autores aconselham a consultar livros e Web sites especializados sobre estes assuntos.

1.2. Instalação do IIS O Microsoft Internet Information Server faz parte do Windows Option Pack CD mas pode ser obtido pelo site da Microsoft. A sua instalação é um processo relativamente fácil. Contudo, é importante mencionar alguns pré-requisitos, quer a nível de hardware quer a nível de software, como os seguintes itens: Desinstalar qualquer versão anterior de servidor Web ou FTP Logon como administrator Fechar todas as ligações ODBC até a instalação estar completa 128 MB de memória ou superior Placa de rede instalada com TCP/IP e um IP address fixo (não é possível assignar o computador ao serviço DHCP para obtenção de um IP address dinâmico) certificado (se possível, por um Internet Service Provider). Instalação do Windows XP com o Service Pack 2. Outras componentes que a Microsoft permite instalar além do Web Server e do FTP Server são o Microsoft Transaction Server (processo de transacções para aplicações distribuídas), Active Server Pages (mecanismo que permite um acesso dinâmico a páginas Web pelos browsers), Data Access Components (conjunto de componentes para acesso a base de dados) e o Microsoft Management Console (ferramenta administrativa do site).

apostilando.com

3

A partir das opções Start/Painel de controlo/Adicionar ou remover programas/Componentes de Windows, seleccione, entre outras, a opção Internet Information Server que permite suportar as transacções do MS-FrontPage, Active Server Pages e possíveis conexões a base de dados via ODBC e ADO.

Por defeito, o directório de instalação do serviço WWW é no directório c:\InetPub\wwwroot e do serviço FTP é no directório c:\InetPub\ftproot, podendo ser alterado caso o utilizador o entenda. Após a instalação, o Internet Service Manager será a ferramenta que permitirá ao utilizador realizar a gestão deste software pertencente a um package designado Microsoft Back Office.

apostilando.com

4

A estrutura de directórios criadas apresenta-se, de seguida. Note a existência do ficheiro default.html (por vezes é o ficheiro index.html) normalmente designado a home page do site em causa.

apostilando.com

5

1.3 TCP/IP em MS-Windows O próximo passo é testar a sua placa de rede e verificar se outros computadores podem aceder ao host que retém o IIS. Criando uma sessão MS-DOS e dando o comando ipconfig/all é possível verificar qual o estado do computador local em termos da rede, nomeadamente em relação ao protocolo TCP/IP. Em termos gráficos, a componente que regista esta informação de redes no Windows XP é realizada em Start/Control Panel/Networking. Os parâmetros principais são o endereço físico, o endereço IP, a máscara de sub-rede, a gateway predefinida, o servidor de DNS (Domain Name System) e o servidor WINS. Convêm, por razões óbvias, a firewall estar ligada. Outras opções a ter em conta é o NetBIOS Name e nome do domínio ou workgroup a que pertence o computador em causa (realize o comando set a partir da consola do Windows para visualizar esta informação), serviços a instalar como o Computer Browser, Workstation, Server e o SAP Agent, protocolos instalados como o TCP/IP, o DLC, o AppleTalk e o NetBEUI, quais as placas de rede instaladas como a 3Com, DEC, Intel, HP e IBM e a capacidade de conectar protocolos, placas de rede e serviços (painel bindings).

Neste caso particular e baseado na figura acima, tem-se: O Host Name (255 caracteres, no máximo) é webalunos.isegi.unl.pt (criado quando se instalou o TCP/IP) e o seu IP address é o 193.136.119.7. Note que estes parâmetros devem ser únicos na rede em que o computador está integrado. Como se está presente perante uma rede de classe C, a Subnet Mask apresenta os valores 255.255.255.0 para distinguir a network do host. A placa de rede presente designa-se Novell 2000 Adapter com o MAC endereço 0000-E8-14-7B-F3 (48 bits).

apostilando.com

6

Um outro ponto importante é a definição do IP do DNS Server necessário no Host Name Resolution (tabelas de IPs necessária quando uma aplicação pretende conectar uma outra através do host name). Finalmente é necessário saber qual o IP da máquina que serve de router/gateway da rede em causa para comunicação com outras redes exteriores. Um outro comando DOS a verificar no computador é o comando hostname. Este NetBIOS Name poderá será usado no acesso a shares remotos através da especificação Universal Name Conventional (UNC) como, por exemplo, \\webalunos\temp1, em que temp1 seria o nome de um share relativo ao directório c:\winnt\temp no computador webalunos. Lembre-se, também, que um host pode apenas conter apenas um NetBIOS Name mas podem ser assignados vários host names associados a nomes de domínios, formando o Fully Qualified Domain Name (FQDN). Por exemplo: É perfeitamente possível instalar no mesmo Internet Information Server os serviços http://biblio.isegi.unl.pt e ftp://biblio.isegi.unl.pt (dois nomes FQDNs para um nome NetBIOS). Um modo bastante eficaz de testar a acessibilidade ao host acima descrito é num outro computador (neste caso, o 193.136.119.18) digitar o comando ping target-IP-Address (neste caso, ping 193.136.119.7). Vários pacotes de 32 bytes são enviados e, caso a máquina destino esteja alive, estes serão devolvidos indicando que o host destino se encontra contactável.

1.4 DNS O Domain Name System é um serviço de name resolution, tal como o WINS, cujo objectivo é manter uma série de equivalências entre endereços IPs de hosts e respectivos nomes. Este serviço é usado para aplicações e utilitários que usam o interface Sockets (port 53) como o ftp, telnet, ssh, rsh, ping e o tracert.

apostilando.com

7

O serviço Microsoft DNS Server pode ser instalado no Windows 2003 Server e será invocado pelos clientes que têm de estar configurados com o endereço desse mesmo servidor como se visualiza na imagem seguinte. Neste caso particular, o cliente garrott.ist.utl.pt apresenta dois endereços IPs na opção DNS.

O DNS Manager é o responsável pela administração deste serviço mas para se entender este utilitário é necessário relembrar os seguintes conceitos: Name Space é o conjunto de nomes organizados hierarquicamente a partir do domain top como .edu, .com.br ou .pt. Zone files são os ficheiros residentes em \winnt\System32\dns que contêm os resources records de cada sub-dominio existente. Cache File é um ficheiro criado por este serviço que contém endereços de servidores DNS da Internet, capaz de dar conta do processo de name resolution do domínios de topo. Master Server são os servidores a partir do qual um servidor DNS secundário obtém cópias das zone files. Reverse Lookup Files são os ficheiros de extensão .in-addr.arpa que fornecem os nomes dos hosts em função de endereços IP. A verificação deste serviço no Windows 2003 Server é feita na opção Start/Settings/Control Panel/Network/Services (ver figura seguinte)

apostilando.com

8

Como se pode verificar na figura seguinte, o computador associado a este DNS designase mail.isegi.unl.pt, não existindo outros servidores na rede com este serviço. Além disso, apresenta apenas uma zona chamada isegi.unl.pt cujos registos são visualizados na janela do lado direito.

Compreendido em termos gerais o serviço DNS, é assim necessário introduzir um novo registo referente ao novo serviço a criar no IIS e que se irá designar biblio.isegi.unl.pt. Repare que não é necessário introduzir o sub-dominio isegi.unl.pt pois já existe (o registo tipo SOA – Start Of Authority – existente nos registos deste subdominio indicam esta conclusão). Além disso, é fundamental criar o endereço IP do novo serviço a criar no DNS e que foi aquele obtido pelo comando ipconfig/all. Só assim, será possível aceder ao novo web site de qualquer parte do mundo.

apostilando.com

9

A actualização da janela é feita pela tecla F5 (refresh) conforme a imagem anterior prova.

1.5 Criação de um Web Site A criação do site http://biblio.isegi.unl.pt anteriormente referido no DNS será objecto de estudo nesta secção. Assim, a opção a escolher no Windows Server, dentro do IIS Manager, será Action/New/Site.

Seguidamente, deve ser criado uma pequena descrição do Web site que servirá como identificação para o Internet Information Manager (neste caso particular, foi a biblioteca). Selecciona-se o endereço IP da máquina que suporta o IIS e como seria de esperar, o port do serviço Web será o 80. De facto, como as ligações Web usam a tecnologia Sockets e como o IP do computador onde reside o IIS é sempre o mesmo, será a porta que distinguirá qual o serviço a seleccionar. Caso se instale o serviço ftp (por

apostilando.com

10

exemplo, ftp://biblio.isegi.unl.pt) no mesmo IIS então seria o port 21, por defeito, que identificaria este serviço.

Uma outra hipótese seria instalar também um outro serviço WWW no mesmo IIS. Por exemplo: http://videoteca.isegi.unl .pt. Esta situação é possível mas atenção: a porta de ligação não poderia ser o port 80 mas obrigatoriamente teria que ser uma outra pois esta já estava assignada ao serviço http://biblio.isegi.unl.pt.

O passo seguinte consiste em indicar o directório de raiz do site a criar. Neste caso é c:\InetPub\wwwroot\biblioteca. A imagem seguinte indica quais as permissões a dar à home directory acima mencionada. Por defeito, as opções permitidas são Allow Read Access e Allow Script Access. O privilégio Allow Execute Access permite a execução de correr qualquer tipo de aplicação incluindo executáveis binários e DLLs. Finalmente, o privilégio Allow Directory Browsing permite o cliente visualizar a estrutura dos ficheiros e directórios do nosso sistema.

apostilando.com

11

Após o término da instalação do novo site http://biblio.isegi.unl.pt, o seu status deve ser Running. Note que o site Default Web Site está Stopped pois o endereço IP e a porta de ligação é a mesma, o que naturalmente não pode acontecer. Apenas um deles pode estar alive. Como já foi referido, uma possibilidade seria assignar uma porta diferente. Por exemplo: o port 88. Consequentemente, o acesso seria http://biblio.isegi.unl.pt:88. Apresenta-se, de seguida, a home page do site e a localização do ficheiro default.htm.

1.6 Administração de um Web Site Parametrizar e controlar os diversos parâmetros de um site Web quando instalado no IIS é a principal função que um administrador deve ter durante o tempo de vida do mesmo. Para isso e recorrendo ao site criado http://biblio.isegi.unl.pt, analise-se alguns dos seus parâmetros mais importantes numa subdivisão em nove categorias: Web Site - Configura informação sobre identificação do mesmo e conexões.

apostilando.com

12

Operators - Apresenta os privilégios do operador. Performance - É usado para optimização de tempos de resposta e o ajustamento de algumas funções de nivelamento de performance como o número de conexões simultâneas ao site. Configuração - Permite a edição, criação, apagamento e status dos ISAPI Filters. Home Directory - Especifica o directório raiz e permissões associados ao Web Site. Documents - Indica os documentos de default. Directory Security - Configura outras autenticações do site. HTTP Headers - Permite controlar ao browser a verificação da data actual com a data de expiração da página a ler e decidir se a página a mostrar deve ser aquela que está em cache ou se é necessário actualizar a página no site (processo de reload). Custom Errors - Visualiza as mensagens de erros.

O primeiro painel a analisar é o Home Directory na qual se destaca os seguintes parâmetros (ver figura acima): A Directory Located On This Computer - Indicação que o directório raiz se encontra no computador presente. A Share Located On Another Computer - Capacidade de indicar através de um share de rede (UNC) a localização do directório raiz. Por exemplo: \\adamastor\biblio-share.

apostilando.com

13

A Redirection To A URL - O directório raiz encontra-se num outro servidor Web (URL). Por exemplo: http://www.ist.utl.pt/biblioteca. Log Access - Assegurar que todas as visitas ao site são registadas. Deve estar sempre activo. Uma outra capacidade do IIS é restringir o acesso ao site criado (painel Directory Security). Esse objectivo pode ser realizado de duas formas: Granted Access permite o acesso a todos os computadores do mundo excepto os que forem mencionados na janela abaixo. Denied Access não permite ninguém aceder ao site excepto os que forem descritos.

O painel Custom Errors especifica as mensagens de erro do protocolo http 1.1 que são retornadas ao browser do cliente (ver figura seguinte). Assim, é possível a edição e customização. O painel Operators indica os accounts (utilizadores e grupos) do Windows NT Server que permite gerir o site como actualizar os documentos Web de default ou parametrizar as permissões de acesso. No entanto, para se criar directórios virtuais, mudar a password da conta anonymous ou alterar a configuração base do IIS é fundamental caso o utilizador seja membro do grupo Administrators.

apostilando.com

14

No painel Web Site é possível especificar a sua descrição, IP Address da placa de rede, o port usado pelo serviço Web (por omissão, é o port 80), indicar o número de conexões simultâneas permitidas e ligar/desligar o ficheiro de registos de segurança (data, tempo, IP, browser, protocolo e username do cliente, status do pedido, número de bytes enviados e recebidos, tipo de recurso acedido pelo cliente…) do IIS segundo quatro formatos: Microsoft Logging, NCSA Logging, Extended Logging e ODBC Logging.

Finalmente, o painel Documents permite indicar quais os ficheiros que suportam a home page do site (normalmente, costuma ser default.htm ou o default.asp). Além disso, é possível especificar o documento de rodapé (opção Enable Document Footer) para ser adicionado a todas as páginas Web. Normalmente, especifica-se neste ficheiro informação estática como copyrights ou nomes e telefones de contacto. 1.7 Directório Virtual O conceito de directório virtual é relativamente simples e muito útil para quem administra um site Web. Assim, o seu objectivo é de criar um nome ou alias que representará um determinado caminho (path) na estrutura de directórios existente localmente ou num computador remoto. Imagine que o utilizador quer disponibilizar todos os ficheiros do directório c:\users\cristina\temp sem querer alterar a configuração do seu site que se localiza em d:\InetPub\wwwroot. Para isso, basta criar um directório virtual no site em causa (cristina, por exemplo) associado ao directório

apostilando.com

15

c:\users\cristina\temp. Qualquer referência ao directório virtual (http://www.site.com/cristina) significa aceder directamente ao directório acima referido. No exemplo seguinte, visualiza-se a criação de um directório virtual designado d464 através da opção Action/New/Virtual Directory no site http://biblio. isegi.unl.pt. Acontece que o directório a disponibilizar encontra-se num outro computador (Isegi01) sendo obrigatório necessário indicar a path completa segundo a norma UNC.

Uma vez que este directório pertence ao utilizador d464 do domínio ISEGI, é necessário indicar a password de autorização de acesso.

Finalmente, indica-se quais as permissões de acesso ao directório virtual (por defeito, são o Allow Read Access e o Allow Script Access). Como mostra a figura seguinte, o site biblioteca, situado no computador webalunos, apresenta o directório virtual d464 localizado num outro computador, Isegi01. Visto ter sido dado o privilégio Directory Browsing Allowed, é possível visualizar todo o seu conteúdo à custa do URL http://biblio.isegi.unl.pt/d464. Caso se queira aceder ao ficheiro page1.htm, bastaria escrever http://biblio.isegi.unl.pt/d464/page1.htm. Contudo, tenha cuidado se acciona o

apostilando.com

16

privilégio Write pois é possível instalar software por parte de qualquer cliente no directório em causa.

1.8 Instalação de um FTP Site A criação de um servidor de FTP é similar ao apresentado no sub capítulo 1.5. Consequentemente, o primeiro passo é a descrição do site, FTP Biblioteca neste caso particular. O passo seguinte é a selecção do endereço IP da placa de rede e do port 21 necessário nas comunicações WinSockets API. O terceiro passo traduz-se na localização do directório raiz, c:\InetPub\ftproot\Biblioteca, e quais as permissões associadas, isto é, Allow Read Access e/ou Allow Write Access. Note-se que não é possível ter dois FTPs sites no mesmo IIS com o mesmo port.

Uma das propriedades a salientar é as mensagens onde é possível inserir uma mensagem que se associará quando o utilizador precisar de contactar o site em causa.

apostilando.com

17

Uma outra possibilidade é criar o utilizador anonymous de modo a obter-se acesso a conteúdos restritos do site em causa. Por defeito, o username criado designa-se IUSR_computername (no nosso caso particular chama-se IUSR_webalunos) ao qual é dado direitos de logon local.

Este account anonymous é criado automaticamente pelo sistema e sendo possível ser verificado pelo User Manager For Domains do Windows Server (actual Active Directory). Note-se que este utilizador especial deve pertencer ao grupo local Guests como também não deve ter assignado uma password (ver figura anterior). Em termos do ponto de vista do utilizador final, é possível aceder aos conteúdos de um serviço de FTP de dois modos: 1) Web browser como o Internet Explorer, Mozilla ou o Ophra. 2) Programa tradicional de FTP como o WS_FTP (ver figuras seguintes).

apostilando.com

18

1.9 Monitorização da Performance do Web Server O Windows Server apresenta algumas ferramentas que permite verificar a performance do servidor do IIS tais como o Task Manager, Performance Monitor, Network Monitor (não faz parte da instalação standard do Windows NT ) e Server Manager. O Task Manager (taskmgr.exe) permite obter uma visão rápida do sistema, nomeadamente o CPU e a memória RAM usada. É subdividido por três tabulações: Applications (programas do utilizador em estado Running) Processes (nome do processo, PID, tempo de CPU e memória usada) Performance (estado corrente e histórico do CPU e memória usada).

apostilando.com

19

O utilitário Performance Monitor é acessível através das opções Start/Programs /Admnistrative Tools/Performance Monitor na qual é possível seleccionar objectos, instâncias (número de ocorrências de objectos) e counters (características mensuráveis do objecto seleccionado). Além disso, é possível accionar a opção alert, quando associado a objectos, para informar o administrador de situações de alerta.

Apresentam-se, de seguida, os objectos/counters mais importantes para um administrador de sistemas: Cache Size - Tamanho da cache partilhada do http e do FTP. Cached Used - Quantidade de dados em cache incluindo listagem de directórios. Measured Async I/O Bandwidth Usage - Média do número total de bytes enviados e recebidos pelo Web Server por minuto. Current Blocked Async I/O Requests - Número de pedidos bloqueados e retidos em buffer para um pós-processamento. Total Files Transfered - Número de ficheiros enviados e recebidos pelo Web Server desde que o serviço começou. Bytes Sent Per Second - Rácio de bytes enviados pelo servidor Web. Bytes Received Per Second - Rácio de bytes recebidos pelo servidor Web. Total CGI Requests - Número de pedidos CGIs desde que o serviço começou. Total Method Requests - Número de pedidos HTTP DELETE, GET, HEAD, POST, PUT, e TRACE. Logical Disk - Percentagem de espaço livre no disco.

apostilando.com

20

O Windows Server Manager (Start/Programs/Admninistrative Tools) apresenta ainda duas vertentes: Gerir recursos do Server e visualizar informação actualizada dos recursos partilhados entre servidores (Users, Shares, In Use, Replication, Alerts).

apostilando.com

21

2

Active Server Pages (Part I)

2.1 Introdução Active Server Pages (ASP) é uma aplicação Web Server-Side da Microsoft e que permite desenvolver programas interactivos para a Internet utilizando diversas tecnologias como a Object Linking and Embedding (OLE), ActiveX, Active Data Objects, Visual Basic, Perl, VBScript (linguagem por defeito), Jscript e a Open Database Connectivity (ODBC). Isto significa que as ASPs permitem o acesso a bases de dados via ODBC e ADO como o Access ou o SQL Server.

Por outras palavras, uma aplicação ASP é uma tecnologia Server-Side que pode conter código HTML, delimitadores scripts com código VBScript ou Jscript, componentes ActiveX e outros acessórios. Note que o cliente Web nunca poderá aceder ao código ASP original mas apenas ao seu resultado em HTML gerado pelo servidor.

apostilando.com

22

Não sendo necessário compilar o código criado, uma ASP é uma componente Data Library Linked (DLL) instalada no servidor Web que processa ficheiros .ASP, complementado as aplicações client-side escritas, também, em linguagens scripts. Server-side significa que o cliente conecta-se ao servidor Web a pedir um documento. Caso seja um script ASP, o Web Server executa localmente o código e reenvia o respectivo output ao cliente em formato HTML. Neste momento, a conexão é terminada. Para uma melhor utilização desta tecnologia, convém utilizar o Windows Server com IIS por motivos de performance e segurança. A construção destas aplicações podem ser realizadas pelo Frontpage, Visual InterDev ou o Dreamweaver. No entanto e por motivos didácticos, todo o código será construído a partir do editor de texto Notepad onde o código ASP é inserido no meio de código HTML e delimitado pelos delimitadores <% e %>. Não se esqueça que o directório que contêm o código ASP deve ser atribuído a permissão de Script ou Execute pelo IIS. Analise-se o primeiro exemplo de ASP deste capítulo e o respectivo output. Contudo, pede-se ao leitor que consulte informação respeitante complementar ao VBScript e às ASPs como o excelente livro da SAMS Teach Yourself, Active Server Pages 2.0 In 21 Days. <%@ LANGUAGE="VBScript" %> Exemplo 1 (http://biblio.isegi.unl.pt/d464/exemplo1.asp)
<%= "Hora Local: " & Time & " do dia " & FormatDateTime (date,vblongDate) %>
<% If Request.form.Item("nome")="" Then %>
Indique o seu nome:
Luxuoso
Desportivo
Descapotável

<% Else Select Case Request.Form.Item("tipo") Case 1 : Response.Write (Request.form.Item("nome") & " prefere carros do tipo Luxuoso")

apostilando.com

23

Case 2 : Response.Write (Request.form.Item("nome") & " prefere carros do tipo Desportivo ") Case 3 : Response.Write (Request.form.Item("nome") & " prefere carros do tipo Descapotável ") End Select End If %>

Clique aqui para recomecar a aplicação

Antes de tudo, convêm ter sempre presente que o código de scripting deve estar delimitado pelas tags <% e %>, o que não acontece obviamente com o código HTML. Alem disso, a primeira linha de código poderia ser dispensável visto, por defeito, a linguagem de script ser o VBScript. Em termos de delimitadores nas ASPs, existem três tipos principais a saber: <% Instruções ASPs %> o <% Dim NumeroLinhas %> apostilando.com

24

<%= Visualizar calculos de resultados ou conteúdos de variáveis no meio de código de HTML %> o <%= FormatDateTime(Data,vbLongDate) %> (equivalente a <% Response.Write FormatDateTime(Data,vbLongDate) %>) Definição dos blocos ASPs e da linguagem de Scripting o Do exemplo anterior, apresenta-se de seguida mais alguns detalhes importantes a reter pelo leitor: O parâmetro RUNAT=SERVER é fundamental na medida em que indica que o Script deve ser executado pelo servidor. Caso contrário, os comandos são embebidos no ficheiro de HTML e enviados ao browser para posterior execução. É possível usar duas linguagens de scripting: VBScript e Jscript. O Netscape browser não suporta VBScript nem objectos ActiveX. Os testes de ficheiros .ASP devem ser realizados num servidor com o Internet Information Server. Evite o uso de gráficos grandes e complexos como o uso de gráficos para background da página Web. Mais, tente evitar o uso de Java Applets () e controlos ActiveX. As funções criadas pelo utilizador DataJscript Function e DataVBScript Function são chamadas pela função Call. A instrução For var=x to y Next permite executar interactivamente um conjunto de instruções y-x vezes. O mesmo se passa com a estrutura Do...Loop Until Condition. A instrução condicional segue a seguinte sintaxe: If condition Then Else End If. Similar à anterior, tem-se Select Case Variable…End Select. O próximo exemplo contêm um conjunto de instruções que permite testar a validação de datas. <%@ LANGUAGE=VBScript %> Validação das Datas

apostilando.com

25

<% Dim Data If (Request.Form.Item("Dia")="" OR Request.Form.Item("Mes")="" OR Request.Form.Item("Ano")="") Then %>

Indique o Dia:
Indique o Mês:
Indique o Ano:
<% Else Data=Request.Form.Item("dia") & "/" & Request.Form.Item("mes") & "/" & Request.form.Item("ano") If IsDate(Data) Then %>
<% Response.write("Data Válida") %>

<% Else %>


<% Response.Write("Data Inválida") %>

<% End If End If %> Clique aqui para recomeçar a aplicação

Note que neste exemplo académico, a concatenação de strings e variáveis do Form à variável Data é conseguida pelo símbolo &. Duas das funções relativas ao factor tempo em VBScript são o Now() que retorna a data corrente e o Weekday() que determina o dia da semana como Domingo ou Sábado. Assim, a resposta ao input indicado acima, a

apostilando.com

26

resposta da ASP seria Data Válida. Caso se indicasse alguns caracteres alfabéticos sem qualquer sentido, a resposta passaria a ser o output seguinte:

2.2 Forms Virtualmente, é possível obter informação do utilizador, à semelhança da função InputBox() do Vbasic, através dos famosos Forms do HTML por dois métodos: GET especificado pela sintaxe

PUT especificado pela sintaxe O método GET permite uma transferência de informação de 2048 bytes e que poderá ser determinado pelo método Request.QueryString() cujo argumento será o nome do campo atribuído no Form. Analise o seguinte exemplo e note as seguintes três particularidades: O parâmetro ACTION indica o nome do próprio ficheiro ASP onde se insere o próprio Form. A instrução <% If Request.QueryString("nome-do-campo")=""…Else…End If%> vai permitir que o mesmo ficheiro sirva de cliente (introdução dos dados) e servidor (tratamento e resposta desses mesmo dados) simultaneamente. Os dados do cliente fazem parte do endereço de URL da aplicação ASP. <%@ LANGUAGE=VBScript %> Entrada de dados pelo método GET (http://biblio.isegi.unl.pt/formget.asp)

<% If Request.QueryString("passatempo")="" Then %> Indique qual o seu passtempo preferido : apostilando.com

27

<% else %>


<%= " O seu passatempo preferido é " & Request.QueryString ("passatempo") & ", seu malandro ! " %>

Clique aqui para recomeçar a aplicação <% End If %>



Em termos do método PUT, as diferenças a assinalar no exemplo anterior é a presença do método Request.Form.Item() que permite obter o conteúdo das variáveis em causa. O exemplo seguinte permite obter o factorial de um número que é fornecido pelo utilizador através do método acima referido. Note que caso não seja indicado qual a linguagem de scripting, a linguagem por defeito é o VBScript. Factorial de um número utilizando o (http://biblio.isegi.unl.pt/factorialpost.asp)

<% If Request.Form("factorial")="" Then %>



apostilando.com

método

POST

28

Indique um número :

<% ElseIf IsNumeric(Request.Form.Item("factorial")) Then mensagem=" O seu factorial é " fact=1 For contador=1 to Request.Form.Item("factorial") fact=fact*contador Next %> <%= mensagem %> <%= fact%> <% Else Response.Write ("O seu input não é válido!") End If %>

Clique aqui para recomeçar a aplicação



Analisando o programa anterior, tem-se: A função IsNumeric() permite validar a entrada dos dados pelo campo factorial pertencente ao Form. As variáveis alfanuméricas são inicializadas entre ASPs. A função Request.Form.Item() permite obter o conteúdo da variável que se apresenta como argumento. A função Response.Write() visualiza a mensagem que estiver no seu argumento.

apostilando.com

29

Caso o utilizador digite um conjunto de caracteres, a validação dos dados é feita respondendo o sistema com o seguinte output:

2.3 Ficheiros de Texto Uma das outras características importantes das ASPs é o acesso a ficheiros ASCII situados no disco do servidor através da componente text stream. Esta componente utiliza o objecto FileSystem para ler (método OpenTextFile) e escrever (método CreateTextFile) texto no ficheiro em causa. A sua inicialização é feita à custa do comando Set FileStreamObject = CreateObject (―Scripting.File SystemObject‖). Como qualquer linguagem que manipule ficheiros de texto, também as ASPs contêm um conjunto de propriedades que convêm salientar: AtEndOfLine – Determina fim de linha quando se lê caractere a caractere com o método Read. AtEndOfStream – Determina se é ou não fim de ficheiro. Column – Especifica o número de caracteres lidos desde o inicio da linha. Line – Indica o número de linhas lidas até aqui.

apostilando.com

30

Em termos dos métodos do objecto TextStream, apresenta-se a seguinte lista de métodos e respectiva breve explicação: Read – Usado para leitura de um carácter de cada vez. ReadLine – Utilizado para leitura de uma linha inteira. Write – Escreve uma string mas não incluindo o carriage return. WriteLine – O mesmo que o comando anterior mas incluindo o carriage return. Skip – Salto de um conjunto de caracteres. SkipLine – Salto para a próxima linha. O exercício seguinte tenta mostrar a possível utilidade do acesso a ficheiros pelas ASPs. O método OpenTextFile permite usar o ficheiro Noticias.txt que reside na raiz do servidor http://biblio.isegi.unl.pt. O segundo parâmetro permite indicar que será feita uma leitura sobre o ficheiro. Caso o valor fosse 2 então teria-se um acesso de escrita. Não se esqueça, também, que o directório onde reside o ficheiro a aceder deve conter os privilégios de direito (Read, Write, Execute, Delete, Take Ownership ou Change Permission). Caso o cliente Web que, por defeito, pertence ao grupo Everyone não lhe for assignado privilégios de acesso ao directório onde reside o ficheiro em causa, o código de erro de acesso será visualizado.

Note que a base de dados biblioteca.mdb e todos os ficheiros ASPs a seguir descritos localizam-se, a partir deste momento, em c:\InetPub\wwwroot\GSTI\D464 (por motivos de acesso local, contem um sharing designado testes) enquanto a home directory do site http://biblio.isegi.unl.pt reside em c:\InetPub\wwwroot\GSTI no computador webalunos. Isso significa que o antigo directório virtual remoto, d464 situado em \\Isegi01\alunos\d464\temp, foi modificado para o directório local apostilando.com

31

c:\InetPub\wwwroot\GSTI\D464 (repare que nada mudou para o URL do cliente mas simplesmente para o administrador de sistemas). <%@ LANGUAGE="VBScript" %> Exemplo 1 (http://biblio.isegi.unl.pt/d464/Leitura_ficheiro.asp) <% Set FileStreamObject = CreateObject("Scripting.FileSystemObject") Set leitura = FileStreamObject.OpenTextFile(Server.MapPath("/") & "\Noticias.txt",1) While not leitura.AtEndOfStream Response.Write leitura.ReadLine Wend leitura.close %> Como seria de esperar, o output desta ASP é o seguinte e que representa a visualização do conteúdo do ficheiro noticias.txt.

2.4 O Objecto Request Quando um utilizador se conecta a uma página HTML num servidor Web, um conjunto de informações (variáveis Server) sobre a transacção está disponível através do objecto Request cuja sintaxe é a seguinte: Request.ServerVariables ("Nome_da_ Variável"). Analise-se agora o seguinte script e o respectivo output: <%@ LANGUAGE="VBScript" %>

apostilando.com

32

http://biblio.isegi.unl.pt/d464/request.asp

Aceder às variáveis de ambiente do SERVER através do Request.ServerVariables("Nome da variável")


<% For each variavel In Request.ServerVariables %>

<%= variavel %>

    <%= Request.ServerVariables(variavel) %>
<% Next %>




Associado ao ciclo For…Each…Next, este visualiza os valores das variáveis do servidor onde o método Request.ServerVariables é fundamental. O significado das variáveis mais importantes são: CONTENT_TYPE - Indica o tipo de objectos (MIME content types) associados à transferência (HTML, Word, GIFs…). HTTP_ACCEPT - Menciona os objectos suportados pelo Web browser. HTTP_USER_AGENT - Web browser usado pelo cliente. PATH_INFO - Relata os parâmetros de input pelo programa. PATH_TRANSLATED - Mostra a Pathname completo do Script ASP. QUERY_STRING - Quando o script usa o método GET no Form, esta variável contem as variáveis e respectivos valores introduzidos pelo cliente. apostilando.com

33

REMOTE_ADDR - Refere o endereço IP do cliente. REQUEST_METHOD - Indica o método (HEAD, POST, GET, PUT) de chamada à ASP. SERVER_NAME - Relembra o nome do servidor da ASP chamada. SERVER_PORT - Declara o número do port usado pelo http que, normalmente, é 80. SERVER_SOFTWARE - Afirma o nome do software instalado pelo servidor Web da ASP invocada. Um exemplo típico do uso destas variáveis poderia ser o teste do endereço IP associado ao cliente para uma visualização ou não de uma página de HTML. Apesar de não ser um teste rigoroso de segurança, pois é possível ao cliente mudar o seu verdadeiro endereço IP, mostra-se a seguir, a titulo de exemplo, uma possível aplicação do uso destas variáveis do sistema: <%@ LANGUAGE="VBScript" %> http://biblio.isegi.unl.pt/d464/seguranca.asp

Testar o endereço IP do Cliente através do Request. ServerVariables("REMOTE_ADDR")


<% If Request.ServerVariables("REMOTE_ADDR") = "193.136.119.10" Then %>

<% Else Response.write "Não está autorizado a Visualizar a imagem do milénio!!!" End If %>


Neste exemplo, a imagem sapo_generico.gif só poderá ser visualizado se o IP do cliente for o 193.136.119.10. Caso contrário, a mensagem "Não está autorizado a visualizar a imagem do milénio!!!" será visualizada (ver figuras seguintes).

apostilando.com

34

2.5 Introdução ao Acesso a Bases de Dados em Ambiente Web O objectivo desta secção e da próxima será a utilização de ASPs no acesso a uma base de dados em MS-Access (biblioteca.mdb) de modo a obter-se uma solução Web. Só não se esqueça que o Microsoft Access apenas permite até 10 conexões simultâneas o que não acontece com o Microsoft SQL Server. Após a criação da base de dados, é necessário criar o File Data Source Name (os dados são guardados num ficheiro de texto) ou o System Data Source Name (a informação é guardado no Windows Registry). Neste caso, optou-se pela segunda opção e isso é conseguido pela opção Start/Settings/Control Panel/ODBC Data Sources. Note que a criação de um ODBC para uma base de dados em MS-Access é obrigatório na presença do device drive (ver figura seguinte). Relembra-se que a base de dados biblioteca.mdb e todos os ficheiros ASPs mencionados localizam-se, neste momento, em c:\InetPub\wwwroot\GSTI\D464 e a home directory do site http://biblio.isegi.unl.pt reside em c:\InetPub\wwwroot\GSTI.

apostilando.com

35

Criado o driver ODBC para a BD, uma possível solução Web para visualização de todos os registos desta seria a seguinte ASP. Repare que após a criação do Open Data Base Connectivity através de componentes ActiveX Data Objects (ADO) entre a base de dados biblioteca.mdb e a ASP a criar (Set MyConnection=Server.CreateObject ("ADODB.Connection") e MyConnection .Open "DSN=BibliotecaODBC", "","")), é necessário criar o seguinte objecto temporário de modo a reter os registos resultantes da selecção a fazer: Set MyRS=Server.CreateObject("ADODB.Recordset"). A instrução MyRS.Open "livros",MyConnection,,,0 permite aceder à tabela livros com a instancia criada MyConnection e, finalmente, o aparecimento do ciclo While…wend permite visualizar o conteúdo da tabela livros no browser do cliente. A tradução desta explicação resume-se à seguinte listagem e respectivo output: ACESSO À BASE DE DADOS MICROSOFT BIBLIOTECA.MDB DO SERVIDOR HTTP://BIBLIO.ISEGI.UNL.PT /D464/LIVROS.ASP <%Set MyConnection=Server.CreateObject("ADODB.Connection") MyConnection.ConnectionTimeout=15 MyConnection.CommandTimeOut=30 MyConnection.Open "DSN=BibliotecaODBC","","" Set MyRS=Server.CreateObject("ADODB.Recordset") MyRS.Open "livros",MyConnection,0,1,2 While not MyRS.EOF%> LIVRO ID: <%=MyRS("LIVROID") %>

TITULO: <%=MyRS("TITULO") %>

PUBLICAÇÃO: <%=MyRS("PUBLICACAO") %>

PREÇO: <%=MyRS("PRECO") %>

PRATELEIRA: <%=MyRS("PRATELEIRA") %>

apostilando.com

36


<% MyRS.MoveNext wend%>

Obrigado!!

Menu Principal




2.6 Construção de uma Aplicação Web com ActiveX Data Object ActiveX Data Objects é um grupo de objectos criados para facilitar a interface de programação com bases de dados como o Access e, de certo modo, similar às tecnologias DAO (Data Access Objects) e RDO (Remote Data Objects). Entretanto, a Microsoft resolveu criar o OLE DB, uma interface que permite trabalhar com qualquer tipo de dados mesmo que não sigam o formato da forma tradicional tabular. Acontece que esta tecnologia é complexa e na tentativa de ultrapassar esta dificuldade, a Microsoft criou o ADO, uma versão simples e condensada do OLE DB, constituída por três objectos principais: Connection que permite estabelecer a conexão com a base de dados. Open() e Close() são os métodos usados pelos pelas ASPs. Outras propriedades importantes deste objecto são: o Connectionstring - Informação mandatória no estabelecimento de uma ligação a uma BD. o ConnectionTimeout - Tempo máximo de espera que o método Open deve esperar pela resposta da BD. <% Dim Connection

apostilando.com

37

Set Connection=Server.CreateObject("ADODB.Connection") Connection.Open "DSN=bibliotecaODBC","","" …… Connection.Close %> Command representa uma instrução que recairá sobre a base de dados como um procedimento ou uma simples instrução SQL. As propriedades mais importantes são: o CommandText - Item que guarda a instrução SQL. o Execute - Efectua o comando no data provider. Recordset é o sub-conjunto de registos de uma base de dados. Os métodos mais importantes são: o Addnew - Criação de um novo registo vazio. o Update - Guarda as novas alterações realizadas no registo corrente. o MoveNext - Deslocamento para o próximo registo no recordset. o MovePrevious - Deslocamento para o registo anterior no recordset. o MoveFirst - Deslocamento directo para o primeiro registo do recordset. o MoveLast - Deslocamento directo para o último registo do recordset. o Delete - Apagamento do registo corrente. o Save - Necessita como parâmetro o nome do ficheiro para salvaguardar o corrente recordset. Guardando a teoria e salvaguardando a prática, inicie-se pela criação da seguinte página Web:

apostilando.com

38

Biblioteca Web

Biblioteca Web


Consulta de todos os livros

Apagar livros por Livro ID

Pesquisa de livros por assuntos

Comentarios ao serviço bibliotecário




Por motivos didácticos, foi criada uma nova tabela designada comentários e o respectivo Form na base de dados biblioteca.mdb cuja estrutura se visualiza a seguir:

Inicie-se pela inserção de registos nesta tabela através do seguinte Form:

apostilando.com

39

Biblioteca do ISEGI

Biblioteca do ISEGI-UNL

Nome Completo: 

Email: 

Comentário:

 

Obrigado.


Não se esqueça dar privilégios ao grupo Everyone de escrita à base de dados biblioteca.mdb o direito de Write através da opção Security/File Permissions.

apostilando.com

40

Em termos de HTML, é uma estrutura muito simples constituída por dois campos de texto, T1 e T2, e uma área de texto de quatro linhas e sessenta e quatro caracteres de nome S1. O Active Server Page que irá receber os três inputs designa-se comentarios.asp e que se descreve a seguir.

Em termos de VBScript, analise-se os pontos mais importantes da ASP em causa: É necessário que os três campos sejam preenchidos para uma introdução da informação na BD (traduzido na primeira instrução If). A criação de três variáveis: Conn, Resultado e SQL. Estabelecimento de uma ligação com a base de dados com as instruções Set Conn e Conn.Open. A classe ID ADODB.Connection é imperativa para indicar qual o objecto a criar enquanto o método Open necessita o parâmetro DSN da base de dados. A criação do objecto Resultado do tipo Recordset. Para isso, são necessários dois passos: As instruções Set Resultado=Server.CreateObject e Resultado.Open. As cinco instruções seguintes têm como propósito criar um registo novo mas vazio que será preenchido pelos conteúdos introduzidos pelo utilizador. Se o recordset não estiver vazio é possível aceder ao conteúdo de campos através do comando (""). Por exemplo: Resultado.Fields.Item("email").Value. Não é necessário preencher o campo comentarioID porque este atributo é auto incremental.

apostilando.com

41

<%@ LANGUAGE=VBScript %> Biblioteca do ISEGI
<% If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("S1")="" Then %>

Biblioteca do ISEGIUNL

Nome Completo: 

Email: 

Comentários:

 

<% Else Dim Conn Dim Resultado Dim SQL Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout=10 Conn.CommandTimeOut=20 Conn.Open "DSN=BibliotecaODBC","","" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM comentarios" Resultado.Open SQL, Conn, 1, 2 Resultado.AddNew Resultado("nome") = Request.Form("T1") Resultado("email") = Request.Form("T2") Resultado("comentario") = Request.Form("S1") Resultado.Update Conn.Close End If %>

Obrigado!!

Clique aqui para recomeçar a aplicação

Menu Principal




apostilando.com

42

A resposta ao cliente está simulada na seguinte imagem:

Uma outra opção do menu geral é apagar livros da BD pela Web através da introdução do username (Admin) e de uma password (Pass-pASS), ambos case sensitive. Apesar de esta informação estar digitada na ASP, não se esqueça que esta tecnologia é Server Side o que significa que o cliente nunca poderá visualizar o código fonte e o username/password de acesso. O script associado a este Form é o seguinte: Biblioteca do ISEGI
<% If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("T3")="" Then %>

Biblioteca do ISEGIUNL

Username: 

Password: 

Livro ID: 

<% Else If Request.Form("T1")="Admin" AND Request.Form("T2")="Pass-pASS" Then Dim Conn Dim Resultado Dim SQL

apostilando.com

43

Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout=10 Conn.CommandTimeOut=20 Conn.Open "DSN=BibliotecaODBC","","" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM livros WHERE livroID = CInt(' " & Request.Form.Item("T3") & " ') " Resultado.Open SQL,Conn,1,2 If Resultado.Recordcount=1 Then Resultado.Delete Response.Write("Registo apagado. Obrigado!!") Else Response.Write("Registo não apagado por não existir. Obrigado!!") End If Resultado.Close Conn.Close End If End If %>

Clique aqui para recomeçar a aplicação

Menu Principal




Caso o LivroID mencionado pelo utilizador não exista então a mensagem de aviso é a seguinte:

apostilando.com

44

Esta capacidade é testada pela propriedade Recordcount que indica o número de registo contidos no recordset. Caso não seja um então é porque o livroID não faz parte do recordset e, consequentemente, da base de dados.

Finalmente, a pesquisa de livros por assuntos torna-se, em última análise, um script muito parecido com o apresentado na secção anterior. A diferença traduz-se no comando Select em que se destaca o parâmetro like permitindo uma selecção de todos os campos dos registos em que os conteúdos dos parâmetros de entrada façam um match com os respectivos campos das tabelas/queries. Pesquisa de Livros por Assuntos

Pesquisa de Livros por Assuntos

<% If Request.Form.Item("assunto")="" Then %>

Escolha o assunto:

<% Else Dim Conn Dim Resultado Dim SQL

apostilando.com

45

Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout=10 Conn.CommandTimeOut=20 Conn.Open "DSN=BibliotecaODBC","","" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM livros_por_assuntos WHERE descricao like '" & "%%" & Request.Form.Item("assunto") & "%%" & "' " Resultado.Open SQL,Conn,1,2 Do While Not Resultado.EOF Response.Write "


" Response.Write " Assunto: " Response.Write Resultado("descricao") Response.Write " Livro ID: " Response.Write Resultado("LivroID") Response.Write " Titulo: " Response.Write Resultado("Titulo") Response.Write " Prateleira: " Response.Write Resultado("Prateleira") Resultado.MoveNext Loop Conn.Close End If %>

Clique aqui para recomeçar a aplicação

Menu Principal



Escolhido o assunto através de uma Combo Box simulada em HTML pelo seguinte código...

Escolha o assunto:

... a resposta pontual ao browser do cliente foi, neste caso, a seguinte:

2.7 Database Schemas Uma outra capacidade do ActiveX Data Object é o método Connection. Assim, o OpenSchem permite a possibilidade de obter informação dinâmica em run-time da estrutura da base de dados como, por exemplo, mostrar as tabelas constituintes e respectivos campos. Tudo isto é realizado através do ciclo Do While...Loop e da instrução Tabelas.Filter = "Table_Type='Table'" que filtrará as tabelas principais. Como seria de esperar, as últimas duas instruções do script é o fecho das ligações criadas. Exemplo do Open Schema <% Dim Conn Dim Tabelas Dim Tabelacorrente Dim TabelaSchema Dim Campos Dim SQL TabelaSchema=20 Set Conn = Server.CreateObject("ADODB.Connection") Set Tabelas = Server.CreateObject("ADODB.Recordset") Set TabelaCorrente = Server.CreateObject("ADODB.Recordset") apostilando.com

47

Conn.Open "bibliotecaODBC" Set Tabelas = Conn.OpenSchema(TabelaSchema) Tabelas.Filter = "Table_Type='Table'" Do While Not Tabelas.EOF %>

<%= Tabelas("Table_Name") %>

<% SQL = "Select * From [" & Tabelas("Table_Name") & "] " TabelaCorrente.Open SQL,Conn,1,2 For Each Field in Tabelacorrente.Fields Response.Write "

" Response.Write Field.Name & "

" & vbcrlf Next TabelaCorrente.Close Tabelas.MoveNext Loop Tabelas.Close Conn.close %> A figura seguinte mostra parte do output do run deste script (repare nas tabelas e respectivos campos que os constituem).

apostilando.com

48

2.8 Envio de Correio Electrónico via ASPs Este capítulo debruça-se sobre a capacidade de enviar correio electrónico a partir de Active Server Pages utilizando o objecto CDONTS (Microsoft Collaboration Data Objects for Windows Server). O Form abaixo visualizado nada apresenta de especial. Constituído por campos do tipo INPUT e outro do tipo TEXTAREA que terão de ser preenchidos obrigatoriamente, a resposta deste script denominado mail.asp é a simples resposta "Mensagem Enviada. Obrigado". Contudo, esta mensagem não confirma que o destinatário irá receber o mail pois o endereço de destino poderá simplesmente não existir.

<%@ LANGUAGE=VBScript %> Envio de um Email por ASPs (http://biblio.isegi.unl.pt/d464/mail.asp)
<% If Request.Form("FROM")="" OR Request.Form("TO")="" OR Request.Form("MESSAGE")="" OR Request.Form("SUBJECT")="" Then %>

From :

To :

Subject :



apostilando.com

49

(Note que é absolutamente necessário preencher todos os campos)

<% else Dim MyMail Set MyMail = Server.CreateObject("CDONTS.NewMail") MyMail.From = Request.Form("FROM") MyMail.To = Request.Form("TO") MyMail.Subject = Request.Form("SUBJECT") MyMail.BodyFormat = 1 MyMail.MailFormat = 0 MyMail.Importance = 0 MyMail.Body = Request.Form("MESSAGE") MyMail.Send Set MyMail = Nothing %> Mensagem Enviada. Obrigado. <% End If %>
Para enviar outra, clique aqui.

Uma pequena análise da ASP apresentada sugere os seguintes detalhes a saber: Declaração do objecto MyMail do tipo CDONTS:NewMail Preenchimento das seguintes propriedades: o Form (endereço do remetente) o To (endereço do destinatário) o Subject (assunto) o BodyFormat (0 para indicar que a mensagem contêm informação em HTML e 1 para declarar que apenas existe texto ASCII puro)

apostilando.com

50

o MailFormat (0 indicia que o objecto é do tipo MIME ou Multipurpose Internet Mail Extension ou 1 para mencionar que o seu conteúdo é simplesmente texto.) o Importance (0 para baixa prioridade, 1 para normal e 2 para urgente) o Body (mensagem propriamente dita). Finalmente, o método send permite enviar automaticamente a mensagem. Se fizer uma visita à caixa de correio do utilizador [email protected] através do utilitário mailx do Unix, é possível ler a mensagem enviada pelo utilizador [email protected].

2.9 Acesso ao SQL Server Paralelamente ao MS-Access, a utilização de ASPs com o Microsoft SQL Server é similar bastando criar no servidor do IIS o respectivo System DSN Data Source (neste caso, o SQL Server 3.7). Através da opção Start/Settings/Control Panel/ODBC Data Source/System DSN e como mostra a figura anterior, a base de dados encontra-se num computador remoto, mas pertencente à mesma rede, designado SQLSERVER.

apostilando.com

51

O próximo passo é relativamente importante pois relaciona-se com o direito de acesso ao SQL Server. È preciso compreender que o acesso de logon pelo sistema operativo Windows Server ao computador é algo que nada tem a haver com o acesso ao SGBD Microsoft SQL Server porque esta contém definições de utilizadores, perfis de direitos, tabelas, views, rules e outros objectos. Optou-se pela segunda opção não sendo assim necessário criar nenhum utilizador a nível do User Manager.

No passo seguinte, não esquecer de indicar qual a base de dados a considerar (neste caso, o computador SQLSERVER). Consequentemente, a opção Change The Default Database To deve conter como argumento, neste caso particular, BibliotecaSQLServer.

No final deste wizard, a configuração final é mostrada sendo possivel testar o ODBC criado.

apostilando.com

52

Ao terminar este processo, pode-se verificar no System DSN o novo Data Source BibliotecaSQLServer.

Em termos das ASPs anteriormente criadas, o único ponto a alterar é o seguinte: Conn.Open "DSN=BibliotecaSQLServer","d464","asterix". É necessário indicar o novo nome do SQL Server Data Source e de dois novos argumentos ignorados até aqui: username e password de acesso à base de dados BibliotecaSQLServer resultante da migração da base de dados do MS-Access biblioteca.mdb. A administração do acesso à base de dados em causa deve ser realizado no SQL Server Enterprise Manager/Security/Logins conforme a imagem seguinte demonstra. Lembre-se, também, que este username e respectiva password nunca poderão ser visualizados pelo browser do cliente visto as ASPs serem uma tecnologia server-side.

apostilando.com

53

A figura seguinte mostra os privilégios associados á Query livros_por_assuntosView como outros objectos. Não se esqueça que a visualização da ASP no browser do cliente requer o Driver ODBC Data Source para o Microsoft Access 4.0 ou superior e/ou SQL Server 3.7 ou superior.

Pesquisa de Livros por Assuntos

Pesquisa de Livros por Assuntos

<% If Request.Form.Item("assunto")="" Then %> apostilando.com

54

Escolha o assunto:

<% Else Dim Conn Dim Resultado Dim SQL Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout=10 Conn.CommandTimeOut=20 Conn.Open "DSN=BibliotecaSQLServer","d464","asterix" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM livros_por_assuntosView WHERE descricao like '" & "%%" & Request.Form.Item("assunto") & "%%" & "' " Resultado.Open SQL,Conn,1,2 Do While Not Resultado.EOF Response.Write "


" Response.Write " Assunto: " Response.Write Resultado("descricao") Response.Write " Livro ID: " Response.Write Resultado("LivroID") Response.Write " Titulo: " Response.Write Resultado("Titulo") Response.Write " Prateleira: " Response.Write Resultado("Prateleira") Resultado.MoveNext Loop Conn.Close End If %>


apostilando.com

55

Um outro exemplo já criado anteriormente relaciona-se com a introdução de novos registos na tabela comentários. <%@ LANGUAGE=VBScript %> Biblioteca do ISEGI
<% If Request.Form("T1")="" OR Request.Form("T2")="" OR Request.Form("S1")="" Then %>

Biblioteca do ISEGIUNL

Nome Completo: 

Email: 

Comentários:

 

<% Else Dim Conn Dim Resultado Dim SQL Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout=10 Conn.CommandTimeOut=20

apostilando.com

56

Conn.Open "DSN=BibliotecaSQLServer","d464","asterix" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM comentarios" Resultado.Open SQL, Conn, 1, 2 Resultado.AddNew Resultado("nome") = Request.Form("T1") Resultado("email") = Request.Form("T2") Resultado("comentario") = Request.Form("S1") Resultado.Update Resultado.Close Conn.Close End If %>

Obrigado!!

Clique aqui para recomeçar a aplicação




apostilando.com

57

3

Active Server Pages (Part II)

Paralelamente à tecnologia PHP, as ASPs são uma tecnologia server-side (essencialmente, tem-se VBscript a gerar conteúdos de HTML do lado do servidor). Apresentam ficheiros com extensão. asp (.aspx se gerados na framework .Net) e o código é delimitado por <%...%>. É uma linguagem non-case sensitive (maiusculas=minusculas), precisa do Internet Information Server (IIS) e apresenta um conjunto de objectos que lhe são únicos: Request, Response, Application, Session, Server e ASPError.

Apresenta-se, de seguida, alguns excertos de código com alguns comentários relativos às ASPs: <% Option explicit Criação de variáveis e vectores dimênsionais. Const idadelimite=30 Dim x, y, a(20), b() x=10 Redim b(5,3) y=―jose‖ %> While c1 ... Wend Ciclos existentes nas ASPs Do while c1 ... Loop Do until c1 ... Loop Do ... Loop while c1 Do ... Loop until c1 For each var in collection ... Next For cont=i1 to f1 step s1

apostilando.com

58

... Next *, /, -, +, \, mod Operadores aritméticos & Concatenação de strings =, <>, <, >, <=, >=, is Operadores lógicos not, and, or, xor, eqv, imp If c1 then ... else ... end if Instruções condicionais Select case c1 case ca .... case else .... End select Function f1(p1, p2,...) Referência a funções com parâmetros de entrada: Dim v1 call f1(p1,p2,...). Repare que uma função retorna ... sempre um valor. f1=... End function Sub p1(p1, p2,...) Referência a procedimentos com parâmetros de Dim v1 entrada: call p1(p1,p2,...). ... End sub Abs() Devolve o valor absoluto de um número. Asc() Devolve o código ASCII de uma tecla. Chr() Devolve o carácter correspondente a um dado código ASCII. Cint() Converte um número não inteiro para inteiro. Cstr() Converte para cadeia de caracteres. Date() Devolve a data corrente. Filter() Pesquisa um vector para procurar um valor ou expressão variável. lnStr() Procura uma cadeia dentro de outra (devolve a posição, se encontrar a cadeia; devolve zero, se não encontrar). LnStrRev() Semelhante ao lnStr, mas procura do fim para o principio. IsNuIl() Se a variável estiver vazia devolve True. Caso contrário, devolve False. lsNumeric() Verifica se o valor é numérico. Lcase() Converte para minúsculas. Left() Devolve um dado número de caracteres a partir da esquerda. Len() Devolve o tamanho da cadeia. Ltrim() Retira os espaços em branco à esquerda do uma string. Mid() Devolve um dado número de caracteres, a partir do uma dada posição. Replace() Substitui um caractere ou uma cadeia por outra. Rnd() Calcula um número aleatório. Round() Efectua um arredondamento. Space() lntroduz um dado número de espaços numa cadeia. Split() Divide uma cadeia num vector de cadeias, escolhendo como caractere de separação o espaço, a virgula ou outro caractere especificado. StrComp() Compara duas cadeias, determinando se são iguais ou não. Time() Devolve a hora corrente. response.cookies(―nome do cookie‖) = valor Gestão de cookies

apostilando.com

59

response.cookies(―nome do cookie‖).expires = date()+30 variavel = request.cookies(―nome do cookie‖) response.cookies(―nome do cookie‖) = ―‖ session(―variavel‖) = valor session.Timeout = 10 response.write (session.sessionID, session.variavel) application(―variavel‖) = valor application.lock(―variavel‖) application.unlock(―variavel‖)

(atribuição, expiração temporal, leitura e limpeza do seu conteúdo) Gestão de variáveis de sessão (session) e globais (application)

Exemplo clássico do global.asa

3.1 Programas Clássicos A) FACTORIAL

<% If Request.Form("factorial")="" Then %>
Indique um número :

apostilando.com

60

<% ElseIf IsNumeric(Request.Form.Item("factorial")) Then mensagem=" O seu factorial é " fact=1 For contador=1 to Request.Form.Item("factorial") fact=fact*contador Next %> <%= mensagem %> <%= fact%> <% Else Response.Write ("O seu input não é válido!") End If %>

Clique aqui para recomeçar a aplicação

B) LEITURA DE FICHEIROS DE TEXTO (Versão 1) <% Set FileStreamObject = CreateObject("Scripting.FileSystemObject") Set leitura = FileStreamObject.OpenTextFile(Server.MapPath("/") & "\Noticias.txt",1) While not leitura.AtEndOfStream Response.Write leitura.ReadLine Wend leitura.close %>

C) ESCRITA EM FICHEIROS DE TEXTO <% response.write "Processo de criação de uma linha de texto no ficheiro a.txt" apostilando.com

61

set obj = CreateObject("Scripting.fileSystemObject") set esc = obj.CreateTextFile(Server.MapPath("a.txt"),true) esc.writeline("Esta linha está escrita no ficheiro...") esc.close set esc=nothing %>

D) LEITURA DE FICHEIROS DE TEXTO (Versão 2) <% set objectoficheiro = CreateObject("Scripting.fileSystemObject") set lertexto = objectoficheiro.OpenTextFile(Server.MapPath("z2.txt"),1) response.write " A primeira linha contem " & lertexto.Readline & "

" response.write " A segunda linha contem " & lertexto.Readline set objectoficheiro = nothing %>

E) ACESSO AS VARIÁVEIS DA NORMA CGI

Aceder às variáveis de ambiente do SERVER através do Request.ServerVariables("Nome da variável")


<% For each variavel In Request.ServerVariables %> apostilando.com

62

<%= variavel %>

<%= Request.ServerVariables(variavel) %>
<% Next %>

F) Envio de dados entre .ASPs utilizando o método POST (versão 1) Repare que neste exemplo, os conteúdos dos campos nome e apelido são transferidos do programa aa_1.asp para aa_enviar1.asp utilizando o método POST no formulário em questão. Será o objecto request que terá a capacidade de receber os respectivos conteúdos das variáveis utilizadas (nome e apelido, neste caso particular). Nome: Apelido:



apostilando.com

63

<% nomerecebido = request.form("nome") apelidorecebido = request.form("apelido") response.write (" A pessoa chama-se " & nomerecebido & " " & apelidorecebido) %>

G) Envio de dados entre .ASPs utilizando o método POST (versão 2)

Primeiro numero:

Segundo numero:



<% n1recebido = cint(request.form("num1")) n2recebido = cint(request.form("num2")) total = n1recebido + n2recebido %>

apostilando.com

64



H) Exemplos da utilização de funções prédefinidas <% var1=Abs(-23.24) var2=Asc("C") var3=Chr(67) response.write varl & " " & var2 & " " & var3 %>
Data de hoje é: <%response.write(date())%>
Hora local do servidor é: <%response.write(time())%>
<% Response.Write Instr("Olá", "1") %>
<% Response.Write Instr("Olá", "R") %>
<% var5=LCase("Porto Coimbra Braga") %> <%=var5%>
<% var6=Left("Multimédia 2002", 3) %> <%=var6%>
<% var7=Len("Verde") %> <%=var7%>
<% var8=Mid("programar ASP",4,2)%> <%=var8%>
<% var9=Round(27,01)%> <%=var9%>
<% meuArray = Split("pinheiro sobreiro — pereira oliveira laranjeira") %> <% meuArrayFiltrado = Filter(meuArray, "eiro", True, VBTextCompare) %> <%=Join(meuArrayFiltrado)%>


apostilando.com

65

I) Detecção do Browser do Cliente Repare que caso o browser do cliente seja o Netscape (actual Mozilla), o ficheiro a visualizar será o aa.htm. Caso contrário, o ficheiro bb.htm será mostrado no ecrã do utilizador final.

3.2 Acesso a Base de Dados (MS-Access) Como já foi referido no primeiro capitulo deste documento, o acesso ao MS-Access só é possivel através de uma interface pois as BDs só entendem SQL. Esta secção irá basearse no ODBC Pizza criado a nível de sistema operativo (Control panel/Administrative tools/Data sources/System DSN/Add/Microsoft Access driver) e como demonstra a figura seguinte. Considerou-se que a base de dados em causa reside em C:\Inetpub \wwwroot\aa\ pizza.mdb.

apostilando.com

66

A) ACESSO À PIZZA.MDB VIA ODBC (TABELA PIZZA) <% Dim Conn, Resultado, SQL Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "pizza" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM pizza" set resultado = Conn.execute(SQL) do while not resultado.EOF %> Pizza: <%=resultado("pizza")%> Quantidade: <%=resultado("quantidade")%> Nome: <%=resultado("nome")%> Telefone: <%=resultado("telefone")%>

<% resultado.MoveNext loop resultado.Close Conn.Close %>

Obrigado pela sua consulta!!

B) ACESSO À PIZZA.MDB VIA ADO <%@LANGUAGE="VBSCRIPT"%> <% Dim pizza, MM_pizza_STRING MM_pizza_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb" Set pizza = Server.CreateObject("ADODB.Recordset") pizza.ActiveConnection = MM_pizza_STRING pizza.Source = "SELECT * FROM pizza" pizza.Open() %>



apostilando.com

67

<% While (NOT pizza.EOF) %> <% pizza.MoveNext() Wend pizza.Close() Set pizza = Nothing %>
Pizza Quantidade Nome Telefone
<%=(pizza.Fields.Item("nome").Value)%> <%=(pizza.Fields.Item("quantidade").Value)%> <%=(pizza.Fields.Item("nome").Value)%> <%=(pizza.Fields.Item("telefone").Value)%>


C) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ODBC Deixa-se ao leitor a criação do seguinte formulário em HTML com os seguintes campos: pizza, quantidade, nome e telefone. Note que o método de transferência dos dados do form para o ficheiro aa_6.asp deve ser o POST embora existam outros exemplos em que o método de escolha foi o GET.

apostilando.com

68

<% Dim Conn, Resultado, SQL Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DSN=pizza","","" Set Resultado = Server.CreateObject("ADODB.Recordset") SQL="SELECT * FROM pizza" Resultado.Open SQL, Conn, 1, 2 Resultado.AddNew Resultado("pizza") = Request.Form("pizza") Resultado("quantidade") = Request.Form("quantidade") Resultado("nome") = Request.Form("nome") Resultado("telefone") = Request.Form("telefone") Resultado.Update Conn.Close %>

Obrigado!!

D) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ADO <% Dim rs, MM_pizza_STRING,SQL MM_pizza_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb;" Set rs = Server.CreateObject("ADODB.Recordset") rs.ActiveConnection = MM_pizza_STRING SQL="insert into pizza(pizza,quantidade,nome,telefone) " SQL=SQL&"values('"&Request.Form("pizza")&"'," SQL=SQL&" '"&Request.Form("quantidade")&"'," SQL=SQL&" '"&Request.Form("nome")&"'," SQL=SQL&" '"&Request.Form("telefone")&"')" rs.Open SQL,MM_pizza_STRING,1,2 %>

Obrigado pelo pedido!!

apostilando.com

69

E) APAGAR UM REGISTO NA PIZZA.MDB VIA ODBC

Apagar registos por nome do telefone

Telefone do cliente:


<% Dim rs, Conn, SQL Set conn=Server.CreateObject("ADODB.Connection") conn.Open "Pizza" Set rs=Server.CreateObject("ADODB.Recordset") SQL="delete from pizza where telefone='" & Request.form("telefone") &"'" rs.open SQL,conn,1,2 conn.Close %>

Registo apagado!!

F) APAGAR UM REGISTO NA PIZZA.MDB VIA ADO <% Dim pizza, MM_pizza_STRING MM_pizza_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb"

apostilando.com

70

Set rs = Server.CreateObject("ADODB.Recordset") rs.ActiveConnection = MM_pizza_STRING rs.Source = "SELECT * FROM pizza" rs.Open() %>

Apagar por telefone:



F) PESQUISA DE UM REGISTO POR NOME NA PIZZA.MDB VIA ADO <% Dim pizza, MM_pizza_STRING, nome MM_pizza_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\aa\pizza.mdb" Set pizza = Server.CreateObject("ADODB.Recordset") pizza.ActiveConnection = MM_pizza_STRING pizza.Source = "SELECT * FROM pizza where nome like '%" & request.QueryString("nome1") & "%'" pizza.Open() %> apostilando.com

71

<% While (NOT pizza.EOF) %> <% pizza.MoveNext() Wend pizza.Close() Set pizza = Nothing %>
Pizza Quantidade Nome Telefone
<%=(pizza.Fields.Item("pizza").Value)%> <%=(pizza.Fields.Item("quantidade").Value)%> <%=(pizza.Fields.Item("nome").Value)%> <%=(pizza.Fields.Item("telefone").Value)%>


3.3 Acesso a Conteúdos de Multimédia com o MS-Access Uma outra possibilidade que o MS-Access permite é a utilização de campos do tipo hiperlink para referenciar conteúdos de imagem, som e vídeo (multimédia). Com este objectivo em mente, criou-se uma base de dados com a tabela multimédia com os seguintes atributos:

apostilando.com

72

Considera-se que os ficheiros de multimédia em causa não são inseridos na base de dados mas residem, neste caso particular, no mesmo directório da base de dados. Será o campo link que permitirá a ligação aos ficheiros em causa através da seguinte opção:

Como referência para o seguinte exercício, apresenta-se o conteúdo parcial da tabela multimédia. Como o leitor já deve ter reparado, existe um vídeo do tipo mpeg, um executável em Flash (swf), uma imagem jpg e uma música em formato mp3.

Se a inserção dos conteúdos é realizada localmente a partir do próprio MS-Access, a sua visualização e acesso aos conteúdos multimédia pode ser realizada a partir de uma ASP utilizando o protocolo http. Com esse objectivo em mente, apresenta-se o seguinte código: Acesso a conteúdos de multimédia via ASPs

apostilando.com

73

<% Dim multimedia, MM_multimedia_STRING MM_multimedia_STRING = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\aa\multimedia.mdb" Set multimedia = Server.CreateObject("ADODB.Recordset") multimedia.ActiveConnection = MM_multimedia_STRING multimedia.Source = "SELECT * FROM multimedia" multimedia.Open() %> <% While (NOT multimedia.EOF) %> <% multimedia.MoveNext() Wend multimedia.Close() Set multimedia = Nothing %>
TituloTipoAutoresEditoraData LancamentoCusto AluguerLink
<%=(multimedia.Fields.Item("titulo_multimedia").Value)%> <%=(multimedia.Fields.Item("tipo_multimedia").Value)%> <%=(multimedia.Fields.Item("autores").Value)%> <%=(multimedia.Fields.Item("editora").Value)%> <%=(multimedia.Fields.Item("data_lancamento").Value)%> <%=(multimedia.Fields.Item("custo_aluguer").Value)%> " target="_blank">Click Here
Caso o leitor queira aceder ao conteúdo em causa, basta clicar no link em causa e como se demonstra na figura seguinte:

apostilando.com

74

apostilando.com

75

Glossário Anonymous FTP - Método usado no acesso livre a um host FTP. Normalmente, a password da conta anonymous é o endereço de correio electrónico do cliente. API - Application Programming Interface é um conjunto de funções e procedimentos compilados numa Dynamic Library Link (DLL). ARP - Address Resolution Protocol é o protocolo que permite obter o MAC (Media Access Control, 48 bits) address de uma placa de rede através do IP address. A gravação do MAC address numa placa de rede designa-se address burning. ASP - Active Server Pages é uma componente do IIS que permite combinar HTML, VB e Java Scripts e outros elementos (Active X controls) na construção de Web sites. Por ser server side, o cliente nunca vê o código do script. ATM - Asynchronous Transfer Mode (RDIS de banda larga) é um protocolo orientado muito rápido na transmissão de voz, vídeo e dados em LANs (155Mbps). Comunica com pacotes de 53 bytes chamados células. Suportado pelo Windows Server. Backbone - Porção da rede que gere a maior parte do tráfego. Bandwidth - Capacidade de transmissão de um canal de transmissão. Bastion Host - Computador que permite o acesso à Internet de uma LAN. Binding - Processo de estabelecer a comunicação do protocolo usado e a placa de rede. Bridge - Similar à função dos routers com a diferença que as bridges utilizam endereços MAC enquanto os routers utilizam endereços IP. Alem disso, este equipamento é destinado à interligação de troços de rede distintos e não homogéneos. Broadcast Address - IP de uma rede que permite conectar todos os computadores pertencentes a essa rede (Ex: O endereço de broadcast da rede de classe C 193.136.119 é 193.136.119.255). Browse List - Lista de computadores e respectivos recursos ao disposição na rede. Esta lista é actualizada dos seguintes modos: o Sempre que exista um request announcement da parte do master browser. o Sempre que se desliga um computador.

apostilando.com

76

o Sempre que um computador arranca, este emite alguns broadcasts ao master browser da rede a indicar quais os recursos que fornece. Após esta fase, os anúncios de permanência da rede são feitos com uma periodicidade de 12 minutos. Browsing – Serviço responsável pela manutenção da informação sobre os computadores disponíveis para partilhar recursos através da rede visualizados pela opção Network Neighborhood ou o Map Network Drive. Os comandos associados ao start e stop deste serviço são o net stop computer browser e net start computer browser. Built-in Groups - Grupos de default do Windows NT Server e NT Workstation com as respectivas permissões e direitos definidos. CGIs - Common Gateway Interface é um conjunto de definições de regras na interacção entre um servidor e um cliente. Circuito Virtual - Conexão dedicada temporária num ambiente de comunicação partilhado. Computer Browser – Computadores que armazenam uma browse list. Daemon - Programas em background em ambiente UNIX/LINUX com o objectivo de colectar informação ou realizar funções administrativas. Datagrama - Pacote de dados transmitidos pela rede e que incluem, entre outros campos, o endereço do remetente e do destinatário. DHCP - Dynamic Host Configuration Protocol é um serviço do Windows Server (DHCP Server) que permite assignar IPs dinâmicos (scope de endereços IP) a NT Workstations, por exemplo. Os comandos associados a este serviço são o ipconfig/release e ipconfig/renew. Dial-up Line - Canal de comunicação não dedicada cuja conexão é quebrada após a chamada se completar. Direct Connection - Circuito Virtual de comunicação não partilhado por outros utilizadores. DNS - Domain Name System é um serviço estático de name resolution que permite mapear o endereço IP de um computador através do seu Fully Qualified Host Name. Utiliza o port 53. Pode ser substituído pelo ficheiro HOSTS do computador pessoal. Chama-se name space a um conjunto de nomes organizados hierarquicamente a partir de um conjunto de designações como .com, .edu (domínio organizacional), .fr (domínio geográfico) e outras a que se designam top Domains. A gestão global é centralizada pelo Network Information Center (NIC). apostilando.com

77

DNS alias ou Canonical names - Renomeação de nomes de hosts (CNAME). Dual-Homed Host - Servidor configurado com duas placas de rede, cada uma ligada a uma rede diferente (Multihomed Computer). Encapsulação – Em ambiente de redes, é o processo de inserir cabeçalho e dados de um high-level protocol numa frame de um lower-level protocol. Endereço IP - Número de 32 bits de comprimento que identifica univocamente um determinado serviço na Web. Será a netmask que indicará qual a network ID (classe A caso o network ID <126, classe B se entre 128 a 191 e classe C se entre 192 e 223) a que pertence e qual o hostID para identificação do computador. Atenção às seguintes regras: o O endereço 0.0.0.0 está reservado para máquinas que não conheçam o seu endereço. o Um hostID não pode ser 0 ou 255. o O endereço 255.255.255.255 refere-se a todos os hosts da rede Local. o Os endereços começados por 127 são utilizados para fins especiais de loopback. Ethernet - Rede Local desenvolvida pela Xerox, Digital e Intel (DIX), em 1976 (IEEE 802.3 e ISO 8802-3), com uma velocidade média de transmissão na ordem dos 10-100-1000Mbps (thick ou thin coaxial cable, fiber-optic ou twisted-pair cabling). Utilizando baseband, os pacotes designam-se frames e o processo de detecção de colisões chama-se CSMA/CD (Carrier Sense Media Access with Collision Detection). As variações básicas desta topologia são: o 10-100-1000 Base 2 ou Thin Ethernet (10 a 1000 mbps, 185 metros, 30 máquinas, fichas BNC para ligação ao cabo coaxial de 50 ) o 10-100-1000 Base 5 ou Thick Ethernet (10 a 1000 mbps, 500 metros, 100 dispositivos, MAU ou transceiver para ligação ao cabo coaxial de 50 em PVC) o 10-100-1000 Base F (Fibra óptica, 2000 metros, 10 a 100 mbps) o 10-100-1000 Base T (10 a 1000 mbps, cabo entrelaçado UTP com fichas RJ45) Eudora - Sistema de correio electrónico similar ao MS-Outlook. FDDI - Fiber Distributed Digital Interface é uma tecnologia de fibra óptica de 62.5/125 microns de anel duplo imune ao ruído (100 Km, 100 Mbps, 500 estações). Firewall - Barreira de hardware/software que filtra o tráfego electrónico entre redes. FQDN - Fully Qualified Domain Name é a associação de um Domain ao nome de um host. Exemplo: proxy.esoterica.tw. O seu comprimento máximo será 255 caracteres. Note que um computador pode reter apenas um NetBIOS name mas vários FQDN.

apostilando.com

78

Frame Relay - Usado em WANs, esta técnica derivada do X.25 permite uma transmissão de dados TCP/IP ou outro tipo de protocolo com uma largura de banda entre os 56kbps a 1.5Mbps. A ligação entre redes é feita através de um FRAD (Frame Relay Adapter). Frames - Pacotes de transmissão encapsulados por outros dados e controles dependentes do tipo de rede a utilizar. FTP - File Transfer Protocol é uma aplicação que permite transferir ficheiros entre hosts. Utiliza os ports 20 e 21 mas a sua definição encontra-se no documento RFC 959. Gateway - Hardware e software que permite conectar diferentes redes que utilizam protocolos diferentes. Em termos genéricos, pode tratar-se de um router, uma bridge, um FRAD ou um multihomed computer. Gateways/Routers - Dispositivos da rede que permite o encaminhamento dos pacotes de uma determinada origem para um destino especifico através de routing tables. Hop Count - Número de nodes (routers, bridges…) que um pacote passa numa transmissão entre dois hosts. Host Name Resolution - Tal como acontece com os nomes NetBIOS, existem diversas maneiras de obter endereços IP com base em host names ou FQDNs. O processo consiste na seguinte na seguinte sequência, interrompida assim que o endereço IP é determinado: o Comparação com o nome local o Local HOSTS o DNS o LMHOSTS o WINS o Broadcast Host Unreachable – Mensagem do sistema operativo a indicar que o host remoto não se encontra alive. Hostname - Comando que visualiza o nome do host ou host name da máquina. Este nome é usado com os comando ping ou tracert, por exemplo. HOSTS - Ficheiro localizado em \winnt\System32\drivers\etc e que traduz FQDN em endereços IPs. HotJava - Web browser interactivo da Sun MicroSystems.

apostilando.com

79

Hub - Concentrador de segmentos de rede em estrela. Apresenta um comportamento passivo em termos de pacotes de rede. ICMP - Internet Control Message Protocol oferece funções de controlo e gestão da rede ao protocolo IP. Interfaces - Elo de ligação entre as aplicações e as camadas inferiores do modelo com o objectivo de possibilitarem a comunicação entre computadores. Basicamente, existem três APIs (Application Interface Interface): o NetBIOS API (Network Basic Input/Output System API) que utiliza o NetBIOS name (15 caracteres) de um computador (criado no momento de instalação do Windows). Funciona através de broadcasts para pequenas redes não segmentadas. Comandos típicos que utilizam esta API são os comandos net view, net use e net send. Esta interface é automaticamente instalado quando se procede ao setup do Windows NT e facilmente verificável no painel Settings/Network/Services. o WinSocket API constituído pelo endereço IP, port e protocolo (TCP ou UDP) o NetBT API (NetBIOS Over TCP/IP) é uma espécie de simbiose dos dois anteriores. As aplicações mencionam NetBIOS names para computadores em redes diferentes obrigando, assim, a usar TCP/IP através dos ports 137 (UDP), 138 (UDP) ou 139 (TCP). InterNIC - Entidade americana que comercializa e gere os endereços IPs em todo o mundo muito embora as empresas procedam ao registo e aquisição de endereços e nomes através dos ISPs como a Telepac. IP Next Generation – Futuros endereços IP com 128 bits permitindo manter a compatibilidade com os endereços actuais de 32 bits. ISP - Internet Service Provider é uma empresa que permite a conexão de um Web Server, por exemplo, à Internet. Java - Linguagem interpretada e compilada, segura e orientada por objectos, desenvolvida pela Sun MicroSystems, que permite uma interacção de programas em tempo real numa rede independentemente do sistema operativo devido à existência da Java Virtual Machine (JVM). JDBC - Java Database Connectivity é uma API que permite os programadores de java applets o acesso a BDs. JPEG - Joint Photographic Expert Group, sistema de compressão não vectorial para fotografias, vídeo frames e scanned images (ratio 20:1). Largura de Banda - Capacidade de transmissão do canal de comunicação normalmente medida em bits/s.

apostilando.com

80

Linhas Série – Estabelecimento de ligações ponto-a-ponto através das linhas telefónicas (Dial-up e dedicadas analógicas/digitais). LMHOSTS - Ficheiro Localizado em \winnt\System32\drivers\etc e que traduz NetBIOS Names em endereços IPs. É um processo estático mas atenção: Nunca coloque nos ficheiros LMHOSTS e HOSTS equivalências entre nomes e endereços IPs de computadores que estão configurados como clientes DHCP porque estes obtém o seu endereço IP de modo dinâmico. MetaSearch Web Sites - Similar aos Search Engines com a diferença de a sua query ser avaliada por várias base de dados ao mesmo tempo. Consulte, por exemplo, http://cage.cs.colostate.edu, http://metaSearch. com ou http://www.metacrawler.com. Modelo OSI - Modelo de referência com o objectivo de definir uma arquitectura de comunicações aberta. Esta estrutura consiste num conjunto de sete níveis (físico, lógico, rede, transporte, sessão, apresentação e aplicação) estanques com funções e interfaces bem definidas havendo um fluxo de comunicação na vertical através das interfaces de serviço (request, indicativo, response e confirmation) de cada camada. Modem – Equipamento destinado à conversão bidireccional de sinais digitais provenientes de equipamentos informáticos em sinais analógicos passíveis de transmissão numa linha telefónica comutada ou dedicada (MODelator DEModelator). MPEG - Motion Picture Expert Group, standard de compressão para vídeo (ratio 200:1). Multihomed Computers - Computador que tem instaladas múltiplas placas de rede com o objectivo de fazerem routing entre os diversos segmentos a que as placas se ligam. No Windows Server, é necessário ligar a opção Enable IP Forwarding. Name Resolution - Métodos (Cache, DNS, WINS, HOSTS, LMHOSTS, Broadcast) de obtenção do endereço IP quando é conhecido o Fully Qualified Domain Name ou o NetBIOS name (NetBIOS Name/FQDN=>IP=>MAC). NDIS - Network Driver Interface Specification é uma especificação de devices drivers, desenvolvido pela Microsoft e 3Com em 1990, que torna independente a placa de rede do protocolo usado. Net Unreachable – Mensagem do sistema operativo a indicar que o router não conhece o caminho para uma determinada rede. NetBEUI - NetBIOS Extended User Interface é uma extensão do protocolo NetBIOS desenvolvido pela Microsoft e apenas usado em pequenas redes devido ao seu tamanho do seu overhead. apostilando.com

81

NetBIOS - Network Basic Input Output System é um protocolo de sessão desenvolvido pela IBM e Sytek com o objectivo de trocar dados e no acesso a recursos da rede. NetBIOS Name - Nome do computador assignado no momento de instalação do Windows NT e que pode conter, no máximo, 15 caracteres. NetBIOS Name Cache - Tabela interna de cada computador que faz a equivalência NetBIOS Name e o respectivo endereço IP construída à medida que os nomes vão sendo invocados e resolvidos. O seu registo é feito de duas formas: 1) Quando o processo de name resolution acontece e o nome ainda não existe na tabela. 2) quando se processa o carregamento a partir de LMHOSTS. O conteúdo desta tabela é feita através do comando nbtstat -c. NetBIOS Name Resolution - Processo de obter o endereço IP em função do NetBIOS Name. A sequência nem sempre é igual: o NetBIOS Name Cache o LMHOSTS o WINS o DNS Server o HOSTS o Broadcast

NetBIOS Name Table - Tabela interna de cada computador que regista os nomes NetBIOS locais conhecidos e que poderá ser verificado pelo comando nbtstat -n. NetShow - Tecnologia Microsoft para multimédia (Live Player, Live Server) que suporta streaming and multicasting. A sua grande concorrente é a Realaudio (http://www.realaudio.com).

apostilando.com

82

Newsreader - Aplicação usado para ler artigos colocados no Usenet newsgroups. Pass-through Authentication - Método de autenticação do username/ password no PDC ou BDC, no momento de logon, de um utilizador. PDF - Portable Document Format, formato de ficheiros desenvolvido pela Adobe Systems. Perl - Practical Extraction and Reporting Language é uma linguagem interpretada e usada no mundo UNIX e CGIs na manipulação de texto, ficheiros e processos. PGP - Pretty Good Privacy é um popular shareware de encriptação utilizando uma chave publica, escrito por Phil Zimmermann. Plug-In - Pequeno programa ligado ao browser para lhe adicionar alguma capacidade especial. POP3 - Post Office Protocol é uma ferramenta que permite a manipulação de correio electrónico quando estas estão depositadas numa mail box num servidor SMTP. Para que o processo seja possível é necessário que o utilizador tenha acesso à máquina remota através de um username e uma password. PPP - Point to Point Protocol é similar ao SLIP mas permite correr outros protocolos como a Decnet, IPX/SPX ou NETBeui. O serviço RAS para estabelecer ligações ponto a ponto utilizam este protocolo. RAID - Redundant Array of Inexpensive Disks é o método de usar vários discos num array de modo a providencial fault tolerance no caso de um dos discos falhar. O Windows Server suporta RAID 0 (no redundancy), 1 (disk mirroring) e 5 (disk strip). RAS - Remote Access Service é um outro serviço do Windows Server que permite o acesso até 256 conexões simultâneas dial-up (modem, ISDN ou X.25). Permite utilizar os protocolos de baixo nível SLIP (Serial Line Internet Protocol), PPP (Point to Point Protocol), PPTP, Microsoft RAS Protocol ou o NetBIOS Gateway. Note que é necessário tornar activo a opção Logon Using Dial-Up Networking na janela de logon como também é necessário activar a opção Grant Dial Permission to User no User Manager for Domains. RDIS ou ISDN - Rede Digital Integrada de Serviços é um standard na comunicação digital (synchronous, full-duplex, ponto-a-ponto) que permite a transmissão no mesmo canal de voz, dados e vídeo em canais de 64 kbps. Utiliza a rede telefónica para comunicar com sinais digitais (comutação e transmissão).

apostilando.com

83

Rede segmentada - Capacidade de isolar troços ou segmentos de rede de modo a evitar o menor número de colisões. Esta situação pode ser feita através de switches, routers e bridges. Registry - Base de dados do sistema que contem informação do hardware, software e utilizadores do sistema. Repetidor - Device utilizado para retransmitir o sinal para outros segmentos de rede. Note que o tráfego existente num segmento é repercutido para os outros (comportamento passivo). Replication - Processo de sincronização de guardar dados em dois ou mais computadores. RFCs - Request For Comments são documentos onde são propostas os futuros standards da Internet. Robot - Aplicação do WWW que localiza automaticamente e recolhe informações sobre novos Web sites. Route - Comando que permite manipular a routing table de um computador (routing estático). Por exemplo: route add -p 193.136.132.0 mask 255.255.255.0 190.189.12.1 adiciona uma entrada que indica ao sistema que todos os pacotes destinados à rede de classe C 193.136.132.0 terão de ser enviados ao router cujo endereço é 190.189.12.1. Note que este router terá que estar ligado, de alguma forma, à rede a que pertence o computador acima mencionado. A opção -p, de persistente, obriga a guardar a informação no registry da máquina. Router - Device que encaminha pacotes entre redes usando informação no nível rede (construindo tabelas routing com endereços IP e que poderá ser visualizada pelo comando route print) permitindo a redução do número de colisões e, consequentemente, um aumento do desempenho da rede. Contem software próprio como o RIP (Routing Information Protocol), o OSPF (Open Shortest Path First), o EGP (Exterior Gateway Protocol) ou o IGRP (Interior Gateway Routing Protocol) e apenas utiliza a porção Network ID do IP para encaminhamento. Caso o router não saiba encaminha-los, o sistema recorre a uma default gateway (endereço IP de um outro router). As grandes empresas dedicadas à comercialização deste devices são a CISCO e a 3COM. Routing Table – Tabela que indica o endereço IP do próximo equipamento (next hop), na direcção do destino, que o pacote deve seguir. RS232C - Protocolo de baixo nível para pequenas distâncias, assíncrono, orientado à ligação e que permite a ligação entre um DTE e um DCE. Rsh - Remote Shell permite executar comandos em hosts remotos. apostilando.com

84

Scope - Num Index Server é conjunto de documentos procurados por uma query. Search Engines - Sites de procura de informação como os serviços Yahoo, Lycos, Webcrawler, Altavista, Infoseek, Google, Hotbot ou o SAPO. Server - Serviço do Windows Server que permite ao computador responder a solicitações feitas por workstations. Server Root - Directório do servidor da Internet que contem o programa do server e ficheiros de configuração. Share - Nome referido em Windows Server que permite a partilha de recursos para a rede. Sistema distribuído - Existência de múltiplos computadores autónomos interligados entre si mas transparentes para o utilizador pois é o próprio Sistema Operativo Distribuído (Network Operating System) que se encarrega de escolher a máquina e os recursos mais adequados para a tarefa solicitada. Naturalmente, o sistema operativo deve assentar numa rede de computadores. SLIP - Serial Line Internet Protocol é usado para correr o protocolo IP sobre linhas telefónicas. Não suporta autenticação segura. SMTP (port 25) - Simple Mail Transfer Protocol é responsável pelo correio electrónico na Web. Pode ser instalado pelo Exchange Server ou o MailSrv da Microsoft. Uma configuração para mail requer três elementos que podem ser combinados no mesmo sistema ou fornecidos por sistemas diferentes: Relay Host (trata do mail cujo endereço é desconhecido), Mail Host (máquina principal de mail) e Mail Server (local onde se encontra as mailboxes). SNA - System Network Architecture é um protocolo de comunicação entre terminais e mainframes desenvolvido pela IBM. SNA Server - Componente do Microsoft Back Office com o objectivo de ligar o desktop Windows a mainframes IBM. Sniffer - Programas intrusos no sistema que permite monitorizar o tráfego na rede, nomeadamente usernames/passwords. SNMP - Simple Network Management Protocol é um serviço que permite colectar informação da rede (WinSocket, UDP, port 161) como routers, hubs, switches, impressoras, servidores ou outros. Faz parte de um conjunto de protocolos designado por Network Management Protocols, entre os quais se inclui o RMON. A sua monitorização é feita através do Performance Monitor do Windows Server. Este software pode ser subdividido em duas partes: apostilando.com

85

o Agent – Componente que fornece informação ao manager. o Manager – Recebe e concentra a informação disponibilizada via SNMP. Socket - Combinação do endereço IP, port e tipo de protocolo (UDP/TCP) que permite a comunicação de máquinas de um determinado processo. SSL - Secure Sockets Layer é uma interface desenvolvida pela Netscape que permite a transferência encriptada de dados entre um cliente e um servidor. Switches - Podem funcionar como routers ou bridges, ou seja, fazer o encaminhamento em termos de endereços IP ou endereços MAC (comportamento activo). TCP/IP - Transmission Control Protocol/Internet Protocol, nascido juntamente com o UNIX no final da década de 1960, é uma família de protocolos (TCP, UDP, ICMP, IP, ARP e RARP) subdivididos em 4 layers, segundo o modelo OSI: Physical, Network, Transport e Application. Algumas das suas características são: o As suas principais interfaces de programação são os WinSockets API, NetBT API e NetBIOS API. o Assegura a chegada dos pacotes na respectiva ordem pois é routable (protocolo IP) o Permite a retransmissão de pacotes perdidos o Protocolo standard sem proprietário o Funciona entre sistemas heterogéneos o O comprimento máximo dos pacotes é 64Kb Telnet (port 23) - Emulação de terminal num host remoto. Para se instalar o serviço telnet no NT, poderá usar o Windows NT Resource Kit. O documento Standard é designado RFC 854. Tempo de Transmissão - É a soma do tempo de input, propagação e output da informação no canal de transmissão. Tipos de canais - Consiste em dois grupos: Time Division Multiplexing (cada um dos emissores transmite de x em x tempo para o canal sendo-lhe atribuído um slot de tempo) e Frequency Division Multiplexing (cada um dos emissores transmite em frequências diferentes de modo a não interferirem entre si). O device responsável designa-se multiplexer. Tipos de comutação - Consiste em duas categorias: Circuitos (caminho físico único) e Pacotes (retransmissão de nó em nó da rede até chegar ao destino). Oposto à comutação, tem-se as linhas dedicadas ou alugadas. Tipos de ligação - Consiste em dois grupos: Orientado à ligação (telefone) e Não Orientado à Ligação (carta).

apostilando.com

86

Tipos de sinal - Consiste em três grupos: Analógico, Amostrado (amostragem de x em x tempo do sinal analógico) e Digital. Tipos de transmissão - Consiste em três grupos: Broadcast (multidão), Multicast (grupo) e Ponto a Ponto (diálogo). TN3270 - Similar ao anterior mas para mainframes IBM. Token-Ring - Topologia criada pela IBM com velocidades iniciais a 16 Mbps mas com uma característica única: A não existência de colisões de pacotes devido à existência do token passing. Top-Level Domain - A mais alta categoria do nome de um host que poderá ser o tipo de instituição ou o pais de origem. Topologia - Distribuição física dos computadores relativamente às cablagens e devices que os unem (Bus, Star, Token-Ring, Malhada e Árvore). Actualmente, a topologia Bus e Token-Ring ocupem 90% do mercado. Tracert - Utilitário (similar ao ping) que permite verificar o caminho que um datagrama percorre de um host a outro host. TTL - Time To Live é um mecanismo usado nos pacotes para assegurar que estes não circulem indefinitivamente na Internet. Este tempo é decrementado em cada passagem por um nó de encaminhamento. UDP - User Datagram Protocol é o responsável por uma ligação não orientada entre 2 hosts. Viewer - Aplicação lançada pelo browser quando este não pode executá-lo como vídeo clips. VRML - Virtual Reality Markup Language, a norma para construção de sites a 3D (http://www.vrml.org). Actualmente, esta norma está a ser actualizada pelo X3D. WINS - Windows Internet Naming Service (dinâmico) é usado em conjunto com o TCP/IP no mapeamento de NetBIOS names em IP addresses. Note-se que um sistema WINS deve estar relacionado apenas com um determinado segmento da rede. No entanto, diferentes WINS podem ser, entre si, replication partners. Em termos de comandos, tem-se: o net start wins o net stop wins o net pause wins WinSock - Interface standard, baseado na especificação Berkeley Unix socket, para programas de comunicação em TCP/IP em ambiente Windows. apostilando.com

87

Workstation - Serviço do NT que permite a um computador aceder a recursos do outro. WWW (port 80) - Siglas de World Wide Web é um serviço Internet que torna possível a transferência de informação de sítios remotos (URL) para máquinas locais. X.25 - Orientado à ligação, Full-duplex, utiliza o protocolo X.21 a nível físico e tramas HDLC, este protocolo permite a criação de circuitos virtuais permanentes numa só ligação de dados sob a rede telefónica existente. Yellow Page Listings - Páginas amarelas da Web. Consulte, por exemplo, http://bigyellow.com, http://www.yellow.com ou http://www. bizweb.com.

apostilando.com

88

Web Sites Consultados http://msdn.microsoft.com/library/tools/aspdoc/iiwaaspw.htm http://www.devguru.com http://www.microsoft.com/data/ http://www.aspalliance.com/glennncook/ http://www.aspsites.com/ http://msdn.microsoft.com/library/tools/aspdoc/iiwaaspw.htm http://www.devguru.com http://www.microsoft.com/data/ http://www.aspalliance.com/glennncook/ http://www.aspsites.com/

apostilando.com

89

Índice 1 Internet Information Server ______________________________________________ 3 1.1. Conceitos Básicos _________________________________________________ 3 1.2. Instalação do IIS ___________________________________________________ 3 1.3 TCP/IP em MS-Windows ____________________________________________ 6 1.4 DNS _____________________________________________________________ 7 1.5 Criação de um Web Site ____________________________________________ 10 1.6 Administração de um Web Site _______________________________________ 12 1.7 Directório Virtual _________________________________________________ 15 1.8 Instalação de um FTP Site __________________________________________ 17 1.9 Monitorização da Performance do Web Server __________________________ 19 2 Active Server Pages (Part I) ____________________________________________ 22 2.1 Introdução _______________________________________________________ 22 2.2 Forms __________________________________________________________ 27 2.3 Ficheiros de Texto_________________________________________________ 30 2.4 O Objecto Request ________________________________________________ 32 2.5 Introdução ao Acesso a Bases de Dados em Ambiente Web ________________ 35 2.6 Construção de uma Aplicação Web com ActiveX Data Object ______________ 37 2.7 Database Schemas ________________________________________________ 47 2.8 Envio de Correio Electrónico via ASPs ________________________________ 49 2.9 Acesso ao SQL Server ______________________________________________ 51 3 Active Server Pages (Part II) ____________________________________________ 58 3.1 Programas Clássicos ______________________________________________ 60 A) FACTORIAL ___________________________________________________ 60 B) LEITURA DE FICHEIROS DE TEXTO (Versão 1) ____________________ 61 C) ESCRITA EM FICHEIROS DE TEXTO _____________________________ 61 D) LEITURA DE FICHEIROS DE TEXTO (Versão 2) ____________________ 62 E) ACESSO AS VARIÁVEIS DA NORMA CGI _________________________ 62 F) Envio de dados entre .ASPs utilizando o método POST (versão 1) __________ 63 G) Envio de dados entre .ASPs utilizando o método POST (versão 2) _________ 64 H) Exemplos da utilização de funções prédefinidas ________________________ 65 I) Detecção do Browser do Cliente _____________________________________ 66 3.2 Acesso a Base de Dados (MS-Access) _________________________________ 66 A) ACESSO À PIZZA.MDB VIA ODBC (TABELA PIZZA) _______________ 67 B) ACESSO À PIZZA.MDB VIA ADO ________________________________ 67 C) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ODBC _____________ 68 D) ADICIONAR UM REGISTO NA PIZZA.MDB VIA ADO_______________ 69 E) APAGAR UM REGISTO NA PIZZA.MDB VIA ODBC_________________ 70 F) APAGAR UM REGISTO NA PIZZA.MDB VIA ADO __________________ 70 F) PESQUISA DE UM REGISTO POR NOME NA PIZZA.MDB VIA ADO ___ 71 3.3 Acesso a Conteúdos de Multimédia com o MS-Access _____________________ 72 apostilando.com

90

Glossário _____________________________________________________________ 76 Web Sites Consultados __________________________________________________ 89 Índice________________________________________________________________ 90

apostilando.com

91

Internet Information Server.pdf

Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

2MB Sizes 4 Downloads 303 Views

Recommend Documents

Evaluating Information from The Internet
more important timeliness is!) • Technology. • Science. • Medicine. • News events ... Relevance. Researching archeology careers – which is more relevant, this…

Evaluating Information from The Internet
... children, scientists). • Does it make sense to use this web page? ... .com – commercial website. • .gov – government ... (accessible), polished, error-free…

Finding and Using Internet Information
Sep 21, 2006 - Concerning the Internet, students coming to me for their third ... scheduled a computer-related assignment for an entire class or has borrowed a ...

Internet and information Technology.pdf
Page 2 of 2. Internet and information Technology.pdf. Internet and information Technology.pdf. Open. Extract. Open with. Sign In. Main menu. Displaying Internet ...

The Internet as an information conduit in developing ...
The first level is the macrolevel of issues of Internet connectivity in developing .... world's population who account for 94 per ... The World. Development Report (World Bank, 1998) ... were asked to select those statements that best described ...

Spatial information accessibility in South Australia from the Internet: a ...
2. Spatial information accessibility in South Australia from the Internet: a ..... 2.html. Australian spatial data directory. (Australia Govt). 2. 8. South Australia. 84.