Buscar

Programação Web com Active Server Pages Centro Atlantico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 225 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 225 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 225 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

João Vieira
Centro Atlântico
Programação Web com
ASP - Active Server Pages
Edições Centro Atlântico
Portugal/2000
Reservados todos os direitos por Centro Atlântico, Lda.
Qualquer reprodução, incluindo fotocópia, só pode ser feita
com autorização expressa dos editores da obra.
Programação Web com Active Server Pages
Colecção: Tecnologias
Autor: João Vieira
Direcção gráfica: Centro Atlântico
Capa: Paulo Buchinho
© Centro Atlântico, Lda., 2000
Av. D. Afonso Henriques, 1462 - 4450 Matosinhos
Tel. 22 - 938 56 28/9 Fax. 22 - 938 56 30
Rua da Misericórdia, 76 - 1200 Lisboa
Tel. 21 - 321 01 95 Fax 21 - 321 01 85
Portugal
geral@centroatlantico.pt
www.centroatlantico.pt
Fotolitos: Centro Atlântico
Impressão e acabamento: Rolo & Filhos
1ª edição: Janeiro de 2000
ISBN: 972-8426-21-6
Depósito legal: 146.485/00
Marcas registadas: todos os termos mencionados neste livro conhecidos como sendo marcas
registadas de produtos e serviços, foram apropriadamente capitalizados. A utilização de um
termo neste livro não deve ser encarada como afectando a validade de alguma marca registada
de produto ou serviço.
O Editor e os Autores não se responsabilizam por possíveis danos morais ou físicos causados
pelas instruções contidas no livro nem por endereços Internet que não correspondam às Home-
Pages pretendidas.
Dedico este livro aos meus pais,
Maria de Jesus S. R. Sousa Vieira,
António Tiago Vieira
Índice
1. Introdução às Active Server Pages
1.1 Do Autor 12
1.2 Requisitos para as ASP 13
1.3 ASP vs. JavaScript / VBScript 15
1.4 Instalar o servidor de Internet 16
1.5 Programar com ficheiros ASP e HTML 19
1.6 Conhecer o HTML (Hyper Text Markup Language) em 12 passos 19
1.7 Sites com recursos de ASP 23
2. Expressões e Operadores
2.1 Os primeiros passos
2.1.1 Exemplo: ‘Olá Portugal’ 28
2.1.2 Exemplo: ‘Olá Portugal’ com variável 28
2.1.3 Exemplo: Cálculo de variáveis 29
2.1.4 Exemplo: Código ASP embebido em HMTL 29
2.2 IF, THEN, ELSE, END IF…
2.2.1 Exemplo: Comparação entre variáveis 30
2.3 FOR, WHILE, CASE…
2.3.1 Exemplo: Comparação de variáveis com ciclos 32
2.3.2 Exemplo: Select Case 33
2.3.3 Exemplo: Contadores ASP embebidos em HMTL 33
2.3.4 Exemplo: HMTL embebido em contadores ASP 34
2.4 Variáveis 35
2.5 Tabela de Operadores
2.5.1 Exemplo: Comparação de variável entre valores 37
2.5.2 Exemplo: Utilização de todos os operadores 38
3. Funções
3.1 Tabela de funções base das ASP 40
3.2 As nossas funções
3.2.1 Exemplo: Nº dias até o ano 2001 48
3.2.2 Exemplo: Validar o e-mail 50
3.2.3 Exemplo: Criar uma ComboBox a partir de um array 52
3.2.4 Exemplo: Criar um gráfico em HTML a partir de um array 53
3.3 Uso de SSI (Server Side Includes) com as nossas funções
3.3.1 Exemplo: Uso de um ficheiro externo com SSI 56
3.3.2 Exemplo: Ficheiro com todas as funções 57
3.3.3 Exemplo: ASP que usa o ficheiro com todas as funções 58
4. Objectos
4.1 Tabela de Objectos 62
4.2 Variáveis globais e de sessão 65
4.3 Interagir com o utilizador
4.3.1 Exemplo: Responder ao utilizador com os dados recolhidos 72
4.3.2 Exemplo: Validar formulário 73
4.3.3 Exemplo: Curso online 81
4.3.4 Exemplo: Protecção de páginas com password 88
4.4 Ficheiro global.asa
4.4.1 Exemplo: Quantos utilizadores estão a visitar a página 100
4.4.2 Exemplo: Chat em Browser 102
4.5 Cookies, dados do utilizador e do servidor
4.5.1 Exemplo: Recolher dados do utilizador 105
4.5.2 Exemplo: Páginas personalizadas 107
4.6 Formatação de strings 108
5. Bases de dados
5.1 Bases de Dados / SQL 114
5.2 Construir uma base de dados em Microsoft Access 117
5.3 Conexão à base de dados 122
5.4 Inserir, apagar e actualizar dados em bases de dados
5.4.1 Exemplo: Inserir dados 127
5.4.2 Exemplo: Eliminar dados 135
5.4.3 Exemplo: Actualizar dados 137
5.5 Apresentação de dados
5.5.1 Exemplo: Listar dados em tabela 142
5.5.2 Exemplo: Listar dados com imagens 144
5.5.3 Exemplo: Listar dados a pedido 146
5.6 Exemplos com bases de dados
5.6.1 Exemplo: Livro de Visitas 148
5.6.2 Exemplo: Sondagens de opinião 152
6. Componentes
6.1 Introdução aos Componentes 156
6.2 Tratamento de ficheiros de texto com o TextStream
6.2.1 Exemplo: História sem fim 159
6.2.2 Exemplo: Contador de acessos 163
6.3 Componentes de e-mail
6.3.1 Exemplo: Envio de e-mail com attachment 164
6.4 Criar componentes em Visual Basic 6
6.4.1 Exemplo: Componente Livro de Visitas 173
7. Exemplos reais
7.1 Introdução 182
7.2 A Rã: Motor de Busca 183
7.3 A Loja: Loja E-Commerce 197
P g t t m t eça gratuitamente o seu be-book
Receba gratuitamente, por e-mail, a versão
digital (e-book) deste livro, para poder utilizar
todos os programas sem ter que os re-escrever.
Para tal, envie a cópia da factura deste livro
para o Centro Atlântico, para o e-mail
geral@centroatlantico.pt ou por correio para,
 Centro Atlântico
Ap. 413
4760 V. N. Famalicão
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES12
Versão digital, individual, licenciada em Fev/2000, pelo Centro Atlântico, da versão 1.0 do livro 'Programação Web com ASP'
1.1 Do Autor
Escrevi este livro, acima de tudo, para dar algum apoio a todos
aqueles que querem iniciar-se neste tema de programação Internet
do lado do servidor. Quando comecei a pesquisar estes assuntos,
há alguns anos, a realidade era muito diferente para conseguir
programar neste tipo de sistemas. Seria necessário um servidor (com
certos requisitos), e conhecimentos bastante mais avançados de
programação. A definição de páginas dinâmicas na altura, consistia
na existência de ficheiros executáveis do lado do servidor que criavam
páginas HTML consoante o que o utilizador procurava, e que limitava
bastante os tipos de pesquisa. Quando o Perl (para programação
de páginas dinâmicas) apareceu, o panorama mudou, e as facilidades
deste tipo de programação começavam. Mesmo assim, a Microsoft
apareceu com os IDC (Internet Database Connector), que apesar
de serem de mais fácil compreensão não eram tão potentes a nível
de desenvolvimento.
Mais tarde, apareceram as ASP, que deram uma grande (e boa)
viragem na programação do lado do servidor. O programador
começava a ter uma linguagem potente e flexível onde podia
desenvolver o mais variado tipo de serviços e de soluções.
Quando comecei a trabalhar nesta linguagem estava-se a fazer a
transição do sistema IDC para as ASP. As facilidades das mesmas
deram-me hipótese de as poder experimentar onde quer que fosse.
Mesmo assim, os recursos a nível de manuais e páginas Internet
eram poucos, e tive bastantes dificuldades em me desenvolver nes-
ta área. Apesar de tudo, dois sites deram-me uma grande ajuda
(www.swynk.com e www.4guysfromrolla.com), pois muitos progra-
madores já lá deixavam os seus artigos, código e ideias. Com este
suporte on-line e alguma ajuda de programadores de todo o mundo,
comecei a desenvolver páginas, e tudo foi correndo normalmente.
Quando me senti preparado comecei a escrever artigos para estes
mesmos sites, para apoiar aqueles que iriam ter as mesmas dificul-
dades que eu tive.
Com este livro quero fazer o mesmo, apoiar todos os que querem
entrar nesta área, e tentar que o caminho para o domínio das ASP
seja o menos dificultado possível. Este livro está separado por capí-
tulos; cada capítulo está estruturado por uma parte do sistema das
ASP, e foi dada uma ordem a estes, para que os temas estivessem
ordenados por níveis de dificuldade. No final deixo alguns exem-
plos, que sei irão ser muito úteis a todos aqueles que querem algo
13CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
mais que tópicos e artigos. Estes exemplos para os iniciados neces-
sitam de uma compreensão de todos os temas abordados neste
livro, mas os programadores mais avançados podem ir directamen-te para os exemplos, e recorrer ao manual para entenderem ou re-
verem alguns aspectos da programação com ASP. Espero que este
livro sirva para aquilo que o leitor está à procura, pois quando eu
comecei se tivesse tido este manual, metade dos meus problemas
tinham sido resolvidos muito mais depressa. Para me ajudar nos
temas tenho os problemas que normalmente recebo todas as se-
manas de vários pontos do planeta, que me dão uma ideia daquilo
que os programadores mais precisam quando começam a trabalhar
com esta tecnologia.
1.2 Requisitos para as ASP
‘ASP’ é a abreviatura de Active Server Pages. ASP são páginas
dinâmicas para a Internet, que usam uma linguagem de programa-
ção ao estilo do VB (Visual Basic). Para quem está familiarizado
com o VB não lhe será difícil entender este código, pois as rotinas
de scripting de ambos os sistemas são quase idênticas e seguem
as mesmas regras. Se além do VB, tiver sólidos conhecimentos de
HTML (Hyper Text Marked Language), rapidamente estará prepara-
do para programar sobre este sistema a um bom nível depois de
dominar os tópicos deste manual. Mesmo que não domine o HTML,
poderá ler o capítulo 1.6 onde estão indicados alguns dos principais
comandos (chamados Tags) do mesmo.
Este sistema foi o segundo adoptado pela Microsoft para a criação
de poderosos sites dinâmicos com acesso a bases de dados. O
primeiro sistema foi o de IDC que usava um sistema de dois fichei-
ros, um com o código HTML (HTX) que continha rotinas de chama-
da de ficheiros IDC, que por sua vez tinham as declarações de SQL
para acesso às bases de dados. Não era tão flexível, era mais lento
de se programar, e tinha certos requisitos de programação algo di-
ferentes das ASP.
15CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
1.3 ASP vs JavaScript/VBScript
Muitas pessoas perguntam “…Qual a diferença entre as ASP e o
JavaScript? Ou o VBScript? Ou mesmo o tão potente Java?…”.
Bem, as diferenças são bastantes, não só falando das ASP, mas
também de outras linguagens parecidas, como o Perl, PHP ou mes-
mo o Cold Fusion. Enquanto o JavaScript e o VBScript e o Java,
funcionam do lado do cliente (apesar de haver hipótese do Java
funcionar também a nível do servidor com servlets) as ASP funcio-
nam no servidor. Uma boa maneira de notar esta diferença entre as
ASP e o JavaScript/VBScript, é olhando para as instruções de pro-
gramação de ambos. Quando estamos no nosso browser e vamos
ver o source de um ficheiro com JavaScript ou VBScript, vemos todo
o código, e daí vem o problema desse código poder ser usado ile-
galmente por outro programador - situação muito usual. Com as
ASP, ao tentar aceder ao código, só se vê puro HTML, pois as ASP
são tratadas e processadas no servidor de Internet que por sua vez
envia a formatação online toda em HTML.
O código de JavaScript é facilmente identificado no meio do código
HTML, sendo a sua estrutura a seguinte:
<SCRIPT LANGUAGE=”JAVASCRIPT”>
{
 history.go(-1);
}
</SCRIPT>
 Este exemplo está a simular o botão de recuo do browser, fazendo
com que seja recuada uma página. Normalmente este código é usa-
do na seguinte situação (pelo menos aquela em que o uso mais):
<a href=”javascript : history-go(-1)”>Voltar Atrás</a>
O VBScript é no final de contas o código base das ASP, mas que
corre no lado do cliente:
<SCRIPT LANGUAGE=”VBSCRIPT”>
 formatcurrency(“10000”)
</SCRIPT>
Este código formata o valor 10000, para que fique 10.000$00.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES16
Versão digital, individual, licenciada em Fev/2000, pelo Centro Atlântico, da versão 1.0 do livro 'Programação Web com ASP'
Com o Java o problema é diferente, é muito pesado, nem todos os
browsers o suportam, e a sua programação é dispendiosa, e toma
muitos recursos, que a fazem ideal para outros campos. Este foi
então posto de parte por todos aqueles que querem sites com rápi-
do acesso a bases de dados, e flexíveis, não só na programação
mas também na utilização (interface com o utilizador), onde as ASP
e linguagens semelhantes têm vindo a dominar todo o mercado. E
se formos a ter em conta o que é aceder a bases de dados online,
poderemos ver que todos os serviços online têm de aceder a essas
mesmas estruturas, para poderem praticar o chamado e-commerce,
que veremos também neste manual.
1.4 Instalar o servidor de Internet
O servidor de Internet é bastante fácil de instalar e a documentação
da Microsoft que vem com o pacote do software é bastante explíci-
ta. Mesmo assim vou só indicar alguns pontos para a instalação do
software.
Se está a pensar em instalar um servidor de Internet para ter pági-
nas online, a opção certa é o WindowsNT com o Option Pack 4 (de
onde vem o IIS 4) e se possível com o Service Pack 4 ou 5 do
WindowsNT. Se quiser usar sistemas mais recentes pode também
usar o Windows 2000, que vem mais seguro no aspecto dos sites
que fiquem sob sua alçada e trás já o IIS 5.
As grandes diferenças no IIS 5 serão no aspecto do uso de código e
alguns objectos novos, que não são bem novos, mas sim melhora-
mentos de alguns já usados anteriormente. A nível de performance
essa será melhor pois os cabeçalhos de HTTP (a informação que é
recolhida pelo browser, enviada pelo servidor) quando possível são
enviados comprimidos, permitindo uma redução de tamanho de in-
formação. Terá alguns wizards para instalação de sites, e um gran-
de avanço é que o programador não terá de se preocupar com as
extensões dos ficheiros, podendo colocar código ASP em qualquer
lado, pois o novo servidor vai detectar as diferenças. Existirá uma
maneira mais prática de redireccionamento de páginas, poderá ser
executado código dinamicamente (do tipo o utilizador ter uma pági-
na online para testar scripts no momento), melhor controlo de com-
ponentes, e o mais importante de todos, a hipótese de se criarem e
usarem classes, sistema usado por programadores em ambientes
de programação orientada por objectos.
17CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
Caso contrário, o PWS para o Windows 98 é uma boa escolha pois
pesa menos no computador e será o suficiente para criar as ASP
que irá usar futuramente no Windows NT. Eu indicaria então que
instalasse tudo o que vem no pacote (PWS ou IIS), as consolas de
gestão, o transaction server, os exemplos, o ADO (Access Data
Obects), todos os componentes que vierem – em resumo, tudo o
que for possível instalar. Perceberá durante a leitura deste manual o
porquê desta indicação, e com a sua especialização nesta matéria
ao longo da sua vida profissional também o entenderá.
O directório onde as páginas vão ficar instaladas pode ser aquele
que o programador quiser, mas aconselho vivamente a utilizar o
que está por defeito c:\inetpub\wwwroot\, e a partir do interior deste
gerir todas as páginas que quiser criar. Não apague os ficheiros que
ele criar, principalmente um chamado global.asa, que iremos tratar
mais adiante.
Depois de todo o sistema instalado tem de activar o serviço de
Internet. No PWS basta ir ao Personal Web Server e carregar em
Start (normalmente ele já está por defeito). No IIS 4 terá de ir à
Management Console e escolher Default Web Site da lista do lado esquer-
do, carregando depois no botão de run.
Fig. 1.2 - Aspecto da consola do PWS
Como se pode verificar na figura 1.2, o servidor virtual criado por
defeito é o nome que se deu ao computador, variando por isso de
máquina para máquina. No meu caso será jvpc. Assim, quando for
preciso aceder ao servidor virtual, poder-se-á fazer no browser atra-
vés de http://jvpc/ ; aparecer-lhe-ão informações do PWS, da mesma
maneira que se escrevesse no address link do seu browser localhost
.
19CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
1.5 Programar com ficheiros
ASP e HTML
As extensões dos ficheiros ASP é *.asp, e dos ficheiros HMTL é *.html
ou *.htm
Conforme a versão do servidor Internet, o programadorpoderá defi-
nir quais as extensões a usar e para que tipo de ficheiro. Poderá até
personalizar os ficheiros ASP, fazendo com que passem a ser *.xyz
Como estes tipos de ficheiros não são compilados e sim interpreta-
dos (os *.asp no servidor e os *.html no browser), o programador esta-
rá a programar sobre ficheiros de texto, mas com as extensões refe-
ridas. Normalmente são usados editores Freeware, que se podem
encontrar na Internet, ou outros mais profissionais como o InterDev
da Microsoft. Acho que cada um deve tentar todos os que puder,
para fazer a escolha que esteja mais apropriada à sua maneira de
programar.
1.6 Conhecer o HTML (Hyper
Text Markup Language) em
12 passos
Para se programar as ASP, serão necessários certos requisitos, não
só a nível de hardware como de conhecimento a nível de programa-
ção. Falo do HTML, que é necessário como base para um bom en-
tendimento de tudo aquilo que é descrito neste manual. Para isso
descreverei alguns comandos do HTML, que de linguagem de pro-
gramação tem muito pouco, visto que se poderia comparar a alguns
processadores de texto bastante antigos (quem se lembrar do
WordStar sabe ao que me refiro!).
Vou então indicar 12 pontos essenciais em relação ao HTML, para
que o leitor fique melhor preparado para o que vai ler nos próximos
capítulos, onde se misturará HTML com o código ASP.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES20
Versão digital, individual, licenciada em Fev/2000, pelo Centro Atlântico, da versão 1.0 do livro 'Programação Web com ASP'
1. O código HTML que aparece no browser fica sempre entre duas
Tags - Tags são os comandos que estão entre os símbolos <>
<HTML>
<BODY>
…………….
</BODY>
</HTML>
2. Como deve ter reparado, todas as Tags que começam com
<NOMEDATAG> têm de acabar com uma barra </NOMEDATAG>. Nem
todas o requerem, mas podemos dizer que cerca de 90% sim.
3. Para enviar conteúdo para o browser de maneira a ser visível
pelo utilizador, basta escrever:
<HTML>
<BODY>
ISTO É UM TESTE
</BODY>
</HTML>
4. Para mudar-se os parâmetros dos textos escritos é usada a Tag
<FONT>, onde poderá mudar o tamanho das letras, a cor e até
mesmo o tipo de letra:
<HTML>
<BODY>
<FONT FACE=”ARIAL” COLOR=”GREEN” SIZE=”5”>ISTO É UM
TESTE</FONT>
</BODY>
</HTML>
5. Para simular um parágrafo existe a Tag <P>
<HTML>
<BODY>
<P><FONT FACE=”ARIAL” COLOR=”GREEN” SIZE=”5”>ISTO É UM
TESTE</FONT></P>
E ISTO JÁ É OUTRO TESTE
</BODY>
</HTML>
21CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
6. A mudança de linha é feita com <BR> que funciona como que
um Enter no mesmo parágrafo:
<HTML>
<BODY>
<P><FONT FACE=”ARIAL” COLOR=”GREEN” SIZE=”5”>ISTO É UM
TESTE</FONT></P>
E ISTO<BR> JÁ É<BR> OUTRO TESTE<BR>
</BODY>
</HTML>
7. Para se criar tabelas usamos <TABLE></TABLE>, onde <TR></TR>
simbolizam as linhas, e <TD></TD> as colunas dessa mesma li-
nha:
<HTML>
<BODY>
<TABLE BORDER=”1”>
<TR>
<TD>ESTA É A PRIMEIRA LINHA, PRIMEIRA COLUNA</TD>
<TD> ESTA É A PRIMEIRA LINHA, SEGUNDA COLUNA </TD>
</TR>
<TR>
<TD> ESTA É A SEGUNDA LINHA, PRIMEIRA COLUNA </TD>
<TD> ESTA É A SEGUNDA LINHA, SEGUNDA COLUNA </TD>
</TR>
</TABLE>
</BODY>
</HTML>
8. Quando queremos introduzir comentários ao código usamos
<!— —>. Dá muito jeito quando o código HTML é muito extenso,
comentando assim o que está criado em vários pontos do script:
<HTML>
<BODY>
<!—ISTO QUE AQUI ESTÁ ESCRITO NÃO APARECE NO BROWSER—>
ISTO SIM, JÁ APARECE NO BROWSER
</BODY>
</HTML>
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES22
Versão digital, individual, licenciada em Fev/2000, pelo Centro Atlântico, da versão 1.0 do livro 'Programação Web com ASP'
9. Quando é necessário um script, para funcionar do lado do cliente
tipo JavaScript ou VBScript usa-se a Tag <Script Language=”….”>
</Script>
<HTML>
<BODY>
<!—ISTO QUE AQUI ESTÁ ESCRITO NÃO APARECE NO BROWSER—>
ISTO SIM, JÁ APARECE NO BROWSER
<SCRIPT LANGUAGE=”JAVASCRIPT”>
………….
</SCRIPT>
</BODY>
</HTML>
10.Uma das maneiras de recebermos dados do utilizador é através
de formulários. Podemos usar o método POST ou GET, que serão
definidos para o tipo de programação com dados dos utilizadores
via ASPs. Estes são estruturados da seguinte maneira:
<HTML>
<BODY>
<FORM NAME=”nomedoformulario” METHOD=”POST”>
O seu nome:<INPUT NAME=”nome”><BR>
O seu telefone:<INPUT NAME=”email”><BR>
<INPUT TYPE=”SUBMIT”>
</FORM>
</BODY>
</HTML>
11.Para ter um texto que vai ter a outra página, tem de fazer o link
com a Tag <A> </A>
<HTML>
<BODY>
<FORM NAME=”nomedoformulario” METHOD=”POST”>
O seu nome:<INPUT NAME=”nome”><BR>
O seu telefone:<INPUT NAME=”email”><BR>
<INPUT TYPE=”SUBMIT”>
</FORM>
<A HREF=”outrapagina.html”>Pode seguir por aqui</A>
</BODY>
</HTML>
23CAPÍTULO 1: INTRODUÇÃO ÀS ACTIVE SERVER PAGES
12. Para mostrar uma imagem no browser use a Tag <IMG>
<HTML>
<BODY>
<IMG SRC=”nomedaimagem.gif”>
</BODY>
</HTML>
Ficam assim demonstrados os passos que julgo serem os básicos
essenciais do HTML, para compreender parte daquilo que vai ser
demonstrado neste manual. A linguagem HMTL é bastante simples
e limitada. Uma boa observação a outros sites pode fazer maravi-
lhas aos seus conhecimentos de HMTL ;-)
Quando estiver no capítulo dos exemplos deste manual, e se não
estiver a perceber o código de HTML volte a consultar este capítulo
onde se introduziram as Tags que poderiam causar mais dúvidas. A
maioria das outras Tags e opções são quase óbvias aquando da
sua tradução para português.
1.7 Sites com recursos de ASP
Poderia enumerar muitas dezenas de sites com recursos a nível
das ASP, alguns dos quais eu ainda recorro. Mas vou indicar aque-
les que julgo valerem mesmo a pena, não apenas pelo conteúdo
que têm, mas também pela maneira como apresentam o conteúdo
e o organizam:
www.activeserverpages.com
Este é o site ‘Pai’ das ASP. Terá
sido em princípio o primeiro re-
lacionado com este assunto.
Tem muitos exemplos explica-
dos, e vários truques para
aquelas dificuldades que vão
aparecendo enquanto progra-
mamos. É actualizado periodi-
camente há muito tempo.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES28
2.1 Os primeiros passos
Para começar irei demonstrar-lhe, em apenas uma linha, como
poderá escrever uma frase; depois veremos o mesmo no HTML,
com variáveis e acções entre variáveis. Isto ainda antes de definir os
objectos, métodos, expressões, funções e regras das ASP. Terei
como princípio que o leitor tem conhecimentos de HTML, visto ser a
base de toda esta programação (programação Internet).
(ficheiro cpt2-1-1.asp)
<%response.write”Olá Portugal”%>
Vemos aqui algo que nos salta à vista e que são os <% %>. Como se
pode facilmente verificar, estes são os identificadores de onde co-
meça e acaba a ASP que foi construída, pois quando introduzirmos
código entre o HTML, teremos de definir onde estão as ASP, e estes
indicadores serão determinantes para esse propósito. Response é
um objecto das ASP que conta com bastantes métodos. Este e o
objecto Request vão ser sem sombra de dúvidas aqueles com que
irá trabalhar mais. Encontra uma tabela no capítulo seguinte com os
objectos principais e seus métodos de maneira que sempre que
necessitar os possa encontrar mais rapidamente consultando a ta-
bela.
(ficheiro cpt2-1-2.asp)
<%
pais = “Portugal”
response.write”Olá “ & pais
%>
Este segundo exemplo demonstra uma abordagem diferente mas
com o mesmo resultado no browser. Aqui pretendo demonstrar a
maneira como se fazem ligações com o símbolo &
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES30
Neste exemplo foi feito aquilo que de mais normal vai ser feito no
resto deste manual - usar as variáveis geradas ou não nas ASP e
introduzi-las no meio do código HTML. Repare no truque para que a
variável fique entre o HTML. Nãofoi necessária a rotina
response.write, sendo então introduzido apenas o caracter de
igualdade seguido da variável.
A plica ‘ é usada para comentar, sempre que quisermos introduzir
algum comentário ao código. Neste livro vamos usá-la com frequên-
cia para dar explicações adicionais de algumas situações a nível de
programação.
Julgo que com estes exemplos o leitor ficou a perceber como se
estrutura de um modo geral a programação em ASP.
2.2 IF, THEN, ELSE, END IF…
Vamos então iniciar alguma programação básica e essencial, aquilo
que une toda a programação, e que são os operadores e as
expressões. Vou começar pelas expressões, e deixar uma tabela
de operadores para o final deste capítulo (visto que são bastante
poucos). Entretanto estes vão sendo usados nos próximos exemplos.
(ficheiro cpt2-2-1.asp)
<%
a= 10
b=100
if a < b then
 response.write “a é menor que b”
 else
 if a > b then
 response.write “a é maior que b”
 end if
end if
%>
31CAPÍTULO 2: EXPRESSÕES E OPERADORES
A expressão IF, foi aqui usada para que em conjunto com o operador
< , fizessem uma comparação. A mensagem que vai ser enviada
para o browser, depende dos valores a e b. O IF tem uma estrutura
simples:
IF (ALGO) THEN
 (FAZ MAIS ALGO)
END IF
Ou quando as opções são várias:
IF (ALGO) THEN
 (FAZ ALGO)
END IF
IF (ALGO2) THEN
 (FAZ ALGO2)
END IF
IF (ALGO3) THEN
 (FAZ ALGO3)
END IF
Mas se as opções estão em cadeia, e se uma acontecer, as outras
têm de ficar anuladas. Teremos de usar a expressão ELSE:
IF (ALGO) THEN
 (FAZ ALGO)
 ELSE
 IF (ALGO2) THEN
 (FAZ ALGO2)
 ELSE
 IF (ALGO3) THEN
 (FAZ ALGO3)
 END IF
 END IF
END IF
Este tipo de expressões dá muito jeito aos programadores, mas
quando existem várias opções em cadeia, eu sugiro que se use a
expressão CASE; fica melhor organizado, e as confusões dentro do
código são bastante menores. Estas pequenas ‘regras’ que vou es-
crevendo neste manual, não são propriamente para serem segui-
das religiosamente. Se calhar o leitor nem vai ter muitos problemas,
mas quando o código começa a ficar muito extenso, o programa
tende a ficar confuso. Notará isso se lá voltar ao fim de uns meses
para fazer manutenção (muito comum em sites na Internet).
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES32
2.3 FOR, WHILE, CASE…
As expressões de repetição, usadas pelas ASP, são conhecidas de
qualquer programador, não sendo por isso algo que precise de uma
especial atenção para as tentar perceber.
(ficheiro cpt2-3-1.asp)
<%
a= 4
b=12
if a < b then ‘ comparação entre dois valores
 for I=0 to a ‘ ciclo FOR
 response.write “ a(“ & a & ”) é maior que “ & I & “<br>”
 ‘ o símbolo <br> em HTML simboliza mudança de linha
 ‘ no mesmo parágrafo
 next I ‘ final de ciclo FOR
else
 if a>b then
 I = a
 While b<I ‘ciclo WHILE
 Response.write “b(“ & b & ”) é menor que” & I & “<br>”
 I = I – 1
 wend ‘ final de ciclo WHILE
 end if
end if
%>
Neste caso aproveitei código de um exemplo inteiro, para lhe dar
mais umas linhas com este ciclo WHILE. Inicialmente faz-se a pri-
meira comparação, que se repetirá enquanto a mesma for válida.
Neste caso enquanto b for menor que I, o ciclo (loop) vai sendo con-
cretizado.
A minha expressão de repetição favorita, é a CASE, muito flexível e
rápida. Por mais tarde que eu volte a mexer no código, fico a sempre
perceber o que lá se passa em minutos.
33CAPÍTULO 2: EXPRESSÕES E OPERADORES
(ficheiro cpt2-3-2.asp)
<%
resposta = 4
 Select case resposta
 case “1” response.write “ Não é ” & resposta
 case “2” response.write “ Não é ” & resposta
 case “3” response.write “Acertou é ” & resposta
 case “4” response.write “ Não é ” & resposta
 case else response.write”Desconhecido….”
 end select
%>
Neste case a comparação é feita por hipóteses em função de uma
resposta (variável resposta), tendo-se atenção à mesma, iremos fa-
zer uma comparação com as hipóteses possíveis (1, 2, 3 e 4 são as
únicas possíveis) e executar a declaração correspondente (se acer-
tou ou se não acertou).
(ficheiro cpt2-3-3.asp)
<CENTER><TABLE BORDER=”1”>
<% contador = 1
 while contador<6%>
<TR>
 <TD BGCOLOR=”RED””>
 <FONT COLOR=”WHITE”><%=contador%></FONT></TD>
 <TD><%=(contador-1)%></TD>
 <TD><%=(contador+1)%></TD>
 <TD><%=(contador*100)%></TD>
 </TR>
 <%
 contador = contador + 1
 wend
 %>
</TABLE></CENTER>
Neste caso, fui usar novamente o WHILE, mas com o intuito do lei-
tor perceber a potencialidade de trabalhar com tabelas - no final de
contas aquilo que mais vai usar se o destino que pretende dar aos
seus conhecimentos de ASP for a programação com bases de da-
dos. Introduzindo o valor que se quer dentro de cada célula da tabe-
la, é o truque que origina, as grandes tabelas dos sites de comércio-
electrónico. Além de texto, pode introduzir um novo esquema de ta-
belas e/ou imagens.
35CAPÍTULO 2: EXPRESSÕES E OPERADORES
2.4 Variáveis
Nas ASP, as variáveis são também, como no Visual Basic, dinâmi-
cas, não sendo por isso necessária a sua inicialização. Seja como
for, é ‘má’ programação usar variáveis globais sem controlo sobre
as mesmas. Deve-se usar, mas não em excesso, assim como se
devem sempre inicializar as mesmas, não só para melhor controlo,
mas também para melhor performance. Para que não se ‘desleixe’
com as variáveis, use o código <% Option Explicit %> no início de cada
página para que tenha de inicializar sempre as variáveis. Assim, as
alocações de memória, para as variáveis dinâmicas, serão feitas
com uma melhor estrutura, ficando por esse motivo beneficiado o
desempenho das suas páginas.
Para inicializar uma variável em ASP basta usar Dim . Para criar-
mos a variável ‘xpto’ usamos então <%Dim xpto%>
Temos nas ASP, alguns tipos de variáveis a considerar:
- variáveis usuais (usadas no momento, e que, como são
dinâmicas, podem ser criadas a qualquer altura sem
inicialização das mesmas; podemos incluir os arrays neste gru-
po, que podem ser passados para as variáveis de sessão).
Normalmente quando as inicializamos usamos a expressão
Dim variável
- variáveis Application (usadas como globais no site pois to-
dos os utilizadores têm acesso à mesma);
- variáveis de sessão/Session (usadas para acompanharem
toda uma sessão de acesso por parte de um utilizador, mas só
acessíveis por este, e não por todos como as de Application).
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES36
2.5 Operadores
Apesar de já terem sido praticamente todos usados neste capítulo,
vou então deixar uma pequena tabela dos operadores, para referên-
cia.
Os operadores de comparação e igualdade são os seguintes:
TIPO DE OPERADOR DESCRIÇÃO
= Igualar a…
· if a = b
· c = d
< Menor do que…
· if a < b
· while c < x
> Maior do que…
· if a > b
· while c > x
<= Menor ou igual do que…
· if a <= b
· while c <= x
>= Maior ou igual do que…
· if a >= b
· while c >= x
<> Diferente de…
· if a <> b
· while c <> x
Estes são os operadores principais das ASP, e será com estes que
iremos trabalhar ao longo deste manual. Estes operadores não se-
rão usados única e exclusivamente no código de ASP, mas também
aquando do uso de declarações de SQL.
37CAPÍTULO 2: EXPRESSÕES E OPERADORES
Quando queremos fazer comparações múltiplas podemos então usar
AND ou OR, como nos seguintes casos:
(ficheiro cpt2-5-1.asp)
<% a = 10
 b = 20c = “Teste”
 If a > 9 AND a <=20 then
 Response.write “ (a) está entre 9 e 20 <br>“
 End if
%>
Nos operadores aritméticos temos então uma outra tabela:
TIPO DE OPERADOR DESCRIÇÃO
^ Usado para expoente,
(Para o caso de 26, temos
 nas ASP , (2^6))
* Multiplicador,
(2*5)
/ Divisão para retornar valor singular…
(a / b)
\ Divisão inteira…
(a \ b)
+ Soma…
( a + b )
Este valor também funciona para
concatenação tal como o símbolo &
- Diferença…
( a – b )
MOD Resto da divisão…
( a MOD b )
Podemos então demonstrar todos os operadores aritméticos da ta-
bela anterior, num ficheiro de ASP.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES38
(ficheiro cpt2-5-2.asp)
<%
 a = 2
 b = 8
 c = 10
 st1 =”Desta maneira”
 st2 = “ também podemos concatenar strings.”
 Response.Write “a = 2<br>”
 Response.Write “b = 8<br>”
 Response.Write “c = 10<br>”
 Response.write “st1 = ‘Desta maneira’<br>”
 Response.write “st2 = ‘ também podemos concatenar strings.’<br>”
 Response.Write “<br><br>”
 Response.Write “- b^a -> “ & b^a & “<br>”
 Response.Write “- a*b -> “ & a*b & “<br>”
 Response.Write “- c/a -> “ & c/a & “<br>”
 Response.Write “- a\b -> “ & a\b & “<br>”
 Response.Write “- a-b -> “ & a-b & “<br>”
 Response.Write “- a+b -> “ & a+b & “<br>”
 Response.Write “- c MOD a -> “ & c MOD a & “<br>”
 Response.Write “- st1 + st2 -> “ & st1+st2 & “<br>”
%>
E para se perceber um pouco melhor o que está a acontecer neste
código, pode recorrer à seguinte imagem, que julgo responder a
qualquer dúvida com que possa ter ficado.
Fig. 2.4 - Resultado do ficheiro cpt2-5-2.asp
Estes operadores são muito importantes na medida em que todo o
tipo de estatísticas, contas, comparações e cálculos extra os irão
requerer. No dia a dia, as empresas precisam de certas situações
resolvidas que por vezes não têm solução nas funções pré-defini-
das das ASP, e nessa altura terá de ser o leitor a desenvolver as
suas próprias funções, por meio destes operadores de base.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES40
3.1 Tabela de Funções base das ASP
Um dos aspectos que mais se destaca nas ASP são as suas
funções, e a facilidade de manuseamento das mesmas. Existem
funções que facilitam muito a vida a quem faz a programação de
vários sites. A recursividade é um dos pontos fortes quando
programamos, e as funções ajudam nesse aspecto.
A tabela seguinte, tal como a tabela de objectos que existe no próxi-
mo capítulo, vão de encontro a tudo aquilo que este manual se refe-
re - a programação de potentes sites interactivos e dinâmicos. Será
a partir deste capítulo que o leitor se irá confrontar com exemplos
realmente essenciais para a programação do dia a dia de sites pro-
fissionais. Espero que estas tabelas vão de encontro às necessida-
des do leitor, que quer procurar rapidamente aquela função ou ob-
jecto que necessita no momento em que está a programar. A tabela
está por ordem alfabética para facilitar a procura de qualquer uma
das funções que possa ser necessária. As funções são da versão
2.00 das ASP, pertencente ao VBScript V4.
 
TABELA DE FUNÇÕES DAS ASP
Função Descrição
Abs() Esta função serve para devolver números
absolutos, sejam eles de que tipo forem.
Ex. variavel = Abs(23.34) ‘ devolve 23.34
variavel = Abs(-23.34) ‘ devolve 23.34
Array() Os arrays servem para definirmos listas de
valores dentro de uma mesma variável. São muito
usados para simplificar actos muito comuns em
programação, a todos os níveis. Um array é
constituído por vários valores que estão
separados por uma posição. O array
variavel(“João”, 3, 1200, “Sol”), tem 4 posições. As
posições de um array começam sempre do 0.
Para acedermos aos dados que esta tem, basta
indicarmos a posição que nos interessa.
Ex. variavel(“João”, 3, 1200, “Sol”)
Response.write variavel(0) ‘ devolve João
Response.write variavel(1) ‘ devolve 3
Response.write variavel(3) ‘ devolve Sol
41CAPÍTULO 3: FUNÇÕES
Asc() Devolve o número ASCII de um caracter
Ex. variavel1 = Asc(“C”) ‘devolve 67
variavel2 = Asc(“1”) ‘devolve 49
Atn() Serve para calcular o arco-tangente de um valor
Ex. Atn(1) ‘ devolve 0,785398163397448
CBool() Retorna True ou False: False se a expressão for
falsa, caso contrário True
Ex. Cbool(32=32) ‘ devolve True
Cbool(10=32) ‘ devolve False
CByte() Transforma qualquer valor (do tipo não Byte) para
o tipo Byte
Ex. CByte(225.1278) ‘ devolve 225
CCur() Idêntico a CByte(), mas neste caso para
o tipo de moeda usado.
CDate() Converte uma expressão que tende para uma
Data, numa Data validada, não sendo necessário
usar IsDate()
Ex. variavel1 = Cdate(“Dezembro 1, 1990”)
‘ a variável1 fica com uma data válida
CDbl() Converte um valor (do tipo não Double)
para o tipo Double
Chr() Ao contrário da função Asc(), esta converte os
valores ASCII para o caracter correspondente
Ex. Chr(67) ‘devolve C
Chr(49) ‘ devolve 1
CInt() Converte um valor (do tipo não Intenger)
para o tipo Integer
CLng() Converte um valor (do tipo não Long)
para o tipo Long
Cos() Devolve o coseno de um ângulo
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES42
CreateObject() Cria uma referência a um objecto externo
Ex.
Set Objecto=Server.CreateObject(“Projecto.Objecto”)
Csng() Converte um valor (do tipo não Single)
para o tipo Single
CStr() Converte um valor (do tipo não String)
para o tipo String
Ex. CStr(123) ‘ devolve uma string “123”
Date() Devolve a Data corrente no servidor Internet
Ex. response.write Date()
DateAdd() Esta função serve para o programador obter uma
data posterior ou anterior àquela que pretende
usar para cálculo.
Podemos querer saber qual o dia referente a 20
dias depois da data pretendida, ou 1 mês, ou 2
anos.
A expressão usa 3 campos, o primeiro para
introduzirmos o campo de data por onde quere-
mos calcular a diferença, o segundo campo para
o valor numérico dessa diferença, e no final a data
de início.
O campo do caracter que define o tipo de diferen-
ça aceita as seguintes opções:
h – horas
n – minutos
s – segundos
yyyy – anos
q – quarto anual
m – meses do ano
y – dias do ano
d – dias
w – dias da semana
ww – semanas do ano
Ex. DateAdd(“m”, 1, “31-Jan-2000”) ‘ devolve 29-Fev-2000
 DateAdd(“d”, 1, “31-Jan-2000”) ‘ devolve 1-Fev-2000
DateDiff() Devolve a diferença entre duas datas escolhendo
um dos campos de comparação explicados em
DateAdd()
Ex. DateDiff(“d”, Now, “31-Jan-1999”)
‘ devolve a diferença entre a data de hoje
 e o dia 31 de Janeiro de 1999
43CAPÍTULO 3: FUNÇÕES
DatePart() É dada uma certa data e obtemos em que altura
do ano acontece usando os valores de campo de
DateAdd()
Ex. DatePart(“q”, “31-Set-2000”)
 ‘ devolve o quarto do ano em que a data se aplica
DateSerial() Devolve uma data para especificados ano,
mês e dia
DateValue() Devolve uma data válida daquela que é pedida
Day() Devolve o dia do mês de uma data
Ex. Day(“31-Set-2000”) ‘ devolve 31
Exp() Devolve a exponencial de um valor
Filter() Pesquisa um array, para procura de um
valor ou expressão
Ex. variavel1(“Internet”,”Sites”,”Hosting”,”Portugal”)
 Filter(variavel1,”Si”) ‘ devolve Sites
Fix() Devolve o inteiro de um qualquer valor
FormatCurrency()Transforma um valor normal numérico
para valor monetário.
Ex. FormatCurrency(32420)‘ devolve 32.420$00
FormatDateTime()Funciona como FormatCurrency()
mas para datas
FormatNumber() Formata um número da maneira que nos convém
FormatPercent()Devolve uma percentagem do universo que o
programador pretende
Ex. FormatPercent(23/230) ‘ devolve 10,00%
GetObject() Devolve a referência a um objecto
Hex() Transforma um valor para resultado hexadecimal
Hour() Devolve a hora de uma expressão
Ex. Hour(Now()) ‘ devolve a hora do momento
InStr() Devolve a posição de uma string dentro
de outra a contar do início
Ex. InStr(1,”Hoje é um bom dia para se
programar”, “ra”) ‘ devolve 21
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES44
InStrRev() Devolve a posição de uma string dentro
de outra a contar do fim
Ex. InStr(1,”Hoje é um bom dia para
se programar”, “ma”,35,0) ‘ devolve 33
IsArray() Devolve True ou False em relação a uma variável,
validando-a no caso de ser ou não um array
IsDate() Devolve True ou False em relação a uma string,
validando-a no caso de esta ser do tipo Date ou não
IsEmpty() Valida uma variável, para ver se a mesma
está ou não vazia
IsNull() Valida uma variável para ver se a mesma
é Null ou não
IsNumeric() Valida uma string/valor para ver se o mesmo é
numérico ou não
IsObject() Valida um Objecto, certificando-se se o mesmo
o é ou não
Join() Junta todas as variáveis dentro de um array,
criando uma só.
Ex. variavel(0) = “Hoje ”
variavel(0) = “está ”
variavel(0) = “bom ”
variavel(0) = “tempo.”
variavel2 = Join(variavel)
 ‘a variavel2 ficará igual a “Hoje está bom tempo.”
LBound() Devolve o menor valor da dimensão de um array
LCase() Devolve uma string em ‘lower case’
Ex. LCase(“Estamos em Setembro.”)
‘ devolve “estamos em setembro.”
Left() Devolve um certo número de caracteres a contar
do lado esquerdo da string
Ex. Left(“Vamos programar ASP.”,3)
‘devolve “Vam”
Len() Devolve o tamanho de uma string
Ex. Len(“Vamos programar ASP.”)
‘ devolve 20
45CAPÍTULO 3: FUNÇÕES
Log() Devolve o logaritmo de um dado número
LTrim() Devolve uma string sem espaços do lado esquerdo
Ex. LTrim(“ Isto é um teste.”)
‘ devolve “Isto é um teste.”
Mid() Serve para termos um número dado de
caracteres de uma string, a partir de uma dada
posição
Ex. Mid(“Vamos programar ASP.”, 7, 9 )
‘ devolve “programar”
Minute() Devolve o minuto de uma data/hora
Month() Devolve o valor correspondente ao mês de uma
dada data
Ex. Month(date())
‘ devolve o valor do mês em que
 estiver a testar o código
MonthDate() Devolve o nome do mês (por extensão)
Ex. MonthDate(10) ‘ devolve “Outubro”
Now() Devolve a data e hora corrente
Oct() Devolve o valor octal de um dado número
Replace() Altera certo caracter/string por outro dado
Ex. replace(“yyXiiXppX22fXjX” , ”X” , ”P” )
‘ devolve “yyPiiPppP22fPjP”
RGB() Devolve um valor representativo de uma cor. A
expressão é estruturada por RGB(vermelho,
verde, azul)
Os valores usados vão de 0 a 255
Ex. RGB(22,233,143)
‘ devolve 9431318
Right() Funciona como a função Left() mas a
contar da direita
Rnd() Retorna um valor aleatório
Round() Faz arredondamento a valores numéricos
Ex. Round(23,77) ‘ devolve 24
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES46
Second() Devolve os segundos de uma dada hora
Sgn() Devolve o sinal de um valor
Ex. Sgn(2) ‘ devolve 1
Sgn(-12) ‘ devolve –1
Sgn(0) ‘ devolve 0
Sin() Devolve o seno de um ângulo indicado
Space() Introduz um dado número de espaços numa string
Ex. response.write “Teste“ & Space(12) & “Feito…”
 ‘devolve “Teste Feito…”
Split() Divide uma string num array, escolhendo o critério
de separação
Ex. resultado = Split(“IstoKéKmaisKumKteste.”, “K”, -1, 1)
 ‘ devolve ;
 ‘ resultado(0) = “Isto”
 ‘ resultado(1) = “é”
 ‘ resultado(2) = “mais”
 ‘ resultado(3) = “um”
 ‘ resultado(4) = “teste.”
Sqr() Devolve a raiz quadrada de um valor
StrComp() Compara duas strings, devolvendo um valor, no
que respeita se são iguais ou não.
A estrutura desta função é StrComp(var1,var2,tipo)
Var1 e var2 são duas strings à escolha, o tipo
pode ser definido por 0 (comparação entre
binários) ou 1 (comparação entre textos)
Ex. var1 = “Teste”
var2 = “ TesTE”
StrComp( var1, var2) ‘ devolve 1
StrComp( var1, var2, 0) ‘ devolve –1
StrComp( var1, var2, 1) ‘ devolve 0
StrReverse() Devolve uma string dada, invertendo-a
Ex. StrReverse(“123456”) ‘ devolve “654321”
String() Devolve repetidamente um caracter escolhido
um número de vezes definido
Ex. String(“C”,10) ‘ devolve “CCCCCCCCCC”
Tan() Devolve a tangente de um determinado número
47CAPÍTULO 3: FUNÇÕES
Time() Devolve a hora do sistema
TimeSerial() Devolve uma hora para hora,
minuto e segundos especificados
TimeValue() Devolve uma hora válida daquela que é pedida
TypeName() Devolve o tipo de variável que estamos a usar
Ex. TypeName(“ASP”) ‘ devolve “String”
TypeName(12.40) ‘ devolve “Double”.
TypeName(NullVar) ‘ devolve “Null”
TypeName(ArrayVar) ‘ devolve “Variant()”.
TypeName(6) ‘ devolve “Integer”
UBound() Devolve o maior valor da dimensão de um array
Ucase() Devolve uma string em ‘upper case’
Ex. LCase(“Estamos em Setembro.”)
‘ devolve “ESTAMOS EM SETEMBRO.”
VarType() Parecido com TypeName(), mas devolve um valor
correspondente aos dados da variável a validar.
Os números possíveis de resposta são:
0 – Vazio 1 – Null
2 – Integer 3 – Long
4 – Single 5 – Double
6 – Currency 7 – Date
8 – String 9 – Object
10 – Error 11 – Boolean
12 – Variant 13 – Data Access Object
 (DAO)
17 – Byte 8192 – Array
WeekDay() Devolve o dia da semana de uma dada data
Ex. WeekDay (“Outubro 10, 1999”)
‘ devolve 1 que representa Domingo
WeekDayName()Devolve por extenso o dia da semana de uma
dada data
Ex. WeekDayName (1)
ou
WeekDayName(WeekDay (“Outubro 10, 1999”))
‘ devolvem ambas as expressões domingo
Year() Devolve o ano de uma dada data
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES48
Apesar da existência de um número considerável de funções nas
ASP estas vingam não pela quantidade das mesmas, mas sim, nos
objectos que existem. Com os objectos que as ASP disponibilizam,
o leitor poderá criar potentes funções próprias, ou componentes pa-
ra estas em Visual Basic.
Este assuntos serão abordados noutros capítulos, mas que não te-
rão nexo se o leitor não conhecer o funcionamento de procedimen-
tos e funções em ASP, ou até mesmo o uso de ficheiros externos.
Neste capítulo ainda não irá aprender como interagir com o utilizador,
mas sim tratar de todo o tipo de dados e/ou variáveis que lhe pode-
rão aparecer.
3.2 As nossas Funções
O leitor tem acesso a todas as funções disponíveis pelas ASP 2.00,
e a partir de agora pode definir as suas próprias funções. Não es-
quecer que as ASP 3.00 vêm com o Windows 2000 e o seu IIS5,
como indicado no primeiro capítulo. Nos próximos casos as fun-
ções que vão ser criadas serão para situações que por vezes apa-
recem na programação de sites Internet.
Neste primeiro exemplo criou-se uma função que devolve o número
de dias que faltam até ao ano 2001 a partir de uma dada data.
(ficheiro cpt3-2-1.asp)
<%
Function a2001(data) ‘ início da função
 If IsDate(data) then ‘ se for uma data for válida
 ‘ então envia-se a diferença entre datas
 a2001 = DateDiff(“d”,data,”Janeiro 1, 2001")
 else ‘ caso contrário
 ‘ enviamos a data como inválida, em forma de informação
 a2001 = “Data inválida...”
 end if ‘ final do if
End Function ‘ final da função
Response.Write “Hoje é “ & now() & “<br><br>” ‘ escreve a data
corrente
‘ escreve-se então o resultado
Response.write “Faltam “ & a2001(now()) & “ dias até ao ano 2001.”
%>
49CAPÍTULO 3: FUNÇÕES
Foram usadas as seguintes funções:
IsDate() paranos certificarmos se a dada data tinha
realmente um formato válido de data;
DateDiff() que retorna o número de dias até ao ano 2001
(o número de dias pois é isso que foi
estabelecido, aquando do campo “d”);
Now() dá-nos a data corrente, que inclui
as horas.
Como se viu, as funções têm uma estrutura própria:
Function nome_da_funcao(variavel1, variavel2, variaveln)
…….
Nome_da_funcao = resposta
End Function
Fig. 3.1 - Resultado do ficheiro cpt3-2-1.asp
A maneira de chamar uma função é simples, basta o uso do nome
da função em qualquer ponto do código.
No próximo exemplo pretende-se saber se um e-mail é válido. Desta
maneira o programa valida algo que perturba muitos programado-
res, para tentarem que o input dos utilizadores seja o mais correcto
possível, e os e-mails introduzidos sejam o mais correctos.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES50
(ficheiro cpt3-2-2.asp)
<%
Function valmail(email) ‘ início da função
‘ se o tamanho do e-mail for menor que 5 dificilmente será válido(a@a.c)
 If Len(email) <= 5 Then
 Valmail=False else
 ‘se não existir um @ também não é válido
 If InStr(1, email, “@”, 1) < 2 Then
 valmail=False
 Else
 ‘ o ponto final é também importante
 If InStr(1,email, “.”, 1) < 4 Then
 Valmail=False
 Else
 Valmail=True
 End If
 End If
 End If
End Function ‘ final da função
if valmail(“o_meu_email@algum_email.com”) then
 Response.Write”O e-mail o_meu_email@algum_email.com é
válido.<br>”
 Else
 Response.Write”O e-mail o_meu_email@algum_email.com não é
válido.<br>”
End if
if valmail(“tentar@iludir”) then
 Response.Write “O e-mail tentar@iludir é válido.<br>”
 Else
 Response.Write “O e-mail tentar@iludir não é válido.<br>”
End if
%>
Foram usadas as seguintes funções:
Len() retorna o tamanho de uma string, para
sabermos se tem o tamanho mínimo
pretendido para um e-mail normal
InStr() muito usado para nos certificarmos da
existência do símbolo @ ou de um ponto
final, sempre usado antes da extensão
do domínio.
O leitor tem assim, uma função que lhe valida todos os e-mails que
receber como input.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES52
(ficheiro cpt3-2-3.asp)
<%@ Language=”VBScript” %>
 <%
Function criacaixa()
 %><select size=”1" name=”nome”><%
 For I=0 to UBound(ardados)
 %>
 <option><%=ardados(I)%></option>
 <%
 Next
 %></select><%
End Function
Dim ardados(3) ‘ inicialização de array
Ardados(0) = “Alentejo”
Ardados(1) = “Minho”
Ardados(2) = “Algarve”
Ardados(3) = “Beira-Litoral”
%>
<form>
Viajar Para ? <%=criacaixa()%>
</form>
Foram usadas as seguintes funções:
UBound() retorna o tamanho de um array, necessário
neste caso para sabermos até que
ponto podemos ir com o ciclo FOR.
Fig. 3.3 - Resultado do ficheiro cpt3-2-3.asp
53CAPÍTULO 3: FUNÇÕES
Como se pode ver, foi usada a linha <%@ Language=”VBScript” %>
que serve para o programador ter acesso mais facilitado ao código
ASP, que é conhecido como o VBScript do lado do servidor. O IIS
interpreta código, e acaba por percorrer todas as linhas, quer te-
nham ASP ou não, se indicarmos no ínicio do ficheiro de que se trata
de um ficheiro com VBScript, a sua performance será melhorada,
mas não é essencial o uso desta linha no ínicio do código.
Algo também muito comum são os gráficos correspondentes a opi-
niões, ou outros, para transmitir informação a partir dos dados em
bases de dados. No exemplo seguinte pode-se perceber o truque de
criar gráficos em HTML, que servem para esse mesmo propósito. O
código seguinte é bastante explícito nesse ponto. O truque é o de
controlar o tamanho das células das tabelas de HTML com os valo-
res indicados pelo programa, que os pode aceder de qualquer lado,
mas neste exemplo indicados array a array.
(ficheiro cpt3-2-4.asp)
<%@ Language=”VBScript” %>
 <%
Function criagrafico()
 For I=0 to Ubound(ardados)
 %>
 <table border=”0" width=”100">
 <tr><td><font face=”ARIAL” size=”2">
<%= ardados(I,0)%></font></td></tr>
 <tr><td><table bgcolor=”blue” border=”1" width=”<%=ardados(I,1)%>”>
<tr><td>
</td></tr></table>
</td></tr></table>
 <%
 Next
End Function
Dim ardados(3,3)
Ardados(0,0) = “Primeiro”
ardados(0,1) = 100
ardados(1,0) = “Segundo”
ardados(1,1) = 40
ardados(2,0) = “Terceiro”
ardados(2,1) = 60
ardados(3,0) = “Quarto”
ardados(3,1) = 18
criagrafico()
%>
55CAPÍTULO 3: FUNÇÕES
que mantém, ou que repete bastante nas várias páginas de um
mesmo site. Com os SSI, o programador introduz todas as funções
que quer num ficheiro, que por sua vez é chamado no início do códi-
go ASP. A partir daí todas as funções desse ficheiro estão acessí-
veis na programação dessa página ASP. Devemos usar os SSI para
aquele tipo de código que sabemos vai ser alterado em várias pági-
nas. Dessa maneira, bastará alterar uma vez, para que todas as
páginas fiquem actualizadas com o novo código.
A maneira de se chamar um ficheiro dentro de um ASP (uso de
SSI), tenha ele parte de código HTML, ou de ASP, é <!—#INCLUDE
FILE=”ficheiro.inc”—> . Este código é introduzido no código HTML,
e não no de ASP. Mas tem de estar num ficheiro de ASP e não no de
um de HTML - um pouco confuso! Vejamos então os seguintes fi-
cheiros, criados a partir de tudo aquilo que temos vindo a criar neste
capítulo, e recorrendo ao uso de SSI (chamada de ficheiros exterio-
res para complementar a programação).
Vamos então criar um ficheiro que tem o nosso topo de página HTML
por defeito. Esse ficheiro ficará com uma extensão diferente (*.inc)
para se poder diferenciar dos outros. Pode-se criar HMTL e ASP
nesse mesmo ficheiro.
(ficheiro cpt3-3-1.inc)
<div align=”center”>
 <center>
 <table border=”0" width=”80%” bgcolor=”#0000FF”>
 <tr>
 <td width=”100%”><b><font face=”Arial” color=”#FFFFFF”>A
 Listagem das minhas Funções:</font></b></td>
 </tr>
 </table>
 </center>
</div>
<div align=”right”><%=FormatDateTime(Now(),2)%></div><br>
Foram usadas as seguintes funções:
FormatDateTime() formata a data escolhida, neste caso
com um Formato de tipo 2;
Now() é usada para que seja formatada a
data corrente.
57CAPÍTULO 3: FUNÇÕES
(ficheiro cpt3-3-2.asp)
<%@ Language=”VBScript” %>
<%
Function a2001(data)
 if IsDate(data) then
 a2001 = DateDiff(“d”,data,”Janeiro 1, 2001")
 else
 a2001 = “Data inválida...”
 end if
End Function
Function valmail(email)
 If Len(email) <= 5 Then
 valmail=False
 else
 If InStr(1, email, “@”, 1) < 2 Then
 valmail=False
 Else
 If InStr(1,email, “.”, 1) < 4 Then
 valmail=False
 else
 valmail=True
 End If
 End If
 End If
End Function
Function criacaixa()
 %><select size=”1" name=”nome”><%
 For I=0 to UBound(ardados)
 %>
 <option><%=ardados(I)%></option>
 <%
 Next
 %></select><%
End Function
Function criagrafico()
 For I=0 to UBound(ardados2)
 %>
 <table border=”0" width=”100">
 <tr><td><font face=”ARIAL” size=”2"><%= ardados2(I,0)%></font></td></tr>
 <tr><td><table bgcolor=”blue” border=”1"
width=”<%=ardados2(I,1)%>”><tr><td></td></tr></table></td></tr></table>
 <%
 Next
End Function
%>
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES58
Como foi visto o ficheiro cpt3-3-2.asp tem todas as funções criadas
neste capítulo. Iremos incluí-lo com a potencialidade dos SSI numa
outra página que usaremos para demonstrar as funções. Foi altera-
do o nome de um dos arrays, para que não existissem conflitos
entre ambas as funções. De futuro, as funções recebemos
parâmetros, para não nos preocuparmos com este tipo de situa-
ções. Vemos então no exemplo a seguir, introduzido através de SSI,
o ficheiro cpt-3-3-2.asp . Para as ASP é como se todo aquele código
estivesse presente no ficheiro, tomando todas as funções como lo-
cais. A partir deste momento podemos utilizar o ficheiro e todas as
suas funções.
(ficheiro cpt3-3-3.asp)
<!—#INCLUDE FILE=”cpt3-3-2.asp”—>
<!—#INCLUDE FILE=”cpt3-3-1.inc”—>
<p>
Iremos agora ver todos as funções do capítulo a funcionar,<br>
e não precisamos de as ter neste ficheiro.<br>
Desta maneira temo-las em todos os ASP que quisermos sem termos de<br>
escrever o código todo de novo, ou de passar o tempo<br>
no Copy & Paste...</p><br>
<%Response.Write “Hoje é “ & now() & “<br>”
Response.write “Faltam “ & a2001(now()) & “ dias até ao ano
2001.<br><br>”
if valmail(“o_meu_email@algum_email.com”) then
 Response.Write “O e-mail o_meu_email@algum_email.com é
válido.<br>”
 Else
 Response.Write “O e-mail o_meu_email@algum_email.com não é
válido.<br>”
End if
if valmail(“tentar@iludir”) then
 Response.Write “O e-mail tentar@iludir é válido.<br>”
 Else
 Response.Write “O e-mail tentar@iludir não é válido.<br>”
End if
Dim ardados(3) ‘ inicialização de array
Ardados(0) = “Alentejo”
ardados(1) = “Minho”
ardados(2) = “Algarve”
ardados(3) = “Beira-Litoral”
%>
59CAPÍTULO 3: FUNÇÕES
<br><br><form id=form1 name=form1>
Viajar Para? <%=criacaixa()%>
</form><br>
<%
Dim ardados2(3,3)
Ardados2(0,0) = “Primeiro”
ardados2(0,1) = 100
ardados2(1,0) = “Segundo”
ardados2(1,1) = 40
ardados2(2,0) = “Terceiro”
ardados2(2,1) = 60
ardados2(3,0) = “Quarto”
ardados2(3,1) = 18
criagrafico()
%>
O resultado na imagem seguinte é bastante explícito daquilo que se
pretendia. Temos todas as funções a funcionar, e podendo funcionar
em todos os ficheiros ASP que o programador tiver para o seu site,
com apenas a inserção de uma linha de código no topo de cada
página ASP.
Fig. 3.6 - Resultado do ficheiro cpt3-3-3.asp
Agora o leitor poderá estender toda a sua programação num só fi-
cheiro, pelo menos as funções que acha virem a ser aquelas que
mais vai utilizar.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES62
4.1 Tabela de Objectos
Os objectos que as ASP têm por defeito parecem ser poucos, mas
os seus métodos são os suficientes para que o leitor consiga
alcançar os objectivos pretendidos para o seu site. A maneira de
usar os objectos é bastante simples, e intuitiva, funcionando como
os objectos das outras linguagens.
TABELA DE OBJECTOS DAS ASP
Objectos Métodos e suas funções
Response · Redirect
usado para redireccionarmos o utilizador para
outra página. Usado normalmente para controlo
de utilizadores e acessos.
· Cookies
mecanismo para deixar informações do lado do
cliente com variada informação (dentro das
cookies existem outros métodos para o seu
controlo, como veremos depois em pormenor).
· Write
é esta a maneira para enviar informação para o
browser.
· CacheControl
desta maneira controlamos se a página pode
deixar que se faça cache da mesma nos
browsers (por defeito não deixa fazer cache).
· Charset
uma maneira de definirmos o tipo de caracteres
a usar.
· ContentType
para definir o tipo de informação que vai ser
passada, usado normalmente para UpLoad onde
definimos que queremos passar não só informa-
ção usual, mas também binária, originária de
ficheiros.
63CAPÍTULO 4: OBJECTOS
· Expires
uma maneira de definir o tempo que uma página
ficará activa e deixará de estar disponível. Neste
caso definimos ao fim de quanto tempo expirará.
· ExpireAbsolute
idêntico ao Expires, com a diferença que se pode
controlar, não com o valor que define ao fim de
quanto tempo, mas sim com uma data que
define a altura em que deixa de estar disponível.
· IsClientConnected – desta maneira controla-
mos se o cliente ainda está ligado.
· Status
define o código que está no HTTP header.
· AddHeader
Ajusta dinamicamente a informação que está no
HTTP header.
Request · Cookies
neste caso será usado para ir buscar os cookies
criados com o objecto response.
· Querystring
desta maneira poderemos obter os valores que vêm
da página anterior, depois de submetermos um
formulário com o método GET.
· Form
este método permite-nos obter os dados enviados
por um formulário que esteja com o método POST.
· ServerVariables
usa-se muito este método para identificar os tipos
de browsers que o cliente está a usar, os IPs do
mesmo, a página de onde o cliente veio, assim
como variadas informações sobre o servidor que
está a ser usado.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES64
Server · HTMLEncode
o método que formata a informação que o utilizador
insere. Esta formatação é muito importante devido
a alguns símbolos serem reconhecidos pelo HTML,
e por esse motivo o layout pode não ter o aspecto
planeado
· URLEncode
parecido com o HTMLEncode, mas formata a string
de maneira a ser válida para usar na linha de
address dos browsers.
· CreateObject
é esta a maneira como iremos aceder a objectos
exteriores, assim como componentes criados por
nós ou outros. Os componentes de ASP são fi-
cheiros de extensão DLL, especiais para os ASPs,
possíveis com o VB ou o VC++ (Visual C++).
· MapPath
é com este método que trabalharemos os nossos
ficheiros localmente (no servidor).
Session · Timeout
as sessões do servidor têm um limite, ao fim do
qual toda a informação contida nas sessions
desaparecem. Desta maneira poderemos
controlar o tempo que as sessões estão activas.
· SessionID
este é o método que nos dá o nuúmero da sessão
do cliente corrente. São uma espécie de
impressão digital das sessões.
· Abandon
força a finalização das sessões.
Application A variável global, mas idêntica para todos os
utilizadores, ao contrário das sessions que são
variáveis do tipo global, mas só para o cliente que
está nessa sessão.
TextStream · CreateTextFile
método de criação de ficheiros de texto.
· OpentextFile
método de leitura dos ficheiros de texto.
65CAPÍTULO 4: OBJECTOS
A estrutura de um objecto e seu método é do tipo objecto.método,
logo, para criar-mos, por exemplo, um cookie, usamos
response.cookies, e para obter o valor introduzido na cookie, usare-
mos então request.cookies.
Depois de se ver esta tabela, muitas questões ficam no ar, em rela-
ção a vários métodos que aqui descrevemos. A sua grande maioria
vai ser aprofundada nos próximos capítulos, mas iremos tratar alguns
deles ainda neste capítulo, assim como desenvolver exemplos reais
de como usufruir ao máximo destes objectos.
4.2 Variáveis globais e de sessão
As variáveis globais/sessão, serão uma das hipóteses que o pro-
gramador terá para poder passar dados de base de uma página
para a outra. Normalmente quando se passa de uma página para
outra, as variáveis da primeira página deixam de funcionar numa
segunda. A maneira de ultrapassar este obstáculo é usando os ob-
jectos Application e Session. Apesar de ambos os objectos serem
usados para variáveis globais, cada um tem um objectivo diferente,
e um comportamento diferente dentro do contexto da programação
de páginas ASP. Para o leitor perceber como ambas funcionam ex-
plica-se então como funciona o servidor de Internet que suporta as
ASP:
O servidor Internet faz um controlo de acessos às páginas que con-
tém sob sua alçada, e por isso cria um ID para cada acesso HTTP
que é feito na máquina onde está instalado e a correr. Desta forma o
servidor consegue fazer uma estatística mais pormenorizada, que a
grande maioria dos outros não conseguem. A partir do momento
que o programador tem acesso a este ID, poderá seguir o rasto
(pormenorizado) daquilo que esse utilizador faz, dentro do site. O ID
de sessão, que pode aceder-se por session.sessionID, termina e
passa a ser outro a partirdo momento que o browser é desligado, ou
que passa o tempo limite de uma sessão, que se pode aceder por
session.TimeOut . Cada pessoa que está a aceder ao site tem um
ID diferente, assim como que cada sessão é diferente, podendo o
programador usar as sessões, para passar de variáveis de uma
página para outra, visto que a ligação apenas se quebra no desligar
do browser, ou no atingir do limite de tempo das sessões. Pode-se
ver pelo código seguinte o ID de uma sessão e o tempo limite que
está por defeito no servidor.
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES66
(ficheiro cpt4-2-1.asp)
<%
 Response.Write “O numero desta sessão é “ & session.SessionID
 Response.Write “<br>O tempo de validade de uma sessão é de “
 Response.write session.Timeout & “ minutos.”
%>
Foram usadas os seguintes objectos:
Response.Write objecto usado para escrita, tanto em
cookies, browser, headers, etc.
Session.SessionID a maneira de saber qual o código da
sessão no momento.
Session.Timeout devolve o tempo de expiração das
sessões, definido no momento.
Fig. 4.1 - Resultado do ficheiro cpt4-2-1.asp
Podemos então usar o objecto Session para passarmos todo o tipo
de variáveis de uma páginas ASP para outra. Aqui então está um
exemplo em que passamos uma string entre duas páginas. Ter em
atenção de que estas variáveis ficam acessíveis não só na página
que se corre em seguida, mas em todas aquelas que pertencerem
a esse site. Por isso se para chegar-mos a um ficheiro C começan-
do em A, tenhamos de passar por B, a sessão criada em A continua
activa.
67CAPÍTULO 4: OBJECTOS
(ficheiro cpt4-2-2.asp)
<%
 Response.Write “<br>O tempo de validade de uma sessão é de “ &
session.Timeout & “ minutos.”
 session.Timeout = 10
 Response.Write “<br> Depois de alterado passou a “ & session.Timeout
 session(“Teste”) = “Isto é um teste”
 Response.Write “<br>Entretanto foi criada uma variável de sessão
Session(“”Teste””),”
 Response.Write “que contém a string ‘“ & session(“Teste”) & “‘ .”
%>
<br><br><a href=”cpt4-2-3.asp”>carregue aqui para passar à próxima
página</a>
Foram usadas os seguintes objectos:
Session(“Teste”) a maneira de saber qual o código da
sessão no momento;
Session.TimeOut neste ficheiro usámos este objecto
com este método, de maneira a
alterarmos o tempo limite de uma
sessão.
A possibilidade de podermos alterar o tempo limite de uma sessão é
muito importante, tanto para sites de protecção por password, como
para sites mais pesados, onde necessitamos de mais tempo, pois
uma página que demore muito tempo a abrir, ou a processar algo
bastante pesado, possa demorar mais de 1 minuto, e nessa altura a
sessão deveria ter um mínimo de 2 minutos. Aqui também pudemos
ver como é possível usar “ “ dentro de uma string, ou então lá criar
algo com os mesmos. Visto que as “ “ são usadas para conter strings,
e outro tipo de dados, o programador para as usar terá de criar uma
a mais por cada uma que lá introduzir. Tal como está no ficheiro, que
vimos anteriormente.
No ficheiro cpt4-2-2.asp temos então a possibilidade de ver como
se altera o objecto que controla o tempo das sessões, e como criar
uma sessão nossa, e lá introduzir dados que queiramos estarem
acessíveis em uma ou várias páginas.
Este ficheiro vai chamar um outro (cpt4-2-3.asp) para que o leitor se
aperceba da maneira como foi possível criar uma sessão própria e
aceder à mesma, a partir de outras páginas.
69CAPÍTULO 4: OBJECTOS
As imagens são bem elucidativas em relação ao uso de uma ses-
são criada pelo programador. Da mesma maneira que criada uma
sessão para suportar uma string, o leitor poderá usar para criar um
array ou número. As hipóteses são imensas, e a programação a
este nível é bastante facilitada com este objecto.
Outro objecto que é usado para tratar de variáveis globais é
Application, que é criado e acessível tal como se faz com as ses-
sões, com a particularidade que para o alterarmos tem-se de seguir
certas regras.
A grande diferença entre Application e Session é que enquanto as
variáveis criadas pelo segundo são acedidas apenas pelo utilizador
do momento, ou por aquele a quem pertence um SessionID, as va-
riáveis Application são acedidas por todos os utilizadores, todos os
SessionID. Fica assim um esquema para o leitor perceber melhor
como isto funciona.
Fig. 4.4 - Funcionamento das variáveis globais
Pelo esquema pode-se reparar que para cada utilizador existe uma
sessão independente, enquanto a variável de Application é igual para
todos.
Vemos então um exemplo de como criar e aceder a uma variável de
Application. Repare que existem dois métodos Lock e UnLock para
que a mesma possa ser alterada. Para aceder à mesma não é ne-
cessário usar as regras ditas anteriormente, e visíveis no exemplo
seguinte:
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES70
(ficheiro cpt4-2-4.asp)
<%
Application.Lock
Application(“Teste2”) = “Uma variável acessível por todos os utilizadores...”
Application.UnLock
Response.Write “ Avariável Application(“”Teste2"”) é > “
Response.Write Application(“Teste2”) & “ <“
%>
Foram usados os seguintes objectos:
Application.Lock serve para trancar a variável aos
utilizadores, de maneira a poder ser
alterada a variável;
Application(“Teste2”) da mesma maneira que se usa as
Sessions, pode-se criar uma
variável e aceder à mesma;
Application.UnLock usado para depois que é alterada a
variável, tirando o Lock.
Fig. 4.5 - Resultado do ficheiro cpt4-2-4.asp
71CAPÍTULO 4: OBJECTOS
4.3 Interagir com o utilizador
Aquilo que realmente faz a diferença entre as páginas estáticas e as
páginas dinâmicas é a possibilidade de resposta aos utilizadores
em tempo real. Podem-se programar páginas que recebendo um
input de um utilizador, estas respondem de acordo com os dados
recolhidos, e isso não se pode fazer apenas com HMTL, e outros
recursos básicos.
Para se recolher dados do utilizador é necessário criar uma estrutu-
ra que permite o utilizador inseri-los, de maneira que o programador
possa trabalhar com os mesmos. Em primeiro lugar é criado um
formulário HTML, que tanto pode estar numa simples página HTML,
como numa página ASP. O utilizador pode ter uma página HTML
com o formulário que depois de submetido vai buscar um ficheiro
ASP, onde o programador pode recolher os dados e trabalhar sobre
eles. Ou então o programador numa mesma página ASP controla o
input que é feito, e conforme o estado em que o contexto se encon-
tra, conforme a acção que é accionada. Mas com os ficheiros de
exemplo seguintes, o leitor vai perceber as diferenças.
(ficheiro cpt4-3-1.html)
<form action=”cpt4-3-1.asp” method=”POST”>
Nome: <input type=”text” name=”nome” size=”20"><br>
Idade: <input type=”text” name=”idade” size=”2" Maxlength=”2"><br>
Telefone: <input type=”text” name=”telefone” size=”12" Maxlength=”14"><br>
<input type=”submit” value=”Enviar”>
</form>
Foram usadas as seguintes Tags:
Application.Lock serve para trancar a variável aos
utilizadores, de maneira a poder ser
alterada a variável;
Application(“Teste2”) da mesma maneira que se usa as
Sessions, pode-se criar uma
variável e aceder à mesma;
Application.UnLock usado para depois que é alterada a
variável, tirando o Lock.
73CAPÍTULO 4: OBJECTOS
(ficheiro cpt4-3-2.asp)
<%Sub usar_dados()%>
O utilizador <strong><%=Request.Form(“nome”)%></strong>,
 tem <strong><%=Request.Form(“idade”)%></strong> anos<br>
e está acessível pelo número de telefone
<strong><%=Request.Form(“telefone”)%></strong> !
<%End Sub%>
<%Sub formulario()%>
<form action=”cpt4-3-2.asp” method=”POST” id=form1 name=form1>
Nome: <input type=”text” name=”nome” size=”20"><br>
Idade: <input type=”text” name=”idade” size=”2" Maxlength=”2"><br>
Telefone: <input type=”text” name=”telefone” size=”12"
Maxlength=”14"><br>
<input type=”submit” value=”Enviar” name=”submeter”></form>
<%End Sub%>
<%
 if Request.Form(“submeter”)=”” then
 formulario
 else
 usar_dados
 end if
%>
Usando um só ficheiro ASP simulamos os dois ficheiros anteriores,
num só, poupando ‘burocracia’ algorítmica.
Fig. 4.8 - Resultado inicial do ficheiro cpt4-3-2.asp
75CAPÍTULO 4: OBJECTOS
- rendimento mensal entre 80.000$00 e 100.000$00 e média maior
 que 13 valores;
- rendimento mensal entre 100.000$00 e 160.000$00 e média
 maior que 16;
- média maior que 18;
- o aluno não pode ter menos de 10 anos e mais de 28.
Não vamos aprofundar muito com questões das quantidades envol-
vidas, mas vamos então pedir os dados necessários para que pos-
samos dizer se tem hipótese ou não no caso de se candidatar. Além
de dizermos isso, vamos calcular a idade do aluno pela data de
nascimento. Desta forma o leitor perceberá mais alguns pontos de
desenvolvimento ASP a este nível e poderemos então criar um
pequeno curso online que demonstra muito genericamente uma das
grandes potencialidades da Internet, a formação online.
Continuando então, vamos criar o formulário com as perguntas, e
não esquecendo os nomes de cada Tag de input, nomes esses que
serão os identificadores no uso do objecto request.
Vamos por partes, neste caso vamos estudar a estrutura a desen-
volver. Separemos por partes o que vai ser feito:
- Formulário de pedido de dados do aluno;
- Validação dos dados do aluno;
- Apresentação do resultado.
Estas 3 fases distintas podem ser feitas em 3 procedimentos dife-
rentes. Criaremos um procedimento formulario(), dados_validar() e
resposta(). Ficamos assim com os 3 pontos definidos. Basta agora
criar o código que os vai colocar em produção.
Comecemos pelo formulário que vai pedir os dados ao utilizador:
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES76
<%Sub formulario()%>
<p align=”center”><I><b>
<font size=”4" color=”#800000">Simulador de Bolsas de
Estudo</font></b></I>
<br>
<div align=”center”>
<center>
<FORM name=”bolsa” method=”POST”>
<table border=”0" width=”400" bgcolor=”#CED299"><tr>
<td width=”100%” align=”left”>
<strong>
<font size=”2" face=”ARIAL” color=”RED”>
<%=session(“erro”)%></font></strong>
<font face=”Arial”><b>Nome: </b></font>
<input type=”text” name=”nome” size=”44"
value=”<%=Request.Form(“nome”)%>” maxlength=”50">
<font face=”Arial”><b><br>Data de Nascimento:</b></font>
<input type=”text” name=”dia” size=”2" value=”<%=Request.Form(“dia”)%>”
maxlength=”2">-
<input type=”text” name=”mes” maxlength=”2"
value=”<%=Request.Form(“mes”)%>” size=”2">- 19
<input type=”text” name=”ano” size=”2" maxlength=”2"
value=”<%=Request.Form(“ano”)%>”><b>
<font face=”Arial”><br>Média do último ano:</font></b>
<input type=”text” name=”media” value=”<%=Request.Form(“media”)%>”
size=”2" maxlength=”2">valores<b>
<font face=”Arial”><br>Rendimento mensal dos pais:</font></b>
<input type=”text” name=”rendimento”
value=”<%=Request.Form(“rendimento”)%>” maxlength=”7" size=”7">$00
<p align=”center”><input type=”submit” value=”Simular”
name=”submeter”><br></p>
</td>
</tr></table>
</FORM>
</center>
</div>
<%End Sub%>
CENTRO ATLÂNTICO - PROGRAMAÇÃO WEB COM ACTIVE SERVER PAGES78
Este código é introduzido antes de se usarem os procedimentos
pois queremos que as variáveis sejam dadas como variáveis públi-
cas dentro deste ficheiro ASP. Desta forma, é mais fácil tratar os
dados e escusamos de estar sempre a usar o código Request.Form
(“…..”), bastando assim apenas o nome que atribuímos a cada um
dos argumentos que são passados. A variável Data fica com uma
formatação diferente, pois queremos construir uma data real, para
que no uso da função IsDate() disponhamos à partida de algo se-
melhante para validação.
<%Sub dados_validar()%>
<%
session(“erro”) = “”
‘ se não for data a variável de sessão fica com o erro correspondente
if not(IsDate(data)) then
 session(“erro”) = “* A data está inválida...<br>”
 else
 if (not(IsNumeric(media))OR ((media<0)OR(media>20))) then
 session(“erro”) = “* A média é inválida...<br>”
 else
 if not(IsNumeric(rendimento)) then
 session(“erro”) = “* O rendimento está inválido...<br>”
 end if
 end if
end if
if session(“erro”)<>”” then
 formulario
 else
 resposta
end if
%>
<%End Sub%>
Como se viu foram validadas todas as variáveis que o formulário
apanhou do utilizador, e validadas conforme aquilo que se pretendia:
a data validada como data e o rendimento e média do aluno como
números, para que não sejam aceites letras ou outros caracteres
idênticos. E no final é chamado o formulario() ou o procedimento
resposta(), conforme o que se pretende. No caso de existir algum
erro nas variáveis que foram pedidas, o utilizador é enviado nova-
mente para o formulário, que mantém os dados anteriores, visto que
os está sempre a apanhar com Request.Form(). Caso contrário, e
visto que está tudo certo, o utilizador recebe a resposta em relação
à sua simulação. Esta resposta é dada a partir do código que vemos
a seguir.
79CAPÍTULO 4: OBJECTOS
<%Sub resposta()%>
<%session(“erro”) = “”%>
<div align=”center”>
<center>
<table border=”0" width=”400" bgcolor=”#CED299">
<tr><td width=”100%” align=”left”>
<%idade = DateDiff(“yyyy”, data, Now)
if (idade>10 and idade<28) then%>
<p align=”center”><b><font color=”#800000" face=”Arial” size=”3"><br>
O Aluno</font>
<font face=”Arial” size=”4" color=”#FF0000"><%=nome%></font>
<font color=”#800000" face=”Arial” size=”3"> ,&nbsp;<br>com a média de </font>
<font face=”Arial” size=”4" color=”#FF0000"><%=media%></font>
<font color=”#800000" face=”Arial” size=”3">valores<br>nascido em </font>
<font face=”Arial” size=”4" color=”#FF0000"><%=data%></font>
<font color=”#800000" face=”Arial” size=”3"><br></font>
<font face=”Arial” size=”4" color=”#FF0000">
<% if ((rendimento<=80000)AND(media>11)) then
 mensagem = “ tem “
 else
 if ((rendimento>80000 AND rendimento<100000) AND
(media>13)) then
 mensagem = “ tem “
 else
 if ((rendimento>=100000 AND rendimento<160000) AND
 (media>16)) then
 mensagem = “ tem “
 else
 if (media>18) then
 mensagem = “ tem “
 else
 mensagem = “ não tem “
 end if
 end if
 end if
 end if
 Response.Write mensagem%>
</font>
<font color=”#800000" face=”Arial” size=”3">direito<br>à bolsa de
estudo.<br></font></b></p><br>
<%
 else%>
 <br><center><strong><font face=’ARIAL’ color=’red’ size=’3'>
 Não é possivel concorrer à bolsa de estudo<br> com <%=idade%>
 anos.</font></strong></center><br>
<%end if%>
</td></tr></table>
<br><br><a href=”cpt4-3-3.asp”>repetir a simulação</a>
</center>
</div>
<%End Sub%>
81CAPÍTULO 4: OBJECTOS
Como podemos ver na imagem anterior, a resposta que se obteve
foi negativa, depois de se terem efectuadas as comparações com
os requisitos definidos para a atribuição de bolsa ao estudante.
Teve-se o cuidado de se criar uma tabela com um texto de resposta
por defeito, que só altera as zonas que são correspondentes aos
dados que o utilizador introduziu. Neste caso é usado o DateDiff (),
para que os alunos com uma idade não válida para as bolsas sejam
avisados disso. No caso contrário é enviada a resposta em relação
ao apoio por Bolsa de Estudo.
Introduziu-se um link para o caso do utilizador querer recomeçar a
simulação. Será aqui que tudo recomeçará, tendo em conta que a
variável de sessão tem de estar vazia, ou o último erro continuaria a
aparecer apesar de ser uma nova simulação. Por isso esta função
começa com a sessão de erro a ser limpa, pois para se ter chegado
a este ponto era porque as variáveis estavam correctas.
Depois desta explicação, podemos ver o código por completo, para
percebermos melhor o seu funcionamento.
(ficheiro cpt4-3-3.asp)
<%Sub resposta()%>
<%session(“erro”) = “”%>
<div

Continue navegando