Programação Web Com Active Server Pages

225
C entro A tl â ntic o Pro g r a m a ç ão W eb c o m A SP - A ctiveSe rv e rP a g e s

description

Programação Web Com Active Server PagesProgramação Web com Active Server PagesAutores: João Vieira Nº Páginas: 224 ISBN: 972-8426-21-6 Preço: 19,70 Euros - EsgotadoPreço manuseado: 11,32 euros1ª Edição: Jan/2000Colecção: TecnologiasÍndice1. Introdução às Active Server Pages 1.1 Do Autor 1.2 Requisitos para as ASP 1.3 ASP vs. JavaScript / VBScript 1.4 Instalar o servidor de Internet 1.5 Programar com ficheiros ASP e HTML 1.6 Conhecer o HTML (Hyper Text Markup Language) em 12 passos 1.7 Sites com recursos de ASP 2. Expressões e Operadores 2.1 Os primeiros passos 2.1.1 Exemplo: 'Olá Portugal' 2.1.2 Exemplo: 'Olá Portugal' com variável 2.1.3 Exemplo: Cálculo de variáveis 2.1.4 Exemplo: Código ASP embebido em HMTL 2.2 IF, THEN, ELSE, END IF… 2.2.1 Exemplo: Comparação entre variáveis 2.3 FOR, WHILE, CASE… 2.3.1 Exemplo: Comparação de variáveis com ciclos 2.3.2 Exemplo: Select Case 2.3.3 Exemplo: Contadores ASP embebidos em HMTL 2.3.4 Exemplo: HMTL embebido em contadores ASP 2.4 Variáveis 2.5 Tabela de Operadores 2.5.1 Exemplo: Comparação de variável entre valores 2.5.2 Exemplo: Utilização de todos os operadores 3. Funções 3.1 Tabela de funções base das ASP 3.2 As nossas funções 3.2.1 Exemplo: Nº dias até o ano 2001 3.2.2 Exemplo: Validar o e-mail 3.2.3 Exemplo: Criar uma ComboBox a partir de um array 3.2.4 Exemplo: Criar um gráfico em HTML a partir de um array 3.3 Uso de SSI (Server Side Includes) com as nossas funções 3.3.1 Exemplo: Uso de um ficheiro externo com SSI 3.3.2 Exemplo: Ficheiro com todas as funções 3.3.3 Exemplo: ASP que usa o ficheiro com todas as funções 4. Objectos 4.1 Tabela de Objectos 4.2 Variáveis globais e de sessão 4.3 Interagir com o utilizador 4.3.1 Exemplo: Responder ao utilizador com os dados recolhidos 4.3.2 Exemplo: Validar formulário 4.3.3 Exemplo: Curso online 4.3.4 Exemplo: Protecção de páginas com password 4.4 Ficheiro global.asa 4.4.1 Exemplo: Quantos utilizadores estão a visitar a página 4.4.2 Exemplo: Chat em Browser 4.5 Cookies, dados do utilizador e do servidor 4.5.1 Exemplo: Recolher dados do utilizador 4.5.2 Exemplo: Páginas personalizadas 4.6 Formatação de strings 5. Bases de dados 5.1 Bases de Dados / SQL 5.2 Construir uma base de dados em Microsoft Access 5.3 Conexão à base de dados 5.4 Inserir, apagar e actualizar dados em bases de dados 5.4.1 Exemplo: Inserir dados 5.4.2 Exemplo: Eliminar dados 5.4.3 Exemplo: Actualizar dados 5.5 Apresentação de dados 5.5.1 Exemplo: Listar dados em tabela 5.5.2 Exemplo: Listar dados com imagens 5.5.3 Exemplo: Listar dados a pedido 5.6 Exemplos com bases de dados 5.6.1 Exemplo: Livro de Visitas 5.6.2 Exemplo: Sondagens de opinião 6. Componentes 6.1 Introdução aos Componentes 6.2 Tratamento de ficheiros de texto com o TextStream 6.2.1 Exemplo: História sem fim 6.2.2 Exemplo: Contador de acessos 6.3 Componentes de e-mail 6.3.1 Exemplo: Envio de e-mail com attachment 6.4 Criar componentes em Visual Basic 6 6.4.1 Exemplo: Componente Livro de Visitas 7. Exemplos reais 7.1 Introdução 7.2 A Rã: Motor de Busca 7.3 A Loja: Loja E-Commerce

Transcript of Programação Web Com Active Server Pages

  • Centro Atlntico

    Programao Web com

    ASP - Active Server Pages

  • Joo VieiraCentro Atlntico

    Programao Web comASP - Active Server Pages

    Edies Centro AtlnticoPortugal/2000

  • Reservados todos os direitos por Centro Atlntico, Lda.Qualquer reproduo, incluindo fotocpia, s pode ser feitacom autorizao expressa dos editores da obra.

    Programao Web com Active Server PagesColeco: TecnologiasAutor: Joo VieiraDireco grfica: Centro AtlnticoCapa: Paulo Buchinho

    Centro Atlntico, Lda., 2000Av. D. Afonso Henriques, 1462 - 4450 MatosinhosTel. 22 - 938 56 28/9 Fax. 22 - 938 56 30Rua da Misericrdia, 76 - 1200 LisboaTel. 21 - 321 01 95 Fax 21 - 321 01 [email protected]

    Fotolitos: Centro AtlnticoImpresso e acabamento: Rolo & Filhos1 edio: Janeiro de 2000

    ISBN: 972-8426-21-6Depsito legal: 146.485/00

    Marcas registadas: todos os termos mencionados neste livro conhecidos como sendo marcasregistadas de produtos e servios, foram apropriadamente capitalizados. A utilizao de umtermo neste livro no deve ser encarada como afectando a validade de alguma marca registadade produto ou servio.O Editor e os Autores no se responsabilizam por possveis danos morais ou fsicos causadospelas instrues contidas no livro nem por endereos Internet que no correspondam s Home-Pages pretendidas.

  • Dedico este livro aos meus pais,

    Maria de Jesus S. R. Sousa Vieira,Antnio Tiago Vieira

  • ndice1. Introduo s Active Server Pages

    1.1 Do Autor 121.2 Requisitos para as ASP 131.3 ASP vs. JavaScript / VBScript 151.4 Instalar o servidor de Internet 161.5 Programar com ficheiros ASP e HTML 191.6 Conhecer o HTML (Hyper Text Markup Language) em 12 passos 191.7 Sites com recursos de ASP 23

    2. Expresses e Operadores2.1 Os primeiros passos

    2.1.1 Exemplo: Ol Portugal 282.1.2 Exemplo: Ol Portugal com varivel 282.1.3 Exemplo: Clculo de variveis 292.1.4 Exemplo: Cdigo ASP embebido em HMTL 29

    2.2 IF, THEN, ELSE, END IF2.2.1 Exemplo: Comparao entre variveis 30

    2.3 FOR, WHILE, CASE2.3.1 Exemplo: Comparao de variveis com ciclos 322.3.2 Exemplo: Select Case 332.3.3 Exemplo: Contadores ASP embebidos em HMTL 332.3.4 Exemplo: HMTL embebido em contadores ASP 34

    2.4 Variveis 35

    2.5 Tabela de Operadores2.5.1 Exemplo: Comparao de varivel entre valores 37

    2.5.2 Exemplo: Utilizao de todos os operadores 38

  • 3. Funes3.1 Tabela de funes base das ASP 40

    3.2 As nossas funes3.2.1 Exemplo: N dias at o ano 2001 483.2.2 Exemplo: Validar o e-mail 503.2.3 Exemplo: Criar uma ComboBox a partir de um array 523.2.4 Exemplo: Criar um grfico em HTML a partir de um array 53

    3.3 Uso de SSI (Server Side Includes) com as nossas funes3.3.1 Exemplo: Uso de um ficheiro externo com SSI 563.3.2 Exemplo: Ficheiro com todas as funes 57

    3.3.3 Exemplo: ASP que usa o ficheiro com todas as funes 58

    4. Objectos4.1 Tabela de Objectos 62

    4.2 Variveis globais e de sesso 65

    4.3 Interagir com o utilizador4.3.1 Exemplo: Responder ao utilizador com os dados recolhidos 724.3.2 Exemplo: Validar formulrio 734.3.3 Exemplo: Curso online 814.3.4 Exemplo: Proteco de pginas com password 88

    4.4 Ficheiro global.asa4.4.1 Exemplo: Quantos utilizadores esto a visitar a pgina 1004.4.2 Exemplo: Chat em Browser 102

    4.5 Cookies, dados do utilizador e do servidor4.5.1 Exemplo: Recolher dados do utilizador 1054.5.2 Exemplo: Pginas personalizadas 107

    4.6 Formatao de strings 108

  • 5. Bases de dados5.1 Bases de Dados / SQL 114

    5.2 Construir uma base de dados em Microsoft Access 117

    5.3 Conexo base de dados 122

    5.4 Inserir, apagar e actualizar dados em bases de dados5.4.1 Exemplo: Inserir dados 1275.4.2 Exemplo: Eliminar dados 135

    5.4.3 Exemplo: Actualizar dados 137

    5.5 Apresentao de dados5.5.1 Exemplo: Listar dados em tabela 1425.5.2 Exemplo: Listar dados com imagens 1445.5.3 Exemplo: Listar dados a pedido 146

    5.6 Exemplos com bases de dados5.6.1 Exemplo: Livro de Visitas 148

    5.6.2 Exemplo: Sondagens de opinio 152

    6. Componentes6.1 Introduo aos Componentes 156

    6.2 Tratamento de ficheiros de texto com o TextStream6.2.1 Exemplo: Histria sem fim 1596.2.2 Exemplo: Contador de acessos 163

    6.3 Componentes de e-mail6.3.1 Exemplo: Envio de e-mail com attachment 164

    6.4 Criar componentes em Visual Basic 66.4.1 Exemplo: Componente Livro de Visitas 173

    7. Exemplos reais7.1 Introduo 1827.2 A R: Motor de Busca 1837.3 A Loja: Loja E-Commerce 197

  • Rece

    Re

    PPPPPea gratuitamente o seu ea gratuitamente o seu ea gratuitamente o seu ea gratuitamente o seu ea gratuitamente o seu e-booke-booke-booke-booke-book

    Receba gratuitamente, por e-mail, a versodigital (e-book) deste livro, para poder utilizar

    todos os programas sem ter que os re-escrever.Para tal, envie a cpia da factura deste livro

    para o Centro Atlntico, para o [email protected] ou por correio para,

    Centro AtlnticoAp. 413

    4760 V. N. Famalico

  • 11Introduos Active ServerPages

    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 MarkupLanguage) em 12 passos 19

    1.7 Sites com recursos de ASP 23

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES12

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    1.1 Do AutorEscrevi este livro, acima de tudo, para dar algum apoio a todosaqueles que querem iniciar-se neste tema de programao Internetdo lado do servidor. Quando comecei a pesquisar estes assuntos,h alguns anos, a realidade era muito diferente para conseguirprogramar neste tipo de sistemas. Seria necessrio um servidor (comcertos requisitos), e conhecimentos bastante mais avanados deprogramao. A definio de pginas dinmicas na altura, consistiana existncia de ficheiros executveis do lado do servidor que criavampginas HTML consoante o que o utilizador procurava, e que limitavabastante os tipos de pesquisa. Quando o Perl (para programaode pginas dinmicas) apareceu, o panorama mudou, e as facilidadesdeste tipo de programao comeavam. Mesmo assim, a Microsoftapareceu com os IDC (Internet Database Connector), que apesarde serem de mais fcil compreenso no eram to potentes a nvelde desenvolvimento.

    Mais tarde, apareceram as ASP, que deram uma grande (e boa)viragem na programao do lado do servidor. O programadorcomeava a ter uma linguagem potente e flexvel onde podiadesenvolver o mais variado tipo de servios e de solues.

    Quando comecei a trabalhar nesta linguagem estava-se a fazer atransio do sistema IDC para as ASP. As facilidades das mesmasderam-me hiptese de as poder experimentar onde quer que fosse.Mesmo assim, os recursos a nvel de manuais e pginas Interneteram 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, cdigo e ideias. Com estesuporte on-line e alguma ajuda de programadores de todo o mundo,comecei a desenvolver pginas, e tudo foi correndo normalmente.Quando me senti preparado comecei a escrever artigos para estesmesmos 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 querementrar nesta rea, e tentar que o caminho para o domnio das ASPseja o menos dificultado possvel. Este livro est separado por cap-tulos; cada captulo est estruturado por uma parte do sistema dasASP, e foi dada uma ordem a estes, para que os temas estivessemordenados por nveis de dificuldade. No final deixo alguns exem-plos, que sei iro ser muito teis a todos aqueles que querem algo

  • 13CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    mais que tpicos e artigos. Estes exemplos para os iniciados neces-sitam de uma compreenso de todos os temas abordados nestelivro, mas os programadores mais avanados podem ir directamen-te para os exemplos, e recorrer ao manual para entenderem ou re-verem alguns aspectos da programao com ASP. Espero que estelivro sirva para aquilo que o leitor est procura, pois quando eucomecei se tivesse tido este manual, metade dos meus problemastinham sido resolvidos muito mais depressa. Para me ajudar nostemas tenho os problemas que normalmente recebo todas as se-manas de vrios pontos do planeta, que me do uma ideia daquiloque os programadores mais precisam quando comeam a trabalharcom esta tecnologia.

    1.2 Requisitos para as ASPASP a abreviatura de Active Server Pages. ASP so pginasdinmicas para a Internet, que usam uma linguagem de programa-o ao estilo do VB (Visual Basic). Para quem est familiarizadocom o VB no lhe ser difcil entender este cdigo, pois as rotinasde scripting de ambos os sistemas so quase idnticas e seguemas mesmas regras. Se alm do VB, tiver slidos conhecimentos deHTML (Hyper Text Marked Language), rapidamente estar prepara-do para programar sobre este sistema a um bom nvel depois dedominar os tpicos deste manual. Mesmo que no domine o HTML,poder ler o captulo 1.6 onde esto indicados alguns dos principaiscomandos (chamados Tags) do mesmo.

    Este sistema foi o segundo adoptado pela Microsoft para a criaode poderosos sites dinmicos com acesso a bases de dados. Oprimeiro sistema foi o de IDC que usava um sistema de dois fichei-ros, um com o cdigo HTML (HTX) que continha rotinas de chama-da de ficheiros IDC, que por sua vez tinham as declaraes de SQLpara acesso s bases de dados. No era to flexvel, era mais lentode se programar, e tinha certos requisitos de programao algo di-ferentes das ASP.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES14

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    Fig. 1.1 - Esquema geral do funcionamento das ASP

    No existem requisitos em relao aos browsers a usar para acederaos sites criados em ASP, pois todo o cdigo interpretado peloservidor de Internet, e aquilo que chega ao utilizador final puroHTML gerado pelas ASP. Com a experincia, e futuros testes, vaientender todos estes aspectos que tenho vindo a mencionar.

    A nvel de hardware, o programador tanto pode ter o seu computa-dor pessoal em casa para trabalhar nos exemplos deste livro, comotrabalhar directamente no prprio servidor online. O importante que a partir do momento que disponibilize a sua pgina online, opteem vez do PWS (Personal Web Server), pelo IIS (Internet InformationServer), pois este mais seguro, mais potente, e suporta melhormltiplos sites, alm de que para controlar os acessos, configurar econtrolar o seu servidor de Internet necessita mesmo do IIS (porisso indicado para situaes a nvel profissional). Todo o cdigo que criado em PWS funciona em IIS, quando no so usados compo-nentes externos (DLL); a partir desse momento necessrio insta-lar os mesmos na mquina para onde se est a exportar o cdigo.

    De outra forma, basta o leitor copiar os ficheiros que criou para umou outro sistema, que o mesmo aceita e interpreta da mesma ma-neira. Claro que tem de ter em ateno outros aspectos como alocalizao das bases de dados, as suas conexes, e componentesextra (tudo isto visto nos prximos captulos).

  • 15CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    1.3 ASP vs JavaScript/VBScriptMuitas pessoas perguntam Qual a diferena entre as ASP e oJavaScript? Ou o VBScript? Ou mesmo o to potente Java?.

    Bem, as diferenas so bastantes, no s falando das ASP, mastambm 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 hiptese do Javafuncionar tambm a nvel do servidor com servlets) as ASP funcio-nam no servidor. Uma boa maneira de notar esta diferena entre asASP e o JavaScript/VBScript, olhando para as instrues de pro-gramao de ambos. Quando estamos no nosso browser e vamosver o source de um ficheiro com JavaScript ou VBScript, vemos todoo cdigo, e da vem o problema desse cdigo poder ser usado ile-galmente por outro programador - situao muito usual. Com asASP, ao tentar aceder ao cdigo, s se v puro HTML, pois as ASPso tratadas e processadas no servidor de Internet que por sua vezenvia a formatao online toda em HTML.

    O cdigo de JavaScript facilmente identificado no meio do cdigoHTML, sendo a sua estrutura a seguinte:

    { history.go(-1);}

    Este exemplo est a simular o boto de recuo do browser, fazendocom que seja recuada uma pgina. Normalmente este cdigo usa-do na seguinte situao (pelo menos aquela em que o uso mais):

    Voltar Atrs

    O VBScript no final de contas o cdigo base das ASP, mas quecorre no lado do cliente:

    formatcurrency(10000)

    Este cdigo formata o valor 10000, para que fique 10.000$00.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES16

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    Com o Java o problema diferente, muito pesado, nem todos osbrowsers o suportam, e a sua programao dispendiosa, e tomamuitos recursos, que a fazem ideal para outros campos. Este foiento posto de parte por todos aqueles que querem sites com rpi-do acesso a bases de dados, e flexveis, no s na programaomas tambm na utilizao (interface com o utilizador), onde as ASPe linguagens semelhantes tm vindo a dominar todo o mercado. Ese formos a ter em conta o que aceder a bases de dados online,poderemos ver que todos os servios online tm de aceder a essasmesmas estruturas, para poderem praticar o chamado e-commerce,que veremos tambm neste manual.

    1.4 Instalar o servidor de InternetO servidor de Internet bastante fcil de instalar e a documentaoda Microsoft que vem com o pacote do software bastante explci-ta. Mesmo assim vou s indicar alguns pontos para a instalao dosoftware.

    Se est a pensar em instalar um servidor de Internet para ter pgi-nas online, a opo certa o WindowsNT com o Option Pack 4 (deonde vem o IIS 4) e se possvel com o Service Pack 4 ou 5 doWindowsNT. Se quiser usar sistemas mais recentes pode tambmusar o Windows 2000, que vem mais seguro no aspecto dos sitesque fiquem sob sua alada e trs j o IIS 5.

    As grandes diferenas no IIS 5 sero no aspecto do uso de cdigo ealguns objectos novos, que no so bem novos, mas sim melhora-mentos de alguns j usados anteriormente. A nvel de performanceessa ser melhor pois os cabealhos de HTTP (a informao que recolhida pelo browser, enviada pelo servidor) quando possvel soenviados comprimidos, permitindo uma reduo de tamanho de in-formao. Ter alguns wizards para instalao de sites, e um gran-de avano que o programador no ter de se preocupar com asextenses dos ficheiros, podendo colocar cdigo ASP em qualquerlado, pois o novo servidor vai detectar as diferenas. Existir umamaneira mais prtica de redireccionamento de pginas, poder serexecutado cdigo dinamicamente (do tipo o utilizador ter uma pgi-na online para testar scripts no momento), melhor controlo de com-ponentes, e o mais importante de todos, a hiptese de se criarem eusarem classes, sistema usado por programadores em ambientesde programao orientada por objectos.

  • 17CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    Caso contrrio, o PWS para o Windows 98 uma boa escolha poispesa menos no computador e ser o suficiente para criar as ASPque ir usar futuramente no Windows NT. Eu indicaria ento queinstalasse tudo o que vem no pacote (PWS ou IIS), as consolas degesto, o transaction server, os exemplos, o ADO (Access DataObects), todos os componentes que vierem em resumo, tudo oque for possvel instalar. Perceber durante a leitura deste manual oporqu desta indicao, e com a sua especializao nesta matriaao longo da sua vida profissional tambm o entender.

    O directrio onde as pginas vo ficar instaladas pode ser aqueleque o programador quiser, mas aconselho vivamente a utilizar oque est por defeito c:\inetpub\wwwroot\, e a partir do interior destegerir todas as pginas que quiser criar. No apague os ficheiros queele criar, principalmente um chamado global.asa, que iremos tratarmais adiante.Depois de todo o sistema instalado tem de activar o servio deInternet. No PWS basta ir ao Personal Web Server e carregar emStart (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 boto de run.

    Fig. 1.2 - Aspecto da consola do PWS

    Como se pode verificar na figura 1.2, o servidor virtual criado pordefeito o nome que se deu ao computador, variando por isso demquina para mquina. No meu caso ser jvpc. Assim, quando forpreciso aceder ao servidor virtual, poder-se- fazer no browser atra-vs de http://jvpc/ ; aparecer-lhe-o informaes do PWS, da mesmamaneira que se escrevesse no address link do seu browser localhost.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES18

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    Fig. 1.3 - Pgina principal do servidorInternet PWS, depois de instalado

    Mas para os exemplos deste livro eu criei um directrio semi-virtualpara trabalhar os meus ficheiros. Para tal segui os seguintes pas-sos:

    1. Criar um directrio dentro de c:\inetpub\wwwroot\(ex. c:\inetpub\wwwroot\livro\)

    2. Entrar na consola do PWS3. Parar os servios, clicando em Stop4. Clicar no icon da lista da esquerda que tem o nome de

    Advanced5. Carregar em Add para se acrescentar novo directrio

    semi-virtual6. Em Directory Fazer browse at ao directrio criado

    na linha 1.7. Em Alias escrever o nome a usar logo a seguir

    de http://nomepc/ (ex. livro)8. Carregar em OK9. Na lista do lado esquerdo, carregar em Main10. Reiniciar os servios de Internet, carregar em Start11. Fica ento instalado o primeiro servidor virtual Internet

    no seu PC (ex. http://pcnome/livro/)

    No se esquea de que os ficheiros de ASP s funcionam dentro dodirectrio que criado para esse destino, e configurado por defeitoou por si. Mas tudo isto est acessvel nos manuais do software.Irei ento comear a demonstrar o aspecto do cdigo HTML.

  • 19CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    1.5 Programar com ficheirosASP e HTML

    As extenses dos ficheiros ASP *.asp, e dos ficheiros HMTL *.htmlou *.htm

    Conforme a verso do servidor Internet, o programador poder defi-nir quais as extenses a usar e para que tipo de ficheiro. Poder atpersonalizar os ficheiros ASP, fazendo com que passem a ser *.xyz

    Como estes tipos de ficheiros no so 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 extenses refe-ridas. Normalmente so usados editores Freeware, que se podemencontrar na Internet, ou outros mais profissionais como o InterDevda Microsoft. Acho que cada um deve tentar todos os que puder,para fazer a escolha que esteja mais apropriada sua maneira deprogramar.

    1.6 Conhecer o HTML (HyperText Markup Language) em12 passos

    Para se programar as ASP, sero necessrios certos requisitos, nos a nvel de hardware como de conhecimento a nvel de programa-o. Falo do HTML, que necessrio como base para um bom en-tendimento de tudo aquilo que descrito neste manual. Para issodescreverei alguns comandos do HTML, que de linguagem de pro-gramao tem muito pouco, visto que se poderia comparar a algunsprocessadores de texto bastante antigos (quem se lembrar doWordStar sabe ao que me refiro!).

    Vou ento indicar 12 pontos essenciais em relao ao HTML, paraque o leitor fique melhor preparado para o que vai ler nos prximoscaptulos, onde se misturar HTML com o cdigo ASP.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES20

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    1. O cdigo HTML que aparece no browser fica sempre entre duasTags - Tags so os comandos que esto entre os smbolos

    .

    2. Como deve ter reparado, todas as Tags que comeam com tm de acabar com uma barra . Nemtodas o requerem, mas podemos dizer que cerca de 90% sim.

    3. Para enviar contedo para o browser de maneira a ser visvelpelo utilizador, basta escrever:

    ISTO UM TESTE

    4. Para mudar-se os parmetros dos textos escritos usada a Tag, onde poder mudar o tamanho das letras, a cor e atmesmo o tipo de letra:

    ISTO UMTESTE

    5. Para simular um pargrafo existe a Tag

    ISTO UMTESTEE ISTO J OUTRO TESTE

  • 21CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    6. A mudana de linha feita com que funciona como queum Enter no mesmo pargrafo:

    ISTO UMTESTEE ISTO J OUTRO TESTE

    7. Para se criar tabelas usamos , onde simbolizam as linhas, e as colunas dessa mesma li-nha:

    ESTA A PRIMEIRA LINHA, PRIMEIRA COLUNA ESTA A PRIMEIRA LINHA, SEGUNDA COLUNA

    ESTA A SEGUNDA LINHA, PRIMEIRA COLUNA ESTA A SEGUNDA LINHA, SEGUNDA COLUNA

    8. Quando queremos introduzir comentrios ao cdigo usamos. D muito jeito quando o cdigo HTML muito extenso,comentando assim o que est criado em vrios pontos do script:

    ISTO SIM, J APARECE NO BROWSER

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES22

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    9. Quando necessrio um script, para funcionar do lado do clientetipo JavaScript ou VBScript usa-se a Tag

    ISTO SIM, J APARECE NO BROWSER

    .

    10.Uma das maneiras de recebermos dados do utilizador atravsde formulrios. Podemos usar o mtodo POST ou GET, que serodefinidos para o tipo de programao com dados dos utilizadoresvia ASPs. Estes so estruturados da seguinte maneira:

    O seu nome:O seu telefone:

    11.Para ter um texto que vai ter a outra pgina, tem de fazer o linkcom a Tag

    O seu nome:O seu telefone:

    Pode seguir por aqui

  • 23CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    12. Para mostrar uma imagem no browser use a Tag

    Ficam assim demonstrados os passos que julgo serem os bsicosessenciais do HTML, para compreender parte daquilo que vai serdemonstrado neste manual. A linguagem HMTL bastante simplese limitada. Uma boa observao a outros sites pode fazer maravi-lhas aos seus conhecimentos de HMTL ;-)

    Quando estiver no captulo dos exemplos deste manual, e se noestiver a perceber o cdigo de HTML volte a consultar este captuloonde se introduziram as Tags que poderiam causar mais dvidas. Amaioria das outras Tags e opes so quase bvias aquando dasua traduo para portugus.

    1.7 Sites com recursos de ASPPoderia enumerar muitas dezenas de sites com recursos a nveldas ASP, alguns dos quais eu ainda recorro. Mas vou indicar aque-les que julgo valerem mesmo a pena, no apenas pelo contedoque tm, mas tambm pela maneira como apresentam o contedoe o organizam:

    www.activeserverpages.comEste o site Pai das ASP. Tersido em princpio o primeiro re-lacionado com este assunto.Tem muitos exemplos explica-dos, e vrios truques paraaquelas dificuldades que voaparecendo enquanto progra-mamos. actualizado periodi-camente h muito tempo.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES24

    Verso digital, individual, licenciada em Fev/2000, pelo Centro Atlntico, da verso 1.0 do livro 'Programao Web com ASP'

    www.15seconds.comEste tambm daqueles quetodos os que esto dentro doassunto conhecem. Tem mui-tos artigos, de vrios tipos, eum motor de busca que vaipesquisar vrios sites de ASP.

    www.swynk.comEste site, no incio, era dosmelhores, tinha muita informa-o e muito bem estruturada.Est vocacionado para tudo oque tiver a haver com WindowsNT, e devido ao IIS4 tambmtem muito bons artigos de ASP.Tenho uma coluna minha l,onde poder recolher algumasideias de ASP.Este site cresceu muito, e mui-to depressa, por isso julgo sera causa dos atrasos na suaactualizao.

    www.4guysfromrolla.comIndiscutivelmente um site a noperder. Foi tambm graas aeste site que consegui alcan-ar os objectivos, nas empre-sas onde trabalhei com ASP.Tem muita informao, artigose cdigo. Se por l passar vainotar que tenho l alguns arti-gos.

  • 25CAPTULO 1: INTRODUO S ACTIVE SERVER PAGES

    www.asphole.com um grupo de sites, que sededicam s ASP, tem tambmmuitos recursos, apesar de es-tarem a ser ultrapassados porsites mais recentes como oAspin.

    www.aspin.comEste site bastante recente ej cheguei a visit-lo quase to-dos os dias. Est muito bem or-ganizado e tem bastantes te-mas por onde pode pesquisar.

    www.asptoday.comEste daqueles sites quequando comear a programarASPs com alguma assiduida-de ir com certeza visitar. Elesobrigam os seus autores a es-creverem os artigos em exclu-sividade, sendo por isso da-queles sites onde os artigos lpublicados no so lidos emmais lado nenhum.

  • 22Expresses eOperadores2.1 Os primeiros passos

    2.1.1 Exemplo: Ol Portugal 282.1.2 Exemplo: Ol Portugal com varivel 282.1.3 Exemplo: Clculo de variveis 292.1.4 Exemplo: Cdigo ASP embebido

    em HMTL 29

    2.2 IF, THEN, ELSE, END IF2.2.1 Exemplo: Comparao entre variveis 30

    2.3 FOR, WHILE, CASE2.3.1 Exemplo: Comparao de variveis

    com ciclos 322.3.2 Exemplo: Select Case 332.3.3 Exemplo: Contadores ASP

    embebidos em HMTL 332.3.4 Exemplo: HMTL embebido em

    contadores ASP 34

    2.4 Variveis 35

    2.5 Tabela de Operadores2.5.1 Exemplo: Comparao de varivel

    entre valores 372.5.2 Exemplo: Utilizao de todos

    os operadores 38

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES28

    2.1 Os primeiros passosPara comear irei demonstrar-lhe, em apenas uma linha, comopoder escrever uma frase; depois veremos o mesmo no HTML,com variveis e aces entre variveis. Isto ainda antes de definir osobjectos, mtodos, expresses, funes e regras das ASP. Tereicomo princpio que o leitor tem conhecimentos de HTML, visto ser abase de toda esta programao (programao Internet).

    (ficheiro cpt2-1-1.asp)

    Vemos aqui algo que nos salta vista e que so os . Como sepode facilmente verificar, estes so os identificadores de onde co-mea e acaba a ASP que foi construda, pois quando introduzirmoscdigo entre o HTML, teremos de definir onde esto as ASP, e estesindicadores sero determinantes para esse propsito. Response um objecto das ASP que conta com bastantes mtodos. Este e oobjecto Request vo ser sem sombra de dvidas aqueles com queir trabalhar mais. Encontra uma tabela no captulo seguinte com osobjectos principais e seus mtodos de maneira que sempre quenecessitar os possa encontrar mais rapidamente consultando a ta-bela.

    (ficheiro cpt2-1-2.asp)

    Este segundo exemplo demonstra uma abordagem diferente mascom o mesmo resultado no browser. Aqui pretendo demonstrar amaneira como se fazem ligaes com o smbolo &

  • 29CAPTULO 2: EXPRESSES E OPERADORES

    Fig 2.1 - Resultado dos ficheiroscpt1-4-1.asp e cpt1-4-2.asp

    Se quisermos usar variveis numricas, e calcular algo com elas,temos ento o exemplo seguinte:

    (ficheiro cpt2-1-3.asp)

    Como j deve ter verificado, este tipo de linguagem usa variveis(tambm elas dinmicas) que no necessitam de inicializao, po-dendo ser criadas em qualquer momento. Apesar de haver umamaneira em que o obrigado a fazer (com Explicit) mas s se as-sim o definir. Outro ponto bastante agradvel de que no necessitade marcadores para definir o final de cada linha. Por exemplo, ema=10. No necessrio ponto e vrgula ou outro qualquer marcadorpara terminar uma linha de cdigo.

    (ficheiro cpt2-1-4.asp)

    Eu hoje fui , para o Alentejo

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES30

    Neste exemplo foi feito aquilo que de mais normal vai ser feito noresto deste manual - usar as variveis geradas ou no nas ASP eintroduzi-las no meio do cdigo HTML. Repare no truque para que avarivel fique entre o HTML. No foi necessria a rotinaresponse.write, sendo ento introduzido apenas o caracter deigualdade seguido da varivel.

    A plica usada para comentar, sempre que quisermos introduziralgum comentrio ao cdigo. Neste livro vamos us-la com frequn-cia para dar explicaes adicionais de algumas situaes a nvel deprogramao.

    Julgo que com estes exemplos o leitor ficou a perceber como seestrutura de um modo geral a programao em ASP.

    2.2 IF, THEN, ELSE, END IFVamos ento iniciar alguma programao bsica e essencial, aquiloque une toda a programao, e que so os operadores e asexpresses. Vou comear pelas expresses, e deixar uma tabelade operadores para o final deste captulo (visto que so bastantepoucos). Entretanto estes vo sendo usados nos prximos exemplos.

    (ficheiro cpt2-2-1.asp) b then response.write a maior que b end ifend if%>

  • 31CAPTULO 2: EXPRESSES E OPERADORES

    A expresso IF, foi aqui usada para que em conjunto com o operador< , fizessem uma comparao. A mensagem que vai ser enviadapara o browser, depende dos valores a e b. O IF tem uma estruturasimples:

    IF (ALGO) THEN (FAZ MAIS ALGO)END IF

    Ou quando as opes so vrias:

    IF (ALGO) THEN (FAZ ALGO)END IFIF (ALGO2) THEN (FAZ ALGO2)END IFIF (ALGO3) THEN (FAZ ALGO3)END IF

    Mas se as opes esto em cadeia, e se uma acontecer, as outrastm de ficar anuladas. Teremos de usar a expresso ELSE:

    IF (ALGO) THEN (FAZ ALGO) ELSE IF (ALGO2) THEN (FAZ ALGO2) ELSE IF (ALGO3) THEN (FAZ ALGO3) END IF END IFEND IF

    Este tipo de expresses d muito jeito aos programadores, masquando existem vrias opes em cadeia, eu sugiro que se use aexpresso CASE; fica melhor organizado, e as confuses dentro docdigo so bastante menores. Estas pequenas regras que vou es-crevendo neste manual, no so propriamente para serem segui-das religiosamente. Se calhar o leitor nem vai ter muitos problemas,mas quando o cdigo comea a ficar muito extenso, o programatende a ficar confuso. Notar isso se l voltar ao fim de uns mesespara fazer manuteno (muito comum em sites na Internet).

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES32

    2.3 FOR, WHILE, CASEAs expresses de repetio, usadas pelas ASP, so conhecidas dequalquer programador, no sendo por isso algo que precise de umaespecial ateno para as tentar perceber.

    (ficheiro cpt2-3-1.asp)b then I = a While b

    Neste caso aproveitei cdigo de um exemplo inteiro, para lhe darmais umas linhas com este ciclo WHILE. Inicialmente faz-se a pri-meira comparao, que se repetir enquanto a mesma for vlida.Neste caso enquanto b for menor que I, o ciclo (loop) vai sendo con-cretizado.

    A minha expresso de repetio favorita, a CASE, muito flexvel erpida. Por mais tarde que eu volte a mexer no cdigo, fico a sempreperceber o que l se passa em minutos.

  • 33CAPTULO 2: EXPRESSES E OPERADORES

    (ficheiro cpt2-3-2.asp)

    Neste case a comparao feita por hipteses em funo de umaresposta (varivel resposta), tendo-se ateno mesma, iremos fa-zer uma comparao com as hipteses possveis (1, 2, 3 e 4 so asnicas possveis) e executar a declarao correspondente (se acer-tou ou se no acertou).

    (ficheiro cpt2-3-3.asp)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES34

    Fig. 2.2 - Resultado do ficheiro cpt2-3-3.asp

    (ficheiro cpt2-3-4.asp)

  • 35CAPTULO 2: EXPRESSES E OPERADORES

    2.4 VariveisNas ASP, as variveis so tambm, como no Visual Basic, dinmi-cas, no sendo por isso necessria a sua inicializao. Seja comofor, m programao usar variveis globais sem controlo sobreas mesmas. Deve-se usar, mas no em excesso, assim como sedevem sempre inicializar as mesmas, no s para melhor controlo,mas tambm para melhor performance. Para que no se desleixecom as variveis, use o cdigo no incio de cadapgina para que tenha de inicializar sempre as variveis. Assim, asalocaes de memria, para as variveis dinmicas, sero feitascom uma melhor estrutura, ficando por esse motivo beneficiado odesempenho das suas pginas.

    Para inicializar uma varivel em ASP basta usar Dim . Para criar-mos a varivel xpto usamos ento

    Temos nas ASP, alguns tipos de variveis a considerar:

    - variveis usuais (usadas no momento, e que, como sodinmicas, podem ser criadas a qualquer altura seminicializao das mesmas; podemos incluir os arrays neste gru-po, que podem ser passados para as variveis de sesso).Normalmente quando as inicializamos usamos a expressoDim varivel

    - variveis Application (usadas como globais no site pois to-dos os utilizadores tm acesso mesma);

    - variveis de sesso/Session (usadas para acompanharemtoda uma sesso de acesso por parte de um utilizador, mas sacessveis por este, e no por todos como as de Application).

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES36

    2.5 OperadoresApesar de j terem sido praticamente todos usados neste captulo,vou ento deixar uma pequena tabela dos operadores, para refern-cia.Os operadores de comparao e igualdade so os seguintes:

    TIPO DE OPERADOR DESCRIO

    = 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

    = x

    Diferente de if a b while c x

    Estes so os operadores principais das ASP, e ser com estes queiremos trabalhar ao longo deste manual. Estes operadores no se-ro usados nica e exclusivamente no cdigo de ASP, mas tambmaquando do uso de declaraes de SQL.

  • 37CAPTULO 2: EXPRESSES E OPERADORES

    Quando queremos fazer comparaes mltiplas podemos ento usarAND ou OR, como nos seguintes casos:

    (ficheiro cpt2-5-1.asp) 9 AND a

    Nos operadores aritmticos temos ento uma outra tabela:

    TIPO DE OPERADOR DESCRIO

    ^ Usado para expoente,(Para o caso de 26, temos nas ASP , (2^6))

    * Multiplicador,(2*5)

    / Diviso para retornar valor singular(a / b)

    \ Diviso inteira(a \ b)

    + Soma( a + b )Este valor tambm funciona paraconcatenao tal como o smbolo &

    - Diferena( a b )

    MOD Resto da diviso( a MOD b )

    Podemos ento demonstrar todos os operadores aritmticos da ta-bela anterior, num ficheiro de ASP.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES38

    (ficheiro cpt2-5-2.asp) & b^a & Response.Write - a*b -> & a*b & Response.Write - c/a -> & c/a & Response.Write - a\b -> & a\b & Response.Write - a-b -> & a-b & Response.Write - a+b -> & a+b & Response.Write - c MOD a -> & c MOD a & Response.Write - st1 + st2 -> & st1+st2 & %>

    E para se perceber um pouco melhor o que est a acontecer nestecdigo, pode recorrer seguinte imagem, que julgo responder aqualquer dvida com que possa ter ficado.

    Fig. 2.4 - Resultado do ficheiro cpt2-5-2.asp

    Estes operadores so muito importantes na medida em que todo otipo de estatsticas, contas, comparaes e clculos extra os irorequerer. No dia a dia, as empresas precisam de certas situaesresolvidas que por vezes no tm soluo nas funes pr-defini-das das ASP, e nessa altura ter de ser o leitor a desenvolver assuas prprias funes, por meio destes operadores de base.

  • 33Funes

    3.1 Tabela de funes base das ASP 40

    3.2 As nossas funes3.2.1 Exemplo: N dias at o ano 2001 483.2.2 Exemplo: Validar o e-mail 503.2.3 Exemplo: Criar uma ComboBox

    a partir de um array 523.2.4 Exemplo: Criar um grfico em HTML

    a partir de um array 53

    3.3 Uso de SSI (Server Side Includes) com as nossas funes

    3.3.1 Exemplo: Uso de um ficheiroexterno com SSI 56

    3.3.2 Exemplo: Ficheiro com todasas funes 57

    3.3.3 Exemplo: ASP que usa o ficheirocom todas as funes 58

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES40

    3.1 Tabela de Funes base das ASPUm dos aspectos que mais se destaca nas ASP so as suasfunes, e a facilidade de manuseamento das mesmas. Existemfunes que facilitam muito a vida a quem faz a programao devrios sites. A recursividade um dos pontos fortes quandoprogramamos, e as funes ajudam nesse aspecto.

    A tabela seguinte, tal como a tabela de objectos que existe no prxi-mo captulo, vo de encontro a tudo aquilo que este manual se refe-re - a programao de potentes sites interactivos e dinmicos. Sera partir deste captulo que o leitor se ir confrontar com exemplosrealmente essenciais para a programao do dia a dia de sites pro-fissionais. Espero que estas tabelas vo de encontro s necessida-des do leitor, que quer procurar rapidamente aquela funo ou ob-jecto que necessita no momento em que est a programar. A tabelaest por ordem alfabtica para facilitar a procura de qualquer umadas funes que possa ser necessria. As funes so da verso2.00 das ASP, pertencente ao VBScript V4.

    TABELA DE FUNES DAS ASP

    Funo Descrio

    Abs() Esta funo serve para devolver nmerosabsolutos, 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 devalores dentro de uma mesma varivel. So muitousados para simplificar actos muito comuns emprogramao, a todos os nveis. Um array constitudo por vrios valores que estoseparados por uma posio. O arrayvariavel(Joo, 3, 1200, Sol), tem 4 posies. Asposies de um array comeam sempre do 0.Para acedermos aos dados que esta tem, bastaindicarmos a posio que nos interessa.Ex. variavel(Joo, 3, 1200, Sol)

    Response.write variavel(0) devolve JooResponse.write variavel(1) devolve 3Response.write variavel(3) devolve Sol

  • 41CAPTULO 3: FUNES

    Asc() Devolve o nmero ASCII de um caracterEx. variavel1 = Asc(C) devolve 67variavel2 = Asc(1) devolve 49

    Atn() Serve para calcular o arco-tangente de um valorEx. Atn(1) devolve 0,785398163397448

    CBool() Retorna True ou False: False se a expresso forfalsa, caso contrrio TrueEx. Cbool(32=32) devolve True

    Cbool(10=32) devolve False

    CByte() Transforma qualquer valor (do tipo no Byte) parao tipo ByteEx. CByte(225.1278) devolve 225

    CCur() Idntico a CByte(), mas neste caso parao tipo de moeda usado.

    CDate() Converte uma expresso que tende para umaData, numa Data validada, no sendo necessriousar IsDate()Ex. variavel1 = Cdate(Dezembro 1, 1990)

    a varivel1 fica com uma data vlida

    CDbl() Converte um valor (do tipo no Double)para o tipo Double

    Chr() Ao contrrio da funo Asc(), esta converte osvalores ASCII para o caracter correspondenteEx. Chr(67) devolve C

    Chr(49) devolve 1

    CInt() Converte um valor (do tipo no Intenger)para o tipo Integer

    CLng() Converte um valor (do tipo no Long)para o tipo Long

    Cos() Devolve o coseno de um ngulo

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES42

    CreateObject() Cria uma referncia a um objecto externoEx.Set Objecto=Server.CreateObject(Projecto.Objecto)

    Csng() Converte um valor (do tipo no Single)para o tipo Single

    CStr() Converte um valor (do tipo no String)para o tipo StringEx. CStr(123) devolve uma string 123

    Date() Devolve a Data corrente no servidor InternetEx. response.write Date()

    DateAdd() Esta funo serve para o programador obter umadata posterior ou anterior quela que pretendeusar para clculo.Podemos querer saber qual o dia referente a 20dias depois da data pretendida, ou 1 ms, ou 2anos.A expresso usa 3 campos, o primeiro paraintroduzirmos o campo de data por onde quere-mos calcular a diferena, o segundo campo parao valor numrico dessa diferena, e no final a datade incio.O campo do caracter que define o tipo de diferen-a aceita as seguintes opes:h horasn minutoss segundosyyyy anosq quarto anualm meses do anoy dias do anod diasw dias da semanaww semanas do anoEx. DateAdd(m, 1, 31-Jan-2000) devolve 29-Fev-2000 DateAdd(d, 1, 31-Jan-2000) devolve 1-Fev-2000

    DateDiff() Devolve a diferena entre duas datas escolhendoum dos campos de comparao explicados emDateAdd()Ex. DateDiff(d, Now, 31-Jan-1999)

    devolve a diferena entre a data de hoje e o dia 31 de Janeiro de 1999

  • 43CAPTULO 3: FUNES

    DatePart() dada uma certa data e obtemos em que alturado ano acontece usando os valores de campo deDateAdd()Ex. DatePart(q, 31-Set-2000) devolve o quarto do ano em que a data se aplica

    DateSerial() Devolve uma data para especificados ano,ms e dia

    DateValue() Devolve uma data vlida daquela que pedida

    Day() Devolve o dia do ms de uma dataEx. Day(31-Set-2000) devolve 31

    Exp() Devolve a exponencial de um valor

    Filter() Pesquisa um array, para procura de umvalor ou expressoEx. variavel1(Internet,Sites,Hosting,Portugal) Filter(variavel1,Si) devolve Sites

    Fix() Devolve o inteiro de um qualquer valorFormatCurrency()Transforma um valor normal numrico

    para valor monetrio.Ex. FormatCurrency(32420) devolve 32.420$00

    FormatDateTime()Funciona como FormatCurrency()mas para datas

    FormatNumber() Formata um nmero da maneira que nos convm

    FormatPercent()Devolve uma percentagem do universo que oprogramador pretendeEx. FormatPercent(23/230) devolve 10,00%

    GetObject() Devolve a referncia a um objecto

    Hex() Transforma um valor para resultado hexadecimal

    Hour() Devolve a hora de uma expressoEx. Hour(Now()) devolve a hora do momento

    InStr() Devolve a posio de uma string dentrode outra a contar do incioEx. InStr(1,Hoje um bom dia para seprogramar, ra) devolve 21

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES44

    InStrRev() Devolve a posio de uma string dentrode outra a contar do fimEx. InStr(1,Hoje um bom dia para

    se programar, ma,35,0) devolve 33

    IsArray() Devolve True ou False em relao a uma varivel,validando-a no caso de ser ou no um array

    IsDate() Devolve True ou False em relao a uma string,validando-a no caso de esta ser do tipo Date ou no

    IsEmpty() Valida uma varivel, para ver se a mesmaest ou no vazia

    IsNull() Valida uma varivel para ver se a mesma Null ou no

    IsNumeric() Valida uma string/valor para ver se o mesmo numrico ou no

    IsObject() Valida um Objecto, certificando-se se o mesmoo ou no

    Join() Junta todas as variveis 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 dimenso de um array

    LCase() Devolve uma string em lower caseEx. LCase(Estamos em Setembro.)

    devolve estamos em setembro.Left() Devolve um certo nmero de caracteres a contar

    do lado esquerdo da stringEx. Left(Vamos programar ASP.,3)

    devolve Vam

    Len() Devolve o tamanho de uma stringEx. Len(Vamos programar ASP.)

    devolve 20

  • 45CAPTULO 3: FUNES

    Log() Devolve o logaritmo de um dado nmero

    LTrim() Devolve uma string sem espaos do lado esquerdoEx. LTrim( Isto um teste.)

    devolve Isto um teste.

    Mid() Serve para termos um nmero dado decaracteres de uma string, a partir de uma dadaposioEx. Mid(Vamos programar ASP., 7, 9 )

    devolve programar

    Minute() Devolve o minuto de uma data/hora

    Month() Devolve o valor correspondente ao ms de umadada dataEx. Month(date())

    devolve o valor do ms em que estiver a testar o cdigo

    MonthDate() Devolve o nome do ms (por extenso)Ex. MonthDate(10) devolve Outubro

    Now() Devolve a data e hora corrente

    Oct() Devolve o valor octal de um dado nmero

    Replace() Altera certo caracter/string por outro dadoEx. replace(yyXiiXppX22fXjX , X , P )

    devolve yyPiiPppP22fPjP

    RGB() Devolve um valor representativo de uma cor. Aexpresso estruturada por RGB(vermelho,verde, azul)Os valores usados vo de 0 a 255Ex. RGB(22,233,143)

    devolve 9431318

    Right() Funciona como a funo Left() mas acontar da direita

    Rnd() Retorna um valor aleatrio

    Round() Faz arredondamento a valores numricosEx. Round(23,77) devolve 24

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES46

    Second() Devolve os segundos de uma dada hora

    Sgn() Devolve o sinal de um valorEx. Sgn(2) devolve 1

    Sgn(-12) devolve 1Sgn(0) devolve 0

    Sin() Devolve o seno de um ngulo indicado

    Space() Introduz um dado nmero de espaos numa stringEx. response.write Teste & Space(12) & Feito devolve Teste Feito

    Split() Divide uma string num array, escolhendo o critriode separaoEx. resultado = Split(IstoKKmaisKumKteste., 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, noque respeita se so iguais ou no.A estrutura desta funo StrComp(var1,var2,tipo)Var1 e var2 so duas strings escolha, o tipopode ser definido por 0 (comparao entrebinrios) ou 1 (comparao entre textos)Ex. var1 = Teste

    var2 = TesTEStrComp( var1, var2) devolve 1StrComp( var1, var2, 0) devolve 1StrComp( var1, var2, 1) devolve 0

    StrReverse() Devolve uma string dada, invertendo-aEx. StrReverse(123456) devolve 654321

    String() Devolve repetidamente um caracter escolhidoum nmero de vezes definidoEx. String(C,10) devolve CCCCCCCCCC

    Tan() Devolve a tangente de um determinado nmero

  • 47CAPTULO 3: FUNES

    Time() Devolve a hora do sistema

    TimeSerial() Devolve uma hora para hora,minuto e segundos especificados

    TimeValue() Devolve uma hora vlida daquela que pedida

    TypeName() Devolve o tipo de varivel que estamos a usarEx. TypeName(ASP) devolve String

    TypeName(12.40) devolve Double.TypeName(NullVar) devolve NullTypeName(ArrayVar) devolve Variant().TypeName(6) devolve Integer

    UBound() Devolve o maior valor da dimenso de um array

    Ucase() Devolve uma string em upper caseEx. LCase(Estamos em Setembro.)

    devolve ESTAMOS EM SETEMBRO.

    VarType() Parecido com TypeName(), mas devolve um valorcorrespondente aos dados da varivel a validar.Os nmeros possveis de resposta so:

    0 Vazio 1 Null2 Integer 3 Long4 Single 5 Double6 Currency 7 Date8 String 9 Object10 Error 11 Boolean12 Variant 13 Data Access Object

    (DAO)17 Byte 8192 Array

    WeekDay() Devolve o dia da semana de uma dada dataEx. WeekDay (Outubro 10, 1999)

    devolve 1 que representa Domingo

    WeekDayName()Devolve por extenso o dia da semana de umadada dataEx. WeekDayName (1)

    ouWeekDayName(WeekDay (Outubro 10, 1999)) devolvem ambas as expresses domingo

    Year() Devolve o ano de uma dada data

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES48

    Apesar da existncia de um nmero considervel de funes nasASP estas vingam no pela quantidade das mesmas, mas sim, nosobjectos que existem. Com os objectos que as ASP disponibilizam,o leitor poder criar potentes funes prprias, ou componentes pa-ra estas em Visual Basic.Este assuntos sero abordados noutros captulos, mas que no te-ro nexo se o leitor no conhecer o funcionamento de procedimen-tos e funes em ASP, ou at mesmo o uso de ficheiros externos.Neste captulo ainda no ir aprender como interagir com o utilizador,mas sim tratar de todo o tipo de dados e/ou variveis que lhe pode-ro aparecer.

    3.2 As nossas FunesO leitor tem acesso a todas as funes disponveis pelas ASP 2.00,e a partir de agora pode definir as suas prprias funes. No es-quecer que as ASP 3.00 vm com o Windows 2000 e o seu IIS5,como indicado no primeiro captulo. Nos prximos casos as fun-es que vo ser criadas sero para situaes que por vezes apa-recem na programao de sites Internet.Neste primeiro exemplo criou-se uma funo que devolve o nmerode dias que faltam at ao ano 2001 a partir de uma dada data.

    (ficheiro cpt3-2-1.asp)

  • 49CAPTULO 3: FUNES

    Foram usadas as seguintes funes:

    IsDate() para nos certificarmos se a dada data tinharealmente um formato vlido de data;

    DateDiff() que retorna o nmero de dias at ao ano 2001(o nmero de dias pois isso que foiestabelecido, aquando do campo d);

    Now() d-nos a data corrente, que incluias horas.

    Como se viu, as funes tm uma estrutura prpria:

    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 funo simples, basta o uso do nomeda funo em qualquer ponto do cdigo.

    No prximo exemplo pretende-se saber se um e-mail vlido. Destamaneira o programa valida algo que perturba muitos programado-res, para tentarem que o input dos utilizadores seja o mais correctopossvel, e os e-mails introduzidos sejam o mais correctos.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES50

    (ficheiro cpt3-2-2.asp)

  • 51CAPTULO 3: FUNES

    Fig. 3.2 - Resultado do ficheiro cpt3-2-2.asp

    Como se pode ver mais nitidamente na figura, os e-mails que foramusados para testar foram validados correctamente, pelo menos den-tro das regras que foram pr-definidas. O leitor pode alterar as re-gras para a validao do e-mail. Outro ponto que por vezes nos toca referente criao dinmica de ComboBox. Estas caixas, usadasem formulrios do HTML, tm um aspecto conhecido por todos osprogramadores: carrega-se num boto que faz aparecer uma listacom vrias opes. Neste exemplo ser criada uma funo paracriar essa caixa (ComboBox) a partir de um array. No captulo debases de dados, esta mesma funo alterada para se poder criarcom dados retirados de uma base de dados real.

    Neste momento criada uma ComboBox. O cdigo HTML sim-ples de se perceber. Em relao ao ciclo FOR, este vai-se repetindoenquanto no chegar ao limite do tamanho do Array com a funoUbound().

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES52

    (ficheiro cpt3-2-3.asp)

  • 53CAPTULO 3: FUNES

    Como se pode ver, foi usada a linha que serve para o programador ter acesso mais facilitado ao cdigoASP, que conhecido como o VBScript do lado do servidor. O IISinterpreta cdigo, e acaba por percorrer todas as linhas, quer te-nham ASP ou no, se indicarmos no nicio do ficheiro de que se tratade um ficheiro com VBScript, a sua performance ser melhorada,mas no essencial o uso desta linha no nicio do cdigo.Algo tambm muito comum so os grficos correspondentes a opi-nies, ou outros, para transmitir informao a partir dos dados embases de dados. No exemplo seguinte pode-se perceber o truque decriar grficos em HTML, que servem para esse mesmo propsito. Ocdigo seguinte bastante explcito nesse ponto. O truque o decontrolar o tamanho das clulas 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)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES54

    Os grficos foram criados de uma maneira mais primria por as-sim dizer, pois existe a hiptese de se utilizar componentes comer-ciais que criam ficheiros de extenso GIF em tempo real com todoo tipo de grficos que se podem encontrar, por exemplo, no MicrosoftExcel. Desta maneira, os grficos so de barras e muito mais rpi-dos a processar.

    Fig. 3.4 - Resultado do ficheiro cpt3-2-4.asp

    Como se pode ver pela imagem, o grfico coerente, e as barraspercebem-se bastante bem. O programador pode controlar melhoro tamanho do grfico, pode usar imagens ou mesmo outras cores.A imagem que podemos ver o resultado do grfico no InternetExplorer (IE). No Netscape o resultado algo diferente, mas issotem a haver com a maneira como esse traduz o cdigo HTML emrelao s tabelas. Mas no resultado percebe-se sempre o mesmo,por isso no existem problemas em usar este tipo de cdigo paragerar grficos de barras.

    3.3 Uso de SSI (Server Side Includes)com as nossas funes

    Os SSI, vo ser certamente algo que o leitor vai usar bastante, poisalm de poder separar o cdigo HTML em vrios ficheiros, e estruturara pgina principal da maneira que lhe convm (dinamicamente), podeter algo como que uma biblioteca de funes prpria. Digamos queo programador tem vrias funes que usa normalmente nos sites

  • 55CAPTULO 3: FUNES

    que mantm, ou que repete bastante nas vrias pginas de ummesmo site. Com os SSI, o programador introduz todas as funesque quer num ficheiro, que por sua vez chamado no incio do cdi-go ASP. A partir da todas as funes desse ficheiro esto acess-veis na programao dessa pgina ASP. Devemos usar os SSI paraaquele tipo de cdigo que sabemos vai ser alterado em vrias pgi-nas. Dessa maneira, bastar alterar uma vez, para que todas aspginas fiquem actualizadas com o novo cdigo.

    A maneira de se chamar um ficheiro dentro de um ASP (uso deSSI), tenha ele parte de cdigo HTML, ou de ASP, . Este cdigo introduzido no cdigo HTML,e no no de ASP. Mas tem de estar num ficheiro de ASP e no no deum de HTML - um pouco confuso! Vejamos ento os seguintes fi-cheiros, criados a partir de tudo aquilo que temos vindo a criar nestecaptulo, e recorrendo ao uso de SSI (chamada de ficheiros exterio-res para complementar a programao).

    Vamos ento criar um ficheiro que tem o nosso topo de pgina HTMLpor defeito. Esse ficheiro ficar com uma extenso diferente (*.inc)para se poder diferenciar dos outros. Pode-se criar HMTL e ASPnesse mesmo ficheiro.

    (ficheiro cpt3-3-1.inc)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES56

    Depois de criado um ficheiro para os topos de todas as pginasASP, criamos um ficheiro como exemplo para usar esse outro. um ficheiro simples, que serve apenas para demonstrar aspotencialidades do uso de SSI.

    (ficheiro cpt3-3-1.asp)

    Aqui poder-se- escrever qualquer cdigo HTML,ou at mesmo de ASP.

    Fig. 3.5 - Resultado do ficheiro cpt3-3-1.asp

    Para perceber melhor a grande vantagem das SSI vamos criar umficheiro ASP com todas as funes que foram criadas neste captu-lo, e us-las todas na mesma pgina, sem termos de ter todo ocdigo das funes na ASP que programamos.

  • 57CAPTULO 3: FUNES

    (ficheiro cpt3-3-2.asp)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES58

    Como foi visto o ficheiro cpt3-3-2.asp tem todas as funes criadasneste captulo. Iremos inclu-lo com a potencialidade dos SSI numaoutra pgina que usaremos para demonstrar as funes. Foi altera-do o nome de um dos arrays, para que no existissem conflitosentre ambas as funes. De futuro, as funes recebem osparmetros, para no nos preocuparmos com este tipo de situa-es. Vemos ento no exemplo a seguir, introduzido atravs de SSI,o ficheiro cpt-3-3-2.asp . Para as ASP como se todo aquele cdigoestivesse presente no ficheiro, tomando todas as funes como lo-cais. A partir deste momento podemos utilizar o ficheiro e todas assuas funes.

    (ficheiro cpt3-3-3.asp)

    Iremos agora ver todos as funes do captulo a funcionar,e no precisamos de as ter neste ficheiro.Desta maneira temo-las em todos os ASP que quisermos sem termos deescrever o cdigo todo de novo, ou de passar o tempono Copy & Paste...

  • 59CAPTULO 3: FUNES

    Viajar Para?

    O resultado na imagem seguinte bastante explcito daquilo que sepretendia. Temos todas as funes a funcionar, e podendo funcionarem todos os ficheiros ASP que o programador tiver para o seu site,com apenas a insero de uma linha de cdigo no topo de cadapgina ASP.

    Fig. 3.6 - Resultado do ficheiro cpt3-3-3.asp

    Agora o leitor poder estender toda a sua programao num s fi-cheiro, pelo menos as funes que acha virem a ser aquelas quemais vai utilizar.

  • 44Objectos

    4.1 Tabela de Objectos 624.2 Variveis globais e de sesso 65

    4.3 Interagir com o utilizador4.3.1 Exemplo: Responder ao utilizador

    com os dados recolhidos 724.3.2 Exemplo: Validar formulrio 734.3.3 Exemplo: Curso online 814.3.4 Exemplo: Proteco de pginas

    com password 88

    4.4 Ficheiro global.asa4.4.1 Exemplo: Quantos utilizadores esto

    a visitar a pgina 1004.4.2 Exemplo: Chat em Browser 102

    4.5 Cookies, dados do utilizador e do servidor4.5.1 Exemplo: Recolher dados do utilizador1054.5.2 Exemplo: Pginas personalizadas 107

    4.6 Formatao de strings 108

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES62

    4.1 Tabela de ObjectosOs objectos que as ASP tm por defeito parecem ser poucos, masos seus mtodos so os suficientes para que o leitor consigaalcanar os objectivos pretendidos para o seu site. A maneira deusar os objectos bastante simples, e intuitiva, funcionando comoos objectos das outras linguagens.

    TABELA DE OBJECTOS DAS ASP

    Objectos Mtodos e suas funes

    Response Redirectusado para redireccionarmos o utilizador paraoutra pgina. Usado normalmente para controlode utilizadores e acessos.

    Cookiesmecanismo para deixar informaes do lado docliente com variada informao (dentro dascookies existem outros mtodos para o seucontrolo, como veremos depois em pormenor).

    Write esta a maneira para enviar informao para obrowser.

    CacheControldesta maneira controlamos se a pgina podedeixar que se faa cache da mesma nosbrowsers (por defeito no deixa fazer cache).

    Charsetuma maneira de definirmos o tipo de caracteresa usar.

    ContentTypepara definir o tipo de informao que vai serpassada, usado normalmente para UpLoad ondedefinimos que queremos passar no s informa-o usual, mas tambm binria, originria deficheiros.

  • 63CAPTULO 4: OBJECTOS

    Expiresuma maneira de definir o tempo que uma pginaficar activa e deixar de estar disponvel. Nestecaso definimos ao fim de quanto tempo expirar.

    ExpireAbsoluteidntico ao Expires, com a diferena que se podecontrolar, no com o valor que define ao fim dequanto tempo, mas sim com uma data quedefine a altura em que deixa de estar disponvel.

    IsClientConnected desta maneira controla-mos se o cliente ainda est ligado.

    Statusdefine o cdigo que est no HTTP header.

    AddHeaderAjusta dinamicamente a informao que est noHTTP header.

    Request Cookiesneste caso ser usado para ir buscar os cookiescriados com o objecto response.

    Querystringdesta maneira poderemos obter os valores que vmda pgina anterior, depois de submetermos umformulrio com o mtodo GET.

    Formeste mtodo permite-nos obter os dados enviadospor um formulrio que esteja com o mtodo POST.

    ServerVariablesusa-se muito este mtodo para identificar os tiposde browsers que o cliente est a usar, os IPs domesmo, a pgina de onde o cliente veio, assimcomo variadas informaes sobre o servidor queest a ser usado.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES64

    Server HTMLEncodeo mtodo que formata a informao que o utilizadorinsere. Esta formatao muito importante devidoa alguns smbolos serem reconhecidos pelo HTML,e por esse motivo o layout pode no ter o aspectoplaneado

    URLEncodeparecido com o HTMLEncode, mas formata a stringde maneira a ser vlida para usar na linha deaddress dos browsers.

    CreateObject esta a maneira como iremos aceder a objectosexteriores, assim como componentes criados porns ou outros. Os componentes de ASP so fi-cheiros de extenso DLL, especiais para os ASPs,possveis com o VB ou o VC++ (Visual C++). MapPath com este mtodo que trabalharemos os nossosficheiros localmente (no servidor).

    Session Timeoutas sesses do servidor tm um limite, ao fim doqual toda a informao contida nas sessionsdesaparecem. Desta maneira poderemoscontrolar o tempo que as sesses esto activas.

    SessionIDeste o mtodo que nos d o numero da sessodo cliente corrente. So uma espcie deimpresso digital das sesses.

    Abandonfora a finalizao das sesses.

    Application A varivel global, mas idntica para todos osutilizadores, ao contrrio das sessions que sovariveis do tipo global, mas s para o cliente queest nessa sesso.

    TextStream CreateTextFilemtodo de criao de ficheiros de texto. OpentextFilemtodo de leitura dos ficheiros de texto.

  • 65CAPTULO 4: OBJECTOS

    A estrutura de um objecto e seu mtodo do tipo objecto.mtodo,logo, para criar-mos, por exemplo, um cookie, usamosresponse.cookies, e para obter o valor introduzido na cookie, usare-mos ento request.cookies.Depois de se ver esta tabela, muitas questes ficam no ar, em rela-o a vrios mtodos que aqui descrevemos. A sua grande maioriavai ser aprofundada nos prximos captulos, mas iremos tratar algunsdeles ainda neste captulo, assim como desenvolver exemplos reaisde como usufruir ao mximo destes objectos.

    4.2 Variveis globais e de sessoAs variveis globais/sesso, sero uma das hipteses que o pro-gramador ter para poder passar dados de base de uma pginapara a outra. Normalmente quando se passa de uma pgina paraoutra, as variveis da primeira pgina deixam de funcionar numasegunda. A maneira de ultrapassar este obstculo usando os ob-jectos Application e Session. Apesar de ambos os objectos seremusados para variveis globais, cada um tem um objectivo diferente,e um comportamento diferente dentro do contexto da programaode pginas ASP. Para o leitor perceber como ambas funcionam ex-plica-se ento como funciona o servidor de Internet que suporta asASP:

    O servidor Internet faz um controlo de acessos s pginas que con-tm sob sua alada, e por isso cria um ID para cada acesso HTTPque feito na mquina onde est instalado e a correr. Desta forma oservidor consegue fazer uma estatstica mais pormenorizada, que agrande maioria dos outros no conseguem. A partir do momentoque o programador tem acesso a este ID, poder seguir o rasto(pormenorizado) daquilo que esse utilizador faz, dentro do site. O IDde sesso, que pode aceder-se por session.sessionID, termina epassa a ser outro a partir do momento que o browser desligado, ouque passa o tempo limite de uma sesso, que se pode aceder porsession.TimeOut . Cada pessoa que est a aceder ao site tem umID diferente, assim como que cada sesso diferente, podendo oprogramador usar as sesses, para passar de variveis de umapgina para outra, visto que a ligao apenas se quebra no desligardo browser, ou no atingir do limite de tempo das sesses. Pode-sever pelo cdigo seguinte o ID de uma sesso e o tempo limite queest por defeito no servidor.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES66

    (ficheiro cpt4-2-1.asp)

    Foram usadas os seguintes objectos:

    Response.Write objecto usado para escrita, tanto emcookies, browser, headers, etc.

    Session.SessionID a maneira de saber qual o cdigo dasesso no momento.

    Session.Timeout devolve o tempo de expirao dassesses, definido no momento.

    Fig. 4.1 - Resultado do ficheiro cpt4-2-1.asp

    Podemos ento usar o objecto Session para passarmos todo o tipode variveis de uma pginas ASP para outra. Aqui ento est umexemplo em que passamos uma string entre duas pginas. Ter emateno de que estas variveis ficam acessveis no s na pginaque se corre em seguida, mas em todas aquelas que pertencerema esse site. Por isso se para chegar-mos a um ficheiro C comean-do em A, tenhamos de passar por B, a sesso criada em A continuaactiva.

  • 67CAPTULO 4: OBJECTOS

    (ficheiro cpt4-2-2.asp)

    carregue aqui para passar prxima

    pgina

    Foram usadas os seguintes objectos:

    Session(Teste) a maneira de saber qual o cdigo dasesso no momento;

    Session.TimeOut neste ficheiro usmos este objectocom este mtodo, de maneira aalterarmos o tempo limite de umasesso.

    A possibilidade de podermos alterar o tempo limite de uma sesso muito importante, tanto para sites de proteco por password, comopara sites mais pesados, onde necessitamos de mais tempo, poisuma pgina que demore muito tempo a abrir, ou a processar algobastante pesado, possa demorar mais de 1 minuto, e nessa altura asesso deveria ter um mnimo de 2 minutos. Aqui tambm pudemosver como possvel usar dentro de uma string, ou ento l criaralgo com os mesmos. Visto que as so usadas para conter strings,e outro tipo de dados, o programador para as usar ter de criar umaa mais por cada uma que l introduzir. Tal como est no ficheiro, quevimos anteriormente.

    No ficheiro cpt4-2-2.asp temos ento a possibilidade de ver comose altera o objecto que controla o tempo das sesses, e como criaruma sesso nossa, e l introduzir dados que queiramos estaremacessveis em uma ou vrias pginas.

    Este ficheiro vai chamar um outro (cpt4-2-3.asp) para que o leitor seaperceba da maneira como foi possvel criar uma sesso prpria eaceder mesma, a partir de outras pginas.

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES68

    (ficheiro cpt4-2-3.asp)

    Podemos ver que a varivel de sesso trazida da pgina anterior

    Aqui nada de novo a no ser a maneira como foi acedida a sessocriada no ficheiro anterior. No parece nada de especial mas de cer-teza que vai usar muitas vezes nas suas pginas ASP. Nos seminri-os da Microsoft, os seus apresentadores aconselham sempre omnimo uso destas variveis, para que no atrapalhem a performancedo servidor Web. No aconselho que isto seja levado risca, masse estiver de posse de um servidor que tem uma mdia de 10.000acessos dirios, a a recomendao da Microsoft deve ser levadamais a srio. Caso contrrio, e por experincia prpria, no existemmotivos de preocupao se usar este tipo de variveis em excesso.

    Fig. 4.2 - Resultado do ficheiro cpt4-2-2.asp

    Fig. 4.3 - Resultado do ficheiro cpt4-2-3.asp

  • 69CAPTULO 4: OBJECTOS

    As imagens so bem elucidativas em relao ao uso de uma ses-so criada pelo programador. Da mesma maneira que criada umasesso para suportar uma string, o leitor poder usar para criar umarray ou nmero. As hipteses so imensas, e a programao aeste nvel bastante facilitada com este objecto.

    Outro objecto que usado para tratar de variveis globais Application, que criado e acessvel tal como se faz com as ses-ses, com a particularidade que para o alterarmos tem-se de seguircertas regras.

    A grande diferena entre Application e Session que enquanto asvariveis criadas pelo segundo so acedidas apenas pelo utilizadordo momento, ou por aquele a quem pertence um SessionID, as va-riveis Application so acedidas por todos os utilizadores, todos osSessionID. Fica assim um esquema para o leitor perceber melhorcomo isto funciona.

    Fig. 4.4 - Funcionamento das variveis globais

    Pelo esquema pode-se reparar que para cada utilizador existe umasesso independente, enquanto a varivel de Application igual paratodos.Vemos ento um exemplo de como criar e aceder a uma varivel deApplication. Repare que existem dois mtodos Lock e UnLock paraque a mesma possa ser alterada. Para aceder mesma no ne-cessrio usar as regras ditas anteriormente, e visveis no exemploseguinte:

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES70

    (ficheiro cpt4-2-4.asp)

  • 71CAPTULO 4: OBJECTOS

    4.3 Interagir com o utilizadorAquilo que realmente faz a diferena entre as pginas estticas e aspginas dinmicas a possibilidade de resposta aos utilizadoresem tempo real. Podem-se programar pginas que recebendo uminput de um utilizador, estas respondem de acordo com os dadosrecolhidos, e isso no se pode fazer apenas com HMTL, e outrosrecursos bsicos.

    Para se recolher dados do utilizador necessrio criar uma estrutu-ra que permite o utilizador inseri-los, de maneira que o programadorpossa trabalhar com os mesmos. Em primeiro lugar criado umformulrio HTML, que tanto pode estar numa simples pgina HTML,como numa pgina ASP. O utilizador pode ter uma pgina HTMLcom o formulrio que depois de submetido vai buscar um ficheiroASP, onde o programador pode recolher os dados e trabalhar sobreeles. Ou ento o programador numa mesma pgina ASP controla oinput que feito, e conforme o estado em que o contexto se encon-tra, conforme a aco que accionada. Mas com os ficheiros deexemplo seguintes, o leitor vai perceber as diferenas.

    (ficheiro cpt4-3-1.html)

    Nome:

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES72

    (ficheiro cpt4-3-1.asp)O utilizador , tem anose est acessvel pelo nmero de telefone !

    Foram usados os seguintes objectos e funes:Request.Form(...) mecanismo para ir buscar os dados

    que vinham do formulrio anterioronde estava o mtodo POST.

    Fig. 4.6 - Resultado do ficheiro cpt4-3-1.html

    Nesta primeira imagem vemos o formulrio em que o utilizador vaiintroduzir os seus dados, e temos a imagem que mostra os dadosque o mesmo disponibilizou.

    Fig. 4.7 - Resultado do ficheiro cpt4-3-1.asp

  • 73CAPTULO 4: OBJECTOS

    (ficheiro cpt4-3-2.asp)

    O utilizador , tem anose est acessvel pelo nmero de telefone !

    Nome:

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES74

    Fig. 4.9 - Resultado final do ficheiro cpt4-3-2.asp

    Como se pode ver por estas duas ltimas imagens, o resultado omesmo, com a grande diferena que neste segundo exemplo usa-mos sempre o mesmo ficheiro. Isto pode ser bom para poupanade recursos, mas para sites com muitos acessos pode dar os seusproblemas, visto que com muitos acessos deve-se separar o malpelas aldeias, e ter vrios ficheiros ASP a tratar dos dados.

    J foi visto como criar um formulrio, como obter os dados a cria-dos, como os mostrar no browser, mas, falta ainda, tratar os dadose valid-los de forma aos mesmos preencherem os requisitos quepretendemos para uma qualquer aplicao. Digamos que temos umsite que serve para simular uma atribuio de bolsa de estudo. Pre-tendemos o nome do aluno, a data de nascimento, a mdia do lti-mo ano e o rendimento mensal dos pais. Vamos criar uma frmula(de forma alguma a usada na realidade), onde todos os alunos on-line podem ficar a saber se vale a pena candidatarem-se ou no.Vamos ento dizer ao aluno que tem hiptese ao candidatar-se numdos seguintes casos:

    - rendimento mensal dos pais menor ou igual a 80.000$00 e mdia maior que 11 valores;

  • 75CAPTULO 4: OBJECTOS

    - rendimento mensal entre 80.000$00 e 100.000$00 e mdia maior que 13 valores;

    - rendimento mensal entre 100.000$00 e 160.000$00 e mdia maior que 16;

    - mdia maior que 18;

    - o aluno no pode ter menos de 10 anos e mais de 28.

    No vamos aprofundar muito com questes das quantidades envol-vidas, mas vamos ento pedir os dados necessrios para que pos-samos dizer se tem hiptese ou no no caso de se candidatar. Almde dizermos isso, vamos calcular a idade do aluno pela data denascimento. Desta forma o leitor perceber mais alguns pontos dedesenvolvimento ASP a este nvel e poderemos ento criar umpequeno curso online que demonstra muito genericamente uma dasgrandes potencialidades da Internet, a formao online.

    Continuando ento, vamos criar o formulrio com as perguntas, eno esquecendo os nomes de cada Tag de input, nomes esses quesero 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:

    - Formulrio de pedido de dados do aluno;

    - Validao dos dados do aluno;

    - Apresentao do resultado.

    Estas 3 fases distintas podem ser feitas em 3 procedimentos dife-rentes. Criaremos um procedimento formulario(), dados_validar() eresposta(). Ficamos assim com os 3 pontos definidos. Basta agoracriar o cdigo que os vai colocar em produo.

    Comecemos pelo formulrio que vai pedir os dados ao utilizador:

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES76

    Simulador de Bolsas deEstudo

    Nome:

    Data de Nascimento:-- 19

    Mdia do ltimo ano:valoresRendimento mensal dos pais:$00

  • 77CAPTULO 4: OBJECTOS

    Fig. 4.10 - Resultado do formulrio do ficheiro cpt4-3-3.asp

    Como o leitor deve ter reparado foram introduzidos como variveispor defeito alguns Request.Form (), isto porque no queremos queo utilizador perca os dados por cada vez que faa um erro ou quequeira voltar atrs, na sua simulao. Desta forma garantimos queos dados esto sempre nos stios certos. No caso de se recomearuma simulao, por defeito os Headers dos ficheiros HTML ficamem branco espera de novo Submit do formulrio. A varivelsession(erro) serve para mostrar uma mensagem de aviso emrelao aos dados que foram introduzidos incorrectamente, que ten-tamos manter cada vez que tudo estiver validado e correcto, paraque quando se recomece o formulrio ainda l esteja essa mesmamensagem.

    Assim, com este cdigo, ficamos com um formulrio que alm dereceber input do utilizador, envia os dados para uma nova fase, que a fase de validao.Para validar-mos estes dados precisamos de os receber, e paraisso foi usado no cdigo inicial o seguinte cdigo:

    nome = Request.Form(nome)data = Request.Form(dia) & - & Request.Form(mes) & -19 &

    Request.Form(ano)media = Request.Form(media)rendimento = Request.Form(rendimento)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES78

    Este cdigo introduzido antes de se usarem os procedimentospois queremos que as variveis sejam dadas como variveis pbli-cas dentro deste ficheiro ASP. Desta forma, mais fcil tratar osdados e escusamos de estar sempre a usar o cdigo Request.Form(..), bastando assim apenas o nome que atribumos a cada umdos argumentos que so passados. A varivel Data fica com umaformatao diferente, pois queremos construir uma data real, paraque no uso da funo IsDate() disponhamos partida de algo se-melhante para validao.

    Como se viu foram validadas todas as variveis que o formulrioapanhou do utilizador, e validadas conforme aquilo que se pretendia:a data validada como data e o rendimento e mdia do aluno comonmeros, para que no sejam aceites letras ou outros caracteresidnticos. E no final chamado o formulario() ou o procedimentoresposta(), conforme o que se pretende. No caso de existir algumerro nas variveis que foram pedidas, o utilizador enviado nova-mente para o formulrio, que mantm os dados anteriores, visto queos est sempre a apanhar com Request.Form(). Caso contrrio, evisto que est tudo certo, o utilizador recebe a resposta em relao sua simulao. Esta resposta dada a partir do cdigo que vemosa seguir.

  • 79CAPTULO 4: OBJECTOS

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES80

    Fig. 4.11 - Resultado de validao do ficheiro cpt4-3-3.asp

    Na imagem anterior, obteve-se uma resposta do formulrio em rela-o mdia que o utilizador introduziu, que no sendo vlida, pedepara que seja corrigida. Este tipo de correco feito tambm paraoutras variveis, e o procedimento em si o mesmo, mas commensagens de erro diferentes, correspondendo a cada uma das si-tuaes de validao.

    Fig. 4.12 - Resultado de resposta do ficheiro cpt4-3-3.asp

  • 81CAPTULO 4: OBJECTOS

    Como podemos ver na imagem anterior, a resposta que se obtevefoi negativa, depois de se terem efectuadas as comparaes comos requisitos definidos para a atribuio de bolsa ao estudante.Teve-se o cuidado de se criar uma tabela com um texto de respostapor defeito, que s altera as zonas que so correspondentes aosdados que o utilizador introduziu. Neste caso usado o DateDiff (),para que os alunos com uma idade no vlida para as bolsas sejamavisados disso. No caso contrrio enviada a resposta em relaoao apoio por Bolsa de Estudo.

    Introduziu-se um link para o caso do utilizador querer recomear asimulao. Ser aqui que tudo recomear, tendo em conta que avarivel de sesso tem de estar vazia, ou o ltimo erro continuaria aaparecer apesar de ser uma nova simulao. Por isso esta funocomea com a sesso de erro a ser limpa, pois para se ter chegadoa este ponto era porque as variveis estavam correctas.Depois desta explicao, podemos ver o cdigo por completo, parapercebermos melhor o seu funcionamento.

    (ficheiro cpt4-3-3.asp)

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES82

    rendimento13)) then mensagem = tem else if ((rendimento>=100000 AND

    rendimento16)) then mensagem = tem

    else if (media>18) then

    mensagem = tem else

    mensagem = no tem end if

    end if end if

    end if Response.Write mensagem%>

    direito bolsa deestudo.

  • 83CAPTULO 4: OBJECTOS

    if session(erro) then formulario else respostaend if%>

    Simulador deBolsas de Estudo

    Nome:

    Data de Nascimento:-- 19

    Mdia do ltimo ano:valoresRendimento mensal dos pais:$00

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES84

    Foram usados os seguintes objectos e funes:

    Session () usado neste caso para que tenhamos umavarivel que guarde o tipo de erro que foiachado nos dados introduzidos peloutilizador;

    DateDiff () DateDiff (), assim como est explicado natabela de funes, serve para devolver umadiferena entre duas datas, tanto em dias,anos, minutos, . Neste caso usamos paradevolver os anos entre o dia de hoje, e a datade nascimento introduzida pelo utilizador.Esta varivel depois usada para sabermosse o mesmo rene condies para poderreceber resposta da aplicao;

    IsDate () O IsDate, devolve True ou False, conformea data indicada seja ou no uma data vlida;

    IsNumeric () Como o IsDate, este tambm booleano, eindica se a varivel numrica ou no;

    Request.Form () Esta a maneira de o programa aceder aosdados submetidos pelo ltimo formulrio.

    No seguinte exemplo criado um curso online, bastante simples,de resposta mltipla. Este exemplo importante, pois, caso o leitoro compreenda ter uma boa noo das potencialidades das vari-veis de sesso, e passagem de parmetros entre vrios procedi-mentos.

    Necessitamos claro, de perguntas, respectivas respostas, valida-o das respostas, e uma apresentao do resultado depois do tes-te.

  • 85CAPTULO 4: OBJECTOS

    Definimos ento alguns procedimentos:- Procedimentos de perguntas (onde teremos um formulrio de per-gunta e respostas, que neste exemplo so 5, devido a serem 5 per-guntas);- Um procedimento, para enviar o total do teste, e respectiva men-sagem de aprovao ou reprovao.

    Todos os procedimentos de perguntas tero ento o aspecto do c-digo da seguinte tabela, mas com a diferena de que cada um temas suas perguntas e respostas, parte essa que ter de ser alterada.

    Pergunta > 1 / 5

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES86

    Podemos ver por este exemplo que o cdigo usado praticamenteHTML puro, com a excepo do uso de uma varivel de sesso queserve para podermos controlar em que pergunta vai o teste, de ma-neira que o utilizador seja enviado para a pergunta seguinte, e nofinal para o resultado do teste.

    Fig. 4.13 - Pergunta do ficheiro cpt4-3-4.asp

    Como se pode ver este um teste de ASP. O leitor pode fazer testesde tudo o que quiser, e com o uso de bases de dados (a ver emprximo captulo), pode criar vrios tipos de testes usando apenasum procedimento para todos eles.Ser ento num outro procedimento, depois de todas as perguntasterem sido respondidas, que todas as variveis sero limpas, demaneira a que se possa responder a um novo teste, ou tentar novasorte. Nesta fase, ser feita uma validao de todas as respostas eincrementada uma varivel com o total de valores do teste - alteradaconsoante a qualidade das respostas dadas.

  • 87CAPTULO 4: OBJECTOS

    APROVADO

    tangente... Else if (total >= 12 AND total < 17) then Response.Write APROVADO

    com distino! end if end if end if end if%>

    Como se pode observar, todas as variveis de sesso devolvem asrespostas, que conforme estejam certas ou no iro serdeterminantes no desenvolvimento da varivel local total, para a notafinal do teste online.Observando todo o cdigo, teremos ento uma noo mais real da-quilo que se pretende, pois com as primeiras linhas de cdigo sepode perceber como todos os procedimentos so geridos.

    Fig. 4.14

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES88

    (ficheiro cpt4-3-4.asp)

    Pergunta > 1 / 5

  • 89CAPTULO 4: OBJECTOS

    Pergunta > 2 / 5

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES90

    Pergunta > 3 / 5

  • 91CAPTULO 4: OBJECTOS

    Pergunta > 4 / 5

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES92

    Pergunta > 5 / 5

  • 93CAPTULO 4: OBJECTOS

    APROVADO

    tangente... Else if (total >= 12 AND total < 17) then Response.Write APROVADO

    com distino! end if end if end if end if%>recomear

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES94

    Foram usados os seguintes objectos e funes:Session () muito usado neste exemplo, este objecto

    tem tanto o nmero da ltima pergunta, paraque possamos direccionar o utilizador paraa pergunta seguinte, como as respostas dasrespectivas perguntas;

    Request.Form () Tal como noutros exemplos, recebe osvalores que foram enviados por formulrio.

    Para acabar esta parte do captulo, vamos ver como podemos pro-teger as nossas pginas ASP, de maneira a s serem acedidas de-pois de introduo de login e password, e controlando o tempo queestes tm de activao. Parece algo que requer alguma programa-o mais avanada, mas ser o exemplo onde ter de ser escritoum mnimo de cdigo de programao. Tudo o que o leitor tem decriar um ficheiro, formulrio onde o utilizador ir introduzir o login ea password, a mensagem de erro, e o envio para a pgina principaldo site protegido, que por sua vez, s pode ser acedido depois dologin e password serem validados.

    Vamos ento dividir o ficheiro de entrada e validao de dados em 3partes: a primeira parte ser aquela em que sero pedidos os dadospor intermdio de um formulrio, a segunda parte ser a zona ondeaparecer uma mensagem de erro, no caso de os dados estaremerrados, e a terceira a zona onde se controla qual dos procedimentos executado.

    Vamos ento ter de receber dados, que vamos introduzir em vari-veis de sesso, de maneira a que possamos ter os dados activosdurante o tempo que definirmos em Session.TimeOut Quandoreiniciamos a pgina e esses dados estiverem incorrectos, envia-mos o utilizador para uma mensagem de erro, caso contrrio, serencaminhado para a primeira pgina protegida. As pginas protegi-das devero ento ter apenas 3 linhas de cdigo, de maneira a com-pararmos o login e password que esto em variveis de sesso.

    (ficheiro cpt4-3-5.asp)

  • 95CAPTULO 4: OBJECTOS

    Password: ERRO, login e password errados...tente de novo

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES96

    Foram usados os seguintes objectos e funes:Session () ter as variveis que simbolizam o login e

    password. Estas sero comparadas noincio de cada pgina protegida, de maneiraa assegurar se o utilizador est validado ouno;

    Session.Timeout () neste exemplo este mtodo usadopara definirmos o tempo em que as sessesesto activas, ou seja, os minutos em queas sesses esto activas, depois dainactividade ocorrente no site.

    Agora que vimos o cdigo que recebe e valida a entrada de umutilizador vamos ver uma normal pgina ASP, que est protegida, aqual s possvel ao utilizador aceder, se validada a sua entrada noformulrio. No incio de todas as pginas ASP que queremos prote-gidas, fazemos uma comparao das variveis de sesso de ma-neira a sabermos se estas so vlidas ou no.

    (ficheiro cpt4-3-5test.asp)

  • 97CAPTULO 4: OBJECTOS

    1. o primeiro utilizador entra e o servidor fica alerta;2. o utilizador comea uma nova sesso, e essas sessesque ele cria so as que utilizamos para variveis globais, epara definir o tempo de aco das mesmas.3. o utilizador sai do site e a sua sesso acaba;4. o ltimo utilizador do site sai e o servidor Internet deixa de estar alerta.

    Depois de vistas estas 4 fases, posso agora demonstrar esta expli-cao do ponto de vista prtico.

    O ficheiro Global.Asa, algo como que o controlador dos acessosao site que o programador criou, ou estiver a desenvolver. Este fi-cheiro tem apenas 4 funes distintas: a primeira aquela que activada quando o site fica activo; a segunda activada por cadavez que entra um utilizador; a terceira activada por cada vez quesai um utilizador do site, e a quarta activada quando o site deixa deter utilizadores. Desta maneira, podemos criar cdigo dentro de cadauma destas zonas para nosso benefcio. Por exemplo, o leitor querque seja introduzido num ficheiro de texto o endereo IP de cadautilizador que entra no site. Basta escrever dentro da segunda funodo ficheiro Global.Asa o cdigo que cria essa linha no ficheiro decontrolo, para ter a certeza que cada acesso registado. Ou sequisermos saber quanto tempo cada utilizador passa em mdia nosite, basta criarmos um registo de tempo de entrada na segundafuno, e um na terceira funo, e mais tarde fazermos DateDiff()para sabermos a mdia que cada utilizador gasta no nosso site.O esquema de um ficheiro Global.Asa o seguinte:

    Sub Application_OnStartEnd Sub

    Sub Session_OnStartEnd Sub

    Sub Session_OnEndEnd Sub

    Sub Application_OnEndEnd Sub

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES98

    Como podemos ver tem apenas 4 procedimentos que so percorri-dos em determinadas situaes.Este ficheiro tem de estar localizado no directrio principal do site,usando o esquema que temos vindo a seguir ficar emc:\inetpub\wwwroot\livro\

    Fig. 4.15 - Como deve estar configurado o nossodirectrio virtual, onde queremos ter o site

    Fig. 4.16 - Directrio onde o ficheiroglobal.asa tem de ficar em funo do

    site virtual da imagem anterior

  • 99CAPTULO 4: OBJECTOS

    Agora para testarmos a potencialidade deste ficheiro vamos saberquantos utilizadores esto neste momento no nosso site. Para issobasta criarmos uma varivel que se incrementa no procedimentoSession_OnStart(), e que se decrementa no Session_OnEnd(). Destamaneira se estiverem 4 utilizadores ao mesmo tempo no site a vari-vel ser 4. Se um deles sair passar a ser 3 pois houve uma ses-so que acabou. Da mesma maneira, por cada utilizador que entreno site essa mesma varivel ir ser incrementada. Passando dateoria prtica vamos ento editar o nosso ficheiro Global.Asa, quesuportar o controlo dos acessos ao site.

    (ficheiro global.asa)

    Sub Application_OnStart Session.Timeout = 3

    Application.Lock Application(utilizadores) = 0 Application.UnLockEnd Sub

    Sub Session_OnStartApplication.LockApplication(utilizadores) = Application(utilizadores) + 1Application.UnLock

    End Sub

    Sub Session_OnEnd Application.Lock

    Application(utilizadores) = Application(utilizadores) - 1Application.UnLock

    End Sub

    Sub Application_OnEndEnd Sub

    Foram usados os seguintes objectos e funes:

    Session.Timeout () onde se define o tempo que vaidurar cada sesso. Se o utilizadorficar inactivo durante um certoperodo de tempo (em minutos), afuno Session.OnEnd() activa-se eprocessa uma sada do site. Aqui vamos definir esse tempo em minutos;

  • CENTRO ATLNTICO - PROGRAMAO WEB COM ACTIVE SERVER PAGES100

    Application.Lock () o mtodo usado para trancar avarivel, de maneira que possa seralterada sem intervenes externas.Um meio de proteco dos dadosque esto l includos;

    Application (utilizadores) desta maneira obtemos umavarivel global, onde todos osutilizadores tm acesso, de maneiraque todos podem aceder aos dadosrelativos ao nmero de utilizadoresdo site em questo;

    Application.UnLock () neste mtodo destranca-se avarivel depois da mesma ter sidoalterada.

    Depois de termos este ficheiro no local certo e com o cdigo