Você está na página 1de 98

2006 by Digerati Books Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.

Nenhuma parte deste livro, sem autorizao prvia por escrito da editora, poder ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrnicos, mecnicos, fotogrcos, gravao ou quaisquer outros.

Diretor Editorial Luis Matos Assistncia Editorial Monalisa Neves Erika S Preparao de Originais Luciana Salgado Guimares Moreira Reviso Karina Penariol Sanches Projeto Grco Daniele Ftima Diagramao Natal Garcia

Universo dos Livros Editora Ltda. Rua Tito, 1609 CEP 05051-001 So Paulo/SP www.universodoslivros.com.br e-mail: editor@universodoslivros.com.br Conselho Administrativo: Alessandro Gerardi, Alessio Fon Melozo, Luis Afonso G. Neira, Luis Matos e William Nakamura. ISBN: 85-7702-063-0

Prefcio
Houve um tempo em que bastava o conhecimento da linguagem HTML para desenvolver pginas de Internet, que eram hospedadas em um dos poucos servidores disponveis. Neste tempo, as pginas eram estticas, as imagens eram muito raras e as conexes de acesso, na sua maioria, discadas. Mas a Internet evoluiu muito rpido e, em sua nova gerao, a banda larga comeou a se popularizar, agilizando em muito a velocidade de conexo. Os internautas tambm passaram a ser mais exigentes, buscando cada vez mais interao e atratividade. Ao lxico da Internet foram incorporados novos termos tcnicos como ASP, PHP, Cold Fusion, Curl, JavaScript, Ajax, XML, DTHML, Flash, entre outros, e os prossionais que desenvolviam sites passaram a ter necessidade de conhecer cada uma destas tecnologias para implementar recursos sosticados ao site. Os servidores Web tambm ganharam em recursos, e os prossionais passaram a ter opo de escolha entre solues Made in Microsoft com o pacote Windows + ASP + SQL + IIS e solues OpenSource com o pacote LAMP (Linux + Apache + MySQL + PHP). Neste livro voc ter a oportunidade de conhecer, em linhas gerais, essas tecnologias e saber como combin-las para criar um website altamente prossional. Boa leitura! Luis Matos luismatos@universodoslivros.com.br Diretor Editorial

Sumrio

Captulo 1
Montagem de servidor ............................................... 07

Captulo 2
Linguagens da Web .................................................... 31

Captulo 3
PHP........................................................................53

Captulo 4
SQL e MySQL............................................................. 83

Captulo 1
Montagem de servidor

Para ter seu prprio site, antes de tudo, voc precisa de um servidor de hospedagem. Hospedagem o nome que se d ao servio em que o dono de um computador (na verdade, de vrios) e de um link de conexo Internet aluga recursos da mquina (espao em disco, processamento) e uma fatia do link para serem utilizados por quem estiver interessado. No caso dos servios de hospedagem de sites, tanto pessoais quanto comerciais se bem que os primeiros praticamente inexistem atualmente, por conta da presena dos blogs e do Orkut , o que se aluga um espao para armazenagem dos sites no disco rgido do servidor, e a quantidade de conexes de usurios que podero ser feitas para a pgina, simultaneamente. Para a hospedagem de sites pro ssionais deve existir ainda um espao de disco oferecido para a insero de bancos de dados e garantias de proteo contra invases de crackers (ladres de senhas e de dados), script kiddies os aprendizes de hackers e defacers, os costumeiros responsveis por pichaes em pginas da Web ou retirada de pginas do ar, usando tcnicas de inundao de conexes (Denial of Service ou DOS) ou simplesmente apagando os arquivos do site de dentro do diretrio de hospedagem. A segurana normalmente feita com a presena de um rewall com algumas regras de proteo predenidas. Sempre que um novo cliente se lia ao servio de hospedagem de sites, ele poder inserir novas regras ao rewall, que tero efeito apenas em sua conta. assim que grandes empresas de hospedagem como a LocaWeb (www.locaweb.com.br) costumam trabalhar. Voc pode montar seu prprio servidor Web em casa? Sim, e a um custo relativamente mdico: cerca de mil reais. Compensa? Dependendo da situao pode compensar, mas, do ponto de vista nanceiro, raramente ser uma boa opo. Basta colocar todas as despesas na ponta do lpis:

Curso prtico de criao de sites

Servidor domstico Item


Servidor (Pentium 4.2 GHz, 512 MB RAM, HD 40 GB, placa de rede). Servio Internet Banda Larga. Provedor de acesso Internet. Sistema operacional do servidor. Gastos de energia eltrica com o servidor e roteador de acesso Web.

Custo mdio
R$ 800,00

Entre R$ 100,00/ms (Links ADSL 400 Kbps) e R$ 200,00/ms (Link 1 Mbps). Entre R$ 30,00/ms e R$ 200,00/ms (horas de conexo ilimitadas). Grtis (GNU/Linux), R$ 900,00 (RedHat Linux Enterprise) ou R$ 2.400,00 (Windows Server 2003). Entre R$ 50,00/ms (pgina disponvel cinco dias por semana, oito horas por dia) e R$ 250,00 (pgina disponvel todos os dias da semana, 24 horas por dia).

Tabela 1: Gastos com um servidor domstico.

Servidor de hospedagem prossional Item


Servidor semidedicado: plano de hospedagem com banco de dados, 50 GB de transferncia de dados, 1 GB de espao em disco e 100 caixas postais de e-mail. Servio Internet Banda Larga.

Custo mdio
R$ 299,00/ms.

Custo zero, j que ser utilizado o link do servio de hospedagem.

Servidor de hospedagem prossional Item


Provedor de acesso Internet. Sistema operacional do servidor. Gastos de energia eltrica com o servidor e roteador de acesso Web.

Custo mdio
Custo zero, j que ser utilizado o link do servio de hospedagem. Custo zero. S se deve pagar pelo sistema operacional ao se contratar servios de acesso dedicado. Custo zero.

Tabela 2: Gastos com servio de hospedagem prossional.

Sistemas Operacionais
Outro ponto que se deve levar em considerao, alm dos custos, a manuteno e segurana do site. Os bons provedores de hospedagem costumam fazer backups dirios das informaes armazenadas em seus servidores, alm de garantir a segurana das informaes por meio de criptograa e regras de rewall. Por sua vez, se voc resolver montar seu prprio servidor, todos os encargos de manuteno do servidor, backup e segurana passaro a ser de responsabilidade sua. Essa preocupao comum a todos os sistemas operacionais em uso em servidores, mas especialmente preocupante em sistemas Windows. A maioria dos vrus criados afeta o sistema operacional da Microsoft, sobretudo as verses 2000/2003/XP do Windows. Boa parte deles, como o Slammer ou o MyDoom, afeta sobretudo a conectividade do computador com uma rede interna ou com a Internet, e podem se disseminar sem que o usurio sequer abra um arquivo ou e-mail proveniente da mquina infectada, como costumava acontecer com os vrus da gerao anterior, ou seja, alm de car com a sua pgina fora do ar, voc pode infectar pessoas que

10

Curso prtico de criao de sites

acessem sua pgina e at potenciais clientes, caso mantenha um website com ns comerciais. Alm disso, voc ter de se encarregar da instalao do prprio sistema operacional, ao que, apesar de parecer corriqueira, adquire contornos um pouco mais dramticos quando estamos diante de um servidor Web: alm da instalao tradicional do sistema operacional, teremos de realizar a congurao dos elementos de rede, congurar os servidores Web e aplicar todos os patches de segurana existentes. Ao optar por sistemas operacionais da Microsoft tanto em servidores de uma empresa de hospedagem como em casa teremos de trabalhar com o servidor Web IIS (Internet Information Service), atualmente em sua verso 6 (o Windows 2000 utiliza a verso 5). A linguagem dinmica ideal para se trabalhar com o IIS o ASP (Active Server Page), tambm desenvolvido pela Microsoft. Ao optar por sistemas operacionais como o GNU/Linux, o servidor de Web padro ser o Apache (www.apache.org), atualmente em sua verso 2.2.2. O Apache apresenta problemas com pginas dinmicas criadas em ASP, razo pela qual recomendado criar pginas usando tecnologia livre como o PHP (PHP Hypertext Preprocessor) ou o Perl. Tambm existem verses do ASP para Windows.

Apache
A fundao Apache, criada em 1989, lanou a primeira verso do seu servidor Web, que possui o mesmo nome da fundao, dez anos depois. Apesar da alcunha singela, o Apache tinha e tem muito a mostrar: um servidor robusto, mesmo rodando sobre a plataforma Windows, gratuito e com uma ferramenta de criao e anlise de logs que permite uma ltragem quase total de informaes. Desde ento o Apache foi engolindo mercado, a ponto de ser o responsvel por 65% dos servidores Web atualmente em atividade no mundo.

11

Vamos mostrar agora como realizar a instalao do Apache em uma mquina rodando o Windows 2000 Server. Na seo seguinte, realizaremos a mesma instalao e conguraes, mas dessa vez em um servidor GNU/Linux. Mesmo que voc no deseje construir um servidor dentro de sua casa ou empresa, e j repassou a dor de cabea para uma empresa de hospedagem, recomendamos que leia atentamente esta seo. Em raros provedores o prprio cliente deve fazer a instalao de seu servidor em outros casos, voc deve ter bagagem tcnica para conversar com atendentes e delinear o tipo de congurao que deseja aplicar ao seu servidor. Alm disso, se voc quiser ser um prossional de Web, obrigatrio saber congurar o Apache. 1. V a pgina http://www.apache.org/mirrors/ e selecione um dos sites espelho (chamados tambm de mirrors) em que estiver disponvel o download da ltima verso do Apache. Procure pelo diretrio /apache/httpd/binaries/win32/ no mirror de sua escolha e clique no arquivo apache_2.2.2-win32-x86no_ssl.msi para iniciar o download.

Figura 1.1.

12

Curso prtico de criao de sites

2 . Execute o arquivo quando o download estiver terminado. Clique em Next e, aps aceitar a licena e ler a pgina de apresentao, clique em Next duas vezes para passar para a pgina de conguraes.

Figura 1.2.

3. Em Network Domain, selecione o domnio em que sua pgina est inserido, por exemplo: digerati.com.br, ou eu.com. Certique-se de j ter um domnio registrado no Registro.BR (http://registro.br/). Em Server Name, d um nome ao seu servidor, como, por exemplo, tester1. Por m, em Administrators E-mail Address, digite um endereo de e-mail que possa ser utilizado para a criao de arquivos de segurana.

Figura 1.3.

13

4. Uma congurao de segurana importante: clique em for All Users, on Port 80, as a Service (para todos os usurios, na porta 80, como um servio) para que seja possvel instalar o Apache com todas as suas extenses e funcionalidades habilitadas e acessveis a todos os usurios, via porta 80. Ao selecionar essa opo, o Apache passa a ser reconhecido pelo Windows como um servio. Essa a opo ideal, j que estamos falando de um servidor de acesso pblico. Clique em Next.

Figura 1.4.

5. Clique em Typical para realizar uma instalao completa. Na tela Destination Folder, clique em Change e selecione um novo local para seu servidor (no nosso caso, imaginamos algum que estivesse familiarizado com o IIS e, por isso, selecionamos o diretrio como C:\Apache Group).

Figura 1.5.

14

Curso prtico de criao de sites

6. Na tela seguinte, clique em Install e, em seguida, em Finish. O servidor j foi instalado.

Figura 1.6.

7. Agora necessrio congurar o sistema. Acessando o menu Iniciar > Programas > Apache HTTP Server 2.2.2 > Congure Apache Server, clique em Edit the Apache httpd.conf Conguration File. Se o arquivo no abrir imediatamente, voc deve associ-lo a outro aplicativo. Utilize, por exemplo, o Bloco de Notas.

Figura 1.7.

15

8. Para quem no est acostumado com arquivos de congurao do estilo UNIX, em que tudo feito em arquivos de texto que devem ser editados, essa congurao pode parecer meio complicada, mas no . Para quem sabe ingls, o arquivo auto-explicativo. 9. Procure pela linha MaxRequestsPerChild 0. Ela dene quantas conexes sero aceitas, de forma simultnea, pelo servidor. Se voc tem uma largura de banda reduzida ou est rodando o Apache em uma mquina com poucos recursos de memria, digite uma quantidade entre 10 e 20. Valores acima disso no so recomendveis em servidores isolados (que trabalham sozinhos) como os servidores domsticos, ou podem depender do nmero de conexes simultneas contratadas com o servio de hospedagem pro ssional. 10. Em seguida, procure pela linha Listen e observe se ela mantm o valor 80 como o padro. Ela dene que a porta 80 seja a porta padro para envio e recebimento de material HTTP. Se voc ou a empresa de hospedagem possurem um servio Microsoft IIS na mesma mquina felizmente, e por razes bvias, quase ningum faz isso podem ocorrer alguns problemas de compatibilidade, com dois servidores HTTP escutando na mesma porta. Nesse caso, selecione a porta 3128 para o Apache, que a normalmente utilizada para servios de proxy (conexo segura Internet), e, na ausncia deles, ca livre. Portanto, voc tambm pode utilizar a porta 3128 se trabalhar em uma rede que possui um proxy transparente (que no requer autenticao). 11. Salve o arquivo e, em seguida, clique em Iniciar > Programas > Apache HTTP Server 2.2.2 > Control Apache Server > Restart para reiniciar o servidor.

16

Curso prtico de criao de sites

No Linux
A utilizao ideal do Apache Server est associada ao GNU/Linux e ao PHP. A maioria das distribuies GNU/Linux inclusive as que so compradas como encartes em CDs ou DVDs j vem com pacotes do Apache compilados e prontos para instalao. Na maioria das distribuies, pode-se optar pela incluso do Apache desde o incio da instalao do sistema operacional, com a opo de se levantar o servio apenas retirando uma forquilha (#) em um arquivo de texto. Para ter certeza da necessidade de se instalar o Apache em um servidor GNU/Linux, digite o seguinte comando no terminal: ps -A | grep httpd O comando ps procura por instncias do servidor HTTP Apache ativas. Se nenhuma instncia for encontrada, ento proceda instalao, detalhada logo a seguir: 1. Se voc deseja ter a ltima verso do Apache em seu sistema Linux, ele pode ser adquirido no site ocial, http://apache.org/. Escolha um mirror de sua preferncia e procure pelo diretrio /apache/httpd/binaries/linux/. Baixe o arquivo httpd-2.0.52-s390-ibm-linux.tar.gz. 2. Descompacte o arquivo para um diretrio de sua escolha, dentro de sua mquina GNU/Linux. tar xvfz httpd-2.0.x.tar.gz 3. Ser criado um diretrio com o mesmo nome do arquivo, mas sem a extenso .tar.gz. Entre no diretrio criado como administrador (root). Se voc no souber fazer isso, basta utilizar o terminal de linha de comando para ser capaz de executar os comandos necessrios sua instalao.

17

su (digite a senha de root). cd httpd-2.0.x 4. Agora que descompactamos o cdigo-fonte e estamos dentro do diretrio do Apache, realizaremos a compilao do programa: ./configure --enable-module=so --enablerule=SHARED _ CORE -prefix=/www # Voce pode escolher o diretorio para a instalaao do Apache. Neste caso, seguimos, novamente o padrao IIS, mesmo estando em um servidor GNU/Linux, escolhendo /www. Isto e um comentario (precedido por #) e, portanto, nao precisa ser digitado. make make install # Estas duas ultimas operaoes podem demorar alguns minutos ate a finalizaao. 5. Feita a instalao, podemos iniciar o servio utilizando o seguinte comando: /usr/local/apache/bin/apachectl start para interromper o servio, caso surja algum erro, digite o comando: /usr/local/apache/bin/apachectl stop 6. Se tudo estiver funcionando corretamente, um navegador Web ser aberto com a mensagem mostrada na Figura 1.8, dizendo que o Apache j est trabalhando. Se a mensagem no for mostrada, basta abrir qualquer navegador e digitar o

18

Curso prtico de criao de sites

endereo http://localhost:80 (ou http://localhost:8080, se voc selecionou essa porta).

Figura 1.8.

7. Feito o teste, pode-se apagar o diretrio de instalao do servidor: cd rm httpd-2.0.x.tar.gz rm -rf httpd-2.0.x 8. Agora passaremos para as conguraes do Apache. Vamos criar os diretrios seguintes, que sero utilizados para armazenar as pginas (/www) e os scripts CGI (/www/cgi-bin): mkdir /home/www mkdir /home/www/cgi-bin 9. Agora vamos trabalhar com o arquivo de congurao do Apache. Diferente do que acontece com o Windows, no h uma interface grca para ajudar portanto tudo ter de ser feito na linha de comando, utilizando um editor de textos como o vi, que pode ser chamado com o comando vi ou vim.

19

Se o servidor foi montado com uma distribuio GNU/Linux que suporta o modo grco, voc pode utilizar editores grcos como o Xvim e o kedit. 10. Para chamar o arquivo em modo texto, use o comando: vim /usr/local/apache/conf/httpd.conf Para comear a editar o arquivo, aperte a tecla Insert do teclado do servidor e posicione o cursor sobre a rea que deseja editar. 11. Para congurar o endereo do administrador do site, procure pela seo: # # ServerAdmin: Your address, where problems with the server should be # e-mailed. This address appears on some servergenerated pages, such # as error documents. e.g. admin@your-domain.com # ServerAdmin you@your.address e substitua o e-mail da ltima linha por um endereo de correio eletrnico do seu uso. 12. Agora vamos denir o diretrio raiz (root). nesse diretrio que sero colocadas todas as pginas do site criado por ns. Procure pela seo: # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but

20

Curso prtico de criao de sites

# symbolic links and aliases may be used to point to other locations. # DocumentRoot /usr/local/apache/htdocs e substitua o caminho da ltima linha pelo caminho de sua escolha como, por exemplo: DocumentRoot /usr/local/apache/htdocs/meusite/ 13. Agora iremos congurar a aceitao de scripts CGI em nosso servidor Apache. Procure pelas sees: # This should be changed to whatever you set DocumentRoot to. # <Directory /usr/local/apache/htdocs> e # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs-2.0/mod/core. html#options # for more information. # Options Indexes FollowSymLinks e as substitua, por exemplo, por: # # This should be changed to whatever you set DocumentRoot to. # digite o caminho do diretrio em que seu site ser armazenado

21

<Directory /usr/local/apache/htdocs/meusite> (...) # Formate o outro trecho da seguinte maneira, na qual permitimos a execuo de scripts CGI # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs-2.0/mod/core. html#options # for more information. # Options Indexes FollowSymLinks Includes ExecCGI 14. conveniente indicar quais pginas sero visualizadas por omisso, ou seja, no sero apresentadas ao browser quando apenas o nome do diretrio for pedido, como quando se digita http://127.0.0.1 na linha de endereo de um browser. O Apache j vem com dois nomes precongurados, index.html e index.html.var, mas convm adicionar tambm index.shtml para que possa ter pginas com SSI um componente dinmico do CGI, que trabalha junto com o servidor Web como pgina principal. Basta procurar a seo seguinte: # The index.html.var file (a type-map) is used to deliver content# negotiated documents. The MultiViews Option can be used for the # same purpose, but it is much slower. # DirectoryIndex index.html index.html.var e fazer a seguinte alterao:

22

Curso prtico de criao de sites

# The index.html.var file (a type-map) is used to deliver content# negotiated documents. The MultiViews Option can be used for the # same purpose, but it is much slower. # DirectoryIndex index.html index.html.var index. shtml 15. Agora vamos congurar o diretrio no qual sero executados os arquivos CGI. Voc pode utilizar a congurao padro (/home/www/cgi-bin/). Se voc alterou o diretrio raiz para o armazenamento das pginas do site ( Passo 12 ), ter que fazer alteraes no diretrio raiz dos arquivos CGI seguindo os mesmos moldes: # # ScriptAlias: This controls which directories contain server scripts. # ScriptAliases are essentially the same as Aliases, except that # documents in the realname directory are treated as applications and # run by the server when requested rather than as documents sent to the client. # The same rules about trailing / apply to ScriptAlias directives as to # Alias. # ScriptAlias /cgi-bin/ /home/www/cgi-bin/ (...) # /usr/local/apache/cgi-bin should be changed to whatever your ScriptAliased

23

# CGI directory exists, if you have that configured. # <Directory /home/www/cgi-bin> 16. Tal como na opo anterior, necessrio descomentar a linha com esta congurao para a ativar, mas tambm indicar ao servidor que os arquivos com a extenso .shtml so arquivos do tipo .html: # To parse .shtml files for server-side includes (SSI): # (You will also need to add Includes to the Options directive.) # AddType text/html .shtml AddOutputFilter INCLUDES .shtml 17. Para conrmar se as conguraes foram bem feitas, basta acessar os arquivos secundrios de congurao e conferir o status. Se voc realizou as conguraes anteriores, seu arquivo /home/www/index.shtml, por exemplo ou seja qual for o caminho em que voc depositou o seu arquivo index. shtml deve estar estruturado da seguinte maneira: <html> <head> <title>My web home using Apache</title> <head> <body> <h1>My web home using Apache</h1> <p>This is my home page. To see if it is working as it should, verify that the date presented be-

24

Curso prtico de criao de sites

low is my systems date and that a listing of the sites root directory appears right below it.</p> <p><!--#echo var=DATE _ LOCAL --></p> <tt> <!--#include virtual=/root _ listing.cgi --> </tt> <p>The message below is generated by a script in the cgi-bin directory.</p> <span style=color:white; background:red;> <!--#include virtual=/cgi-bin/script --> </span> </body> <html> 18. O arquivo /home/www/root_listing ou seja qual for o caminho que voc deniu para a raiz de sua pgina deve ser mostrado da seguinte maneira: #!/bin/bash # HTTP header echo Content-type: text/html echo # lists current directory ls . Esse arquivo nada mais faz do que listar todo o contedo do diretrio atual que esteja no formato .html.

25

19. O arquivo www/cgi-bin/script deve ser apresentado como mostrado a seguir: #!/bin/bash # HTTP header echo Content-type: text/html echo # prints a funny message echo Thats all folks! 20. Se as configuraes estiverem corretas, falta pouco para que o Apache esteja realmente funcional no GNU/Linux. Devemos, por exemplo, dar permisso para o funcionamento dos scripts para que eles possam funcionar dentro dos diretrios do Apache. As permisses funcionam como uma espcie de roteiro do que pode ou no ser feito em um diretrio. No GNU/Linux elas podem ser definidas com o auxlio do comando chmod , como no caso seguinte, em que damos permisso de escrita para os nossos scripts: chmod 755 /home/www/root _ listing.cgi chmod 755 /home/www/cgi-bin/script

IIS
O IIS (Internet Information Server) distribudo gratuitamente com as verses de Windows baseadas em NT, como o Windows 2000 Server e 2003. Nessas verses, o IIS possui capacidade ilimitada de conexo de clientes e ampla margem de congurao. Na verso para Windows XP, ao contrrio, o IIS pode ser utilizado apenas para dez conexes simultneas. D para criar um site de sucesso? No, mas pode ser bem til em uma intranet.

26

Curso prtico de criao de sites

Dentro de uma rede comercial pequena escritrio com dez funcionrios esparramados por um espao geogrco mais ou menos extenso, por exemplo uma intranet talvez seja a melhor maneira de compartilhar ou atualizar informaes. Com a criao de uma rede interna de informaes, ca muito mais fcil gerenciar conjuntos de dados que devem ser vistos por todas as mquinas da rede com vantagens, inclusive, em relao aos comunicados via e-mail, que ainda podem ser considerados uma forma de comunicao um tanto esttica. As empresas contratam prossionais que saibam montar pginas e sistemas de intranet com a mesma intensidade e entusiasmo com que fazem a contratao de prossionais especializados na montagem de websites externos (para a intranet). Vamos mostrar como realizar a instalao do IIS no Windows XP. A verso do IIS utilizada no XP a 5, e so permitidas somente dez conexes simultneas, mas vale a pena salientar que o mtodo de instalao aqui mostrado pode tambm ser aplicado em mquinas Windows 2000/2003. 1. Com o CD do Windows XP no drive, espere que a interface de apresentao seja iniciada e, em seguida, clique em Instalar Componentes Opcionais do Windows . 2. Selecione o IIS na lista de programas que mostrada, clique no boto Avanar e, em seguida, em Concluir. A mquina dever ser reiniciada. 3. Para ver se o IIS foi iniciado corretamente, digite em seu browser: http://localhost A pgina seguinte deve ser mostrada:

27

Figura 1.9: Pgina inicial do IIS.

4. O diretrio padro do IIS C:\Inetpub\wwwroot . Tudo que voc deseja que seja exibido na intranet deve ser colocado nesse diretrio. Voc pode congurar as pginas que sero exibidas atravs do Painel de Controle > Ferramentas Administrativas > Internet Information Service. Ser aberta uma janela de console. 5. Clique com o boto direito sobre o cone que representa o computador no qual est instalado o servidor IIS, clicando em seguida em Conectar. Na janela Conectar ao computador..., digite o nome da mquina em que foi instalado o IIS.

Figura 1.10.

28

Curso prtico de criao de sites

6. Expanda o diretrio Sites da Web, clicando com o boto direito do mouse em Site da Web padro e, aps, em Propriedades. Na aba Site da Web, linha Descrio, d um nome sua pgina. Em seguida, na linha Endereo IP, coloque o IP de sua mquina. Em Porta TCP, deniremos a porta padro para endereos Web e pginas HTTP (80).

Figura 1.11.

7. Na aba Documentos, clique em Ativar Documento Padro. No campo seguinte, selecione a pgina que voc deseja congurar como a pgina padro, excluindo as pginas seguintes.

Figura 1.12.

8. Podemos adicionar um sistema de login nossa intranet. Para fazer isso, clique em Segurana de diretrio, boto Editar... Desabilite a opo Acesso annimo e selecione a opo Autenticao bsica.

29

Figura 1.13.

9. Clique em seguida na opo Autenticao do Windows integrada, para utilizar as senhas de usurios do Windows. Voc tambm poder criar um usurio padro intranet em seu Windows, para que todos os usurios se conectem atravs dessa conta. Clique em OK e feche o console do IIS.

Testando a intranet
Para acessar a sua intranet em outras mquinas, inicie o Internet Explorer e digite o endereo: http://endereo.de.ip.da.sua.mquina Se o IP no funcionar, voc pode substitu-lo pelo nome da mquina: http://nome_da_mquina

30

Captulo 2
Linguagens da Web

Inexistia para a Web, h dez anos, uma linguagem especca para a organizao, quer lgica, quer artstica, das informaes que estavam agrupadas em um determinado local: o acesso de dados era possvel, mas no o de informaes ou pginas de informaes relacionadas. Tecnicamente, para se construir uma pgina de informao, seja ela para a Web ou para um sistema operacional, por exemplo, necessrio estruturar o material que se quer transformar em informao, dando-lhe uma forma. Essa estruturao s conseguida com a utilizao de uma linguagem conjunto de funes lgicas que deniro o formato que os dados tero ao serem transformados em um documento.

O Hipertexto e o browser
Com a abertura de mais terminais Web e a popularizao da Internet, tornou-se necessria a criao de uma linguagem que padronizasse as informaes, tornando-as facilmente disponveis a qualquer mquina, leve e sem necessidade de trabalhos extras por parte do usurio para sua utilizao. Foi assim que nasceu o hipertexto, que foi a primeira linguagem da Web a permitir a criao de documentos legveis de forma no seqencial. O hipertexto, no entanto, era muito simples: constava somente de sees de texto formatado em blocos e links para a navegao entre os textos. A entrada do hipertexto no cenrio da Web e sua expanso ocasionaram, nessa mesma poca, a criao de uma interface mais intuitiva para o hipertexto. Foi ento que se criou o Mosaic: o primeiro browser da histria, e um dos grandes responsveis pela disseminao da Internet.

Um hipertexto com muito mais recursos


HTML a sigla para o ingls Hyper Text Markup Language (Linguagem de Marcao de Hipertexto). O HTML uma coleo de estilos que dene os vrios componentes de um documento Word

32

Curso prtico de criao de sites

Wide Web (como formatao, hiperlinks clicveis, imagens grcas, documentos multimdia e formulrios). O HTML uma linguagem que deveria servir como marcao de outra linguagem o hipertexto. A verdade que acabou sendo sua substituta: hoje em dia ningum usa hipertexto puro, mesmo em terminais de acesso. O contedo de hipertexto delimitado por uma instruo de incio e outra de m da ao: e essa, essencialmente, a estrutura de um cdigo-fonte HTML ser interpretado, posteriormente, pelo browser, o qual se encarregar de interpretar os comandos ou tags, como so usualmente chamados. O cdigofonte poder ser digitado em qualquer editor de texto (muita gente fez sua primeira pgina Web no Bloco de Notas ), bastando salvar o documento com a extenso *.htm ou *.html. Os programadores de HTML que no so designers e esto mais preocupados com a segurana preferem criar seus cdigos da maneira descrita: linha por linha de texto. Os outros, claro, preferem construir em Dreamweaver ou Front Page. Desde j vamos desfazer um equvoco: uma das principais acusaes contra o HTML alegar que ele no uma linguagem de programao estruturada, e sim um conjunto de instrues de texto que so interpretadas pelo browser (alis, isso por si s j bastaria para que fosse uma linguagem de programao). Engano: apesar dos comandos (tags) serem carregados pelo browser, possuem delimitadores completos inclusive para suas prprias instrues. Uma tag delimitada por < >, apresentando a seguinte forma: <tag inicial> TEXTO </tag final> ou <tag nico> Os primeiros so tags aos pares e os segundos so tags individuais; quando um navegador carrega uma pgina, procura por esses comandos para executar a pgina o browser no responsvel pela formatao, tamanho ou recursos da pgina, mas sim o cdigo. Graas a esses e a outras tags, os documentos em HTML possuem as seguintes caractersticas:

33

Formatao de documentos em vrios estilos de letras, cores e tamanhos; Formatao de tabelas; Formatao de listas; Criao de mapas clicveis, relacionados a hiperlinks; Formatao de formulrios para auxlio no cadastramento em sites, compras, entre outros. Os pontos negativos do HTML so a falta de dinamismo grco nas pginas feitas com esse cdigo, alm dos banners animados que podem ser feitos com tags. Alm disso, os documentos HTML tm um uso comercial e empresarial um tanto restrito, j que a ltragem de dados no pode ser feita de forma simples e direta nos prprios documentos, necessitando de bancos de dados especcos, como o Oracle ou o MySQL, o que torna a administrao de sites comerciais cara e complicada.

Solues de dados para o HTML, entre outras coisas o Cold Fusion


A soluo para as decincias do HTML em matria de manipulao de dados viria com a criao do XML (Extensible Markup Language), uma linguagem baseada em tags textuais como o HTML, mas que permite a marcao, extrao e manipulao de dados atravs do prprio documento .xml. Enquanto essa tecnologia no era disponibilizada, no entanto, vrias empresas tentaram melhorar a anlise e a disponibilidade de dados do HTML, principalmente em servidores comerciais ou servidores de dados localizados em empresas. Uma dessas empresas foi a Allaire, que criou, em 1995, um servidor de extrao de dados em pginas HTML o Cold Fusion que depois seria vendido para a Macromedia. Os arquivos de Cold Fusion para extrao e manipulao de dados utilizam a extenso .cfml (Cold Fusion Markup Language), verdadeira precursora do XML, com o diferencial de ser um for-

34

Curso prtico de criao de sites

mato proprietrio e, portanto, pago. Alm disso, o Cold Fusion um servidor de aplicaes, suportando trfegos de grande volume, inclusive de bancos de dados de outras empresas, como Oracle e Sybase, alm de trazer suporte para o gerenciamento de aplicaes em clusters (diversas mquinas processando o mesmo aplicativo ou as mesmas informaes como se fossem uma nica mquina). Ou seja, um documento dinmico (ou Template) criado e armazenado em um servidor Cold Fusion diferente de uma pgina HTML esttica, pois pode publicar dados dinamicamente. Uma varivel armazena dados que podem ser utilizados por aplicaes. Como em outras linguagens de programao, voc deve congurar variveis para armazenar informaes que sero acessadas mais tarde e pode referenciar uma gama de tipos de variveis para manipular diferentes tipos de processamento. Veja a seguir quais so as variveis mais utilizadas em um documento .cfml: Local: inicia e manipula manualmente os valores na pgina dinmica; Query: armazena automaticamente dados obtidos de uma Query (ex.: SELECT * FROM Tabela ); Form: armazena automaticamente e passa valores dos form controls (text-box, list-box ou combo-box); URL: congura e passa manualmente os valores de uma pgina para outra no nal da url (ex.: Pag_Teste.cfm? Var=Valor&ID=2 ); HTTP: cookies. Congura manualmente e passa automaticamente valores de identicao entre o cliente e o servidor; CGI: fornece automaticamente detalhes do ambiente, disponveis no HTTP Web server, durante a requisio do browser do cliente; Application: inicia manualmente com valores uma pgina .cfm da aplicao. Referencia manualmente valores de pginas especcas de outras aplicaes.

35

O Curl
Outro padro de linguagem criado mais ou menos na mesma poca foi o Curl. Assim como o Cold Fusion, o Curl destaca-se por poder criar uma simples pgina com contedo esttico, como o HTML, at uma loja virtual, com a conseqente marcao e manipulao de dados e, principalmente, ambientes 3D totalmente revolucionrios. Talvez seja essa ltima caracterstica a grande vantagem dessa linguagem, a ponto de ela ser usada atualmente somente com esse propsito. Na poca de seu lanamento colocava-se em evidncia sobretudo a facilidade de assimilao dos comandos da linguagem, alm de sua maior estruturao em relao ao (sempre injustiado) HTML. As diferenas, todavia, eram bem poucas, o que acabou por enterrar a linguagem como uma potencial substituta do HTML (e o lanamento de ferramentas voltadas para o trabalho em HTML, como o Dreamweaver, deram um empurro extra para que isso acontecesse). Assim como no HTML, o Curl tambm baseava sua capacidade de formatar a pgina em tags. Nele, contudo, os comandos so denidos entre chaves. Outra diferena est na declarao de alguns comandos. Em vez de se declarar, para ns de insero de texto, o comando <BODY>, deve-se trabalhar com os comandos text e paragraph, que respectivamente denem a aparncia de um texto e a de um pargrafo. Conra, no box a seguir, os principais comandos de uma pgina ou aplicativo baseado em Curl.

title: ttulo; heading e heading level=2: dene cabealhos com nvel um e dois de destaque; paragraph: cria um novo pargrafo; text: texto; center: texto exibido no centro da pgina; italic: texto exibido em itlico; bold: texto exibido em negrito;

36

Curso prtico de criao de sites

itemize e enumerate: inicia uma lista de itens com marcadores ou numeradores; item: acrescenta um item lista de marcadores ou numerada com o texto item1; image source=url imagem.jpg: exibe uma imagem; hrule: linha horizontal; table: exibe uma tabela na pgina; row: insere uma linha na tabela; cell: inclui uma clula com o texto Primeira Clula.

Como voc pode ver, os comandos do Curl so includos dentro de chaves. Se algum comando estiver posicionado ou fechado incorretamente, a pgina no ser processada. Por exemplo, para exibir uma tabela, o correto digitar o cdigo: { {table row cell celula} } e no {table row cellcelula} O Curl Surge Lab IDE pode ser adquirido no site www.curl.com, menu Products, link Surge Lab Integrated Development Environment (IDE). Sua utilizao para programadores e estudantes gratuita, mas existe um contrato de utilizao por volume de dados de no mnimo 50 dlares.

37

Algo realmente diferente: o ASP


A Microsoft no poderia car de fora na busca de uma nova linguagem que desse maior riqueza ao HTML, principalmente depois do estrondoso sucesso do Windows NT como servidor de redes e de Internet e do crescimento do seu browser, o Internet Explorer, sobre o seu concorrente Netscape. E mostrou toda a sua fora criando uma linguagem de programao que, ainda hoje, padro para muitos setores da Internet: o ASP. ASP a sigla para Active Server Pages (Servidor de Pginas Dinmicas). Trata-se de uma linguagem para desenvolvimento de pginas HTML dinmicas que mesclou duas linguagens que ganhavam terreno na Web e em aplicaes de rede: o JScript (Java Script) e o VBScript. O ASP, assim como as linguagens abordadas anteriormente, foi criado tambm para possibilitar uma manipulao de dados mais completa, impossvel no HTML. uma linguagem para Web criada pela Microsoft, assim como o IIS, e seu objetivo permitir a criao de pginas e aplicaes que, de alguma forma, permitam interao com o usurio. Ele funciona da seguinte maneira: sempre que h a requisio de uma pgina .asp, o servidor interpreta os comandos que esto entre tags (sempre as tags!) e mantm as instrues de outras linguagens, enviando, em seguida, o resultado ao browser. Esse processo faz com que o carregamento de pginas em ASP seja consideravelmente mais rpido do que o de pginas construdas de forma hbrida (HTML e Java, por exemplo) sem o suporte do ASP. A partir de um Windows NT Server com o IIS3 ou IIS4 (Internet Information Server) instalado, possvel rodar cdigos que geram pginas HTML dinamicamente, e ento mand-las para o browser. Tambm possvel, a partir de uma nica rotina, gerar uma pgina HTML contendo consultas a banco de dados e envio e recebimento de correio eletrnico, via pginas HTML, para criao de rotinas de propaganda rotativa, para identicao e autenticao de usurios, para leitura de arquivos texto e uma innidade de outras aplicaes.

38

Curso prtico de criao de sites

Isso tudo ocorre sem que o usurio consiga perceber que informaes so processadas, j que o ASP baseia seu funcionamento em trs camadas: a) A primeira interface a do usurio, que acessar apenas a pgina de cdigo HTML, em sua mquina cliente, via browser. Aqui no h processamento pesado, existe somente captao e exibio de dados; b) Na segunda camada temos as chamadas regras de negcio, ou seja, as que buscaro informaes correlatas no cdigo-fonte da aplicao, em que esto todas as condies da aplicao. Essa etapa ocorre no mbito dos servidores da aplicao. c) A terceira camada corresponde ao banco de dados; aqui que ocorrem todas as atualizaes de dados efetivadas, com incluses, alteraes, excluses. O ASP utilizado na primeira camada para enviar dados para a segunda, e recebe dados da segunda para serem exibidos na primeira. Para quem tem conhecimento em Visual Basic, o ASP uma questo de adaptao. Para quem j tem noo de lgica de programao, basta aprender alguns comandos e comear a desenvolver alguns sistemas em ASP.

E o .net?
Aps acertar com o ASP que, durante um bom tempo, foi um exemplo de linguagem bem estruturada e com suporte a bancos de dados mais do que um componente, a Microsoft, preocupada com o desenvolvimento de linguagens voltadas para a criao de clientes .rich (clientes com recursos mais robustos, como por exemplo a utilizao interativa de aplicativos localizados no servidor, feitos principalmente pela Macromedia, como o Flash e o mais recente Studio MX), resolveu criar a plataforma .net.

39

E assim, h cerca de dois anos ouvimos a Microsoft bradar aos quatro cantos do mundo uma espcie de sigla chamada .net (l-se dotnet) que, segundo a prpria, promete revolucionar o mundo das pginas dinmicas de dados. A plataforma .net constitui-se de uma srie de programas para a criao dessa tecnologia e um modelo de programao e ferramentas que permitem mais integrao entre documentos .xml e a Web. Alm disso, a .net dever integrar-se com o novo sistema operacional Microsoft voltado para o mercado corporativo, o Windows .net e a diversas solues de servidores e bancos de dados concorrentes, inclusive algumas Open Source, como o Apache. Isso quer dizer que todos os produtos e servios criados com essa tecnologia passaro invisveis aos olhos do usurio, que sentir toda a fora do .net sem sequer desconar que faz uso dessa misteriosa sigla. A funcionalidade de recursos bsicos da Web, como HTML e pginas grcas de contedo dinmico, permanecer inalterada. J a criao de aplicaes complexas para o uso de clientes ter muito a ganhar com o .net, que trar recursos de linguagens consagradas como o ASP, o C e o Visual Basic para o mundo da Internet e dos clientes .rich.

Mais sobre ASP


Se voc optou por trabalhar com o IIS, mas quer construir pginas dinmicas antes mesmo de trabalhar com arquivos HTML, ento ter de trabalhar com o ASP. Todo arquivo feito em ASP tem extenso .asp. Esse arquivo possui cdigo em HTML e scripts que contm as instrues que geram algum tipo de interatividade com o usurio. Cadastrar-se em um site, comprar em um site de comrcio, ver data e hora atuais, receber e mandar e-mails so exemplos de interaes que o ASP pode proporcionar. O ASP tambm permite o acesso a banco de dados que suportam objetos especcos para utilizao de bancos de dados, como ODBC (Open Data Base Connectivity) e o acesso por ADO (Active Data Objects).

40

Curso prtico de criao de sites

As pginas em ASP, os scripts ou os servios requeridos no so executados no computador de quem acessa essas pginas por isso dizemos que a execuo ocorre no mbito do servidor e no do cliente. Ao acessar uma pgina desse tipo, o servidor que a hospeda dever ter suporte para o ASP, processar as solicitaes presentes na pgina e entregar o resultado no navegador do usurio, em formato HTML. Para que o servidor possa processar as requisies e entregar o resultado ao visitante da pgina, necessrio que nele esteja instalado o IIS (Internet Information Server) ou outro programa servidor capaz de processar pginas em linguagem ASP.

O que a linguagem ASP oferece


A linguagem ASP possui vrias vantagens: Independncia do navegador: qualquer navegador de Internet, em qualquer sistema operacional, pode acessar sites em ASP, pois todo o processamento de informaes feito no servidor e somente os resultados so mostrados ao usurio; Cdigo-fonte protegido: os visitantes de sites em ASP enxergam somente os resultados do processamento em pginas HTML, o que impede que o cdigo-fonte seja visualizado; Banco de dados: a linguagem ASP funciona muito bem para visualizar e manipular informaes em bancos de dados que suportam OBDC.

Exemplo de uma pgina em ASP


Agora que voc j sabe como as pginas em ASP so processadas, veremos um exemplo bastante simples, que mostra por que interessante usar ASP em vez de simples pginas HTML o que no livrar voc, contudo, de ter de trabalhar com conceitos dessa linguagem no prximo captulo. Vamos criar uma pgina em ASP,

41

salv-la, execut-la e, em seguida, veremos os resultados. O cdigo para a pgina mostrado a seguir: <%@ LANGUAGE= VBscript %> <html> <head> <title> Exemplo de pagina em ASP </title> </head> <body> Ol visitante! A hora atual <%=time%> e estamos no dia <%=day(now)%> <p> Servio informativo!<P> <%for repetidor = 1 to 3%> <font size = <%=repetidor%>> Cortesia Digerati Books <%=repetidor%></FONT><br> <%next%> </body> Note que: Ao utilizar a expresso <%@ LANGUAGE= VBscript %> denimos que estamos criando um script que ser executado toda vez que a pgina for acessada; Iniciamos uma pgina em ASP sempre denindo o incio (tambm chamado de bordas ou rebarbas) de uma pgina HTML. O HTML ser o veculo utilizado para o encapsular do cdigo ASP; <%for repetidor = 1 to 3%> utilizado para especicar quantas vezes determinada parte do script ser executada de forma contnua. 1 to 3 informa ao browser que o cdigo dever ser relido trs vezes se indicssemos a expresso como <%for repetidor = 1 to 5%> , esta seria repetida cinco vezes na mesma tela;

42

Curso prtico de criao de sites

<%=time%> retorna a hora atual do sistema do usurio no navegador; A expresso <%=day(now)%> retorna a data do dia, seguindo as conguraes do relgio do Windows ou de qualquer outro aplicativo de data e hora instalado na mquina cliente; Comandos do ASP devem sempre ser executados entre sinais de porcentagem (%). Salvando a pgina anterior em formato ASP ( teste.asp ) utilizando o Notepad, basta execut-la no browser e o resultado ser mostrado na tela. Agora, um detalhe interessante: como j foi dito antes, o usurio que visita um site em ASP no pode ver o cdigo-fonte, somente o resultado do processamento das pginas em ASP. Assim, se o usurio quiser ver o cdigo da pgina ASP do exemplo anterior, ver apenas o seguinte cdigo em HTML: <html> <head> <title> Exemplo de pgina em ASP </title> </head> <body> Ol visitante! A hora atual 18:28:30 e estamos no dia 1<P> <font size = 1> Digerati Books </FONT><br> <font size = 2> Digerati Books </FONT><br> <font size = 3> Digerati Books </FONT><br> </body> </html>

43

Variveis
Ao utilizar o ASP, trabalhamos com a noo de variveis, que so utilizadas para denir possveis caminhos para um comando. Quanto mais variveis so denidas em um bloco, mais temos opes que podem ser aplicadas sobre esse mesmo comando. Comandos funcionais, mas com uma nica varivel, so tratados como possuidores de resultados estticos. A ausncia de variveis tambm dene que um comando esttico. Para criar uma varivel simples no ASP utilizamos o sinal <%. Para delimitar uma varivel utilizamos os delimitadores <% (abertura da declarao da varivel) e %> (fechamento da declarao da varivel). Alm disso, devemos utilizar o delimitador dim para a criao da varivel. No exemplo a seguir, utilizamos a funo dim name para denir o nome do usurio de uma determinada pgina. Esse nome ser mostrado na pgina, em formato HTML: <html> <body> <% dim name name=Tadeu Carmona response.write(Meu nome : & name) %> </body> </html> Quando inserimos mais de uma varivel dentro de um sistema, criamos um array. O array cria diversas possibilidades para uma mesma varivel. O exemplo a seguir permite a escolha de um nome de usurio por meio da escolha de um nmero:

44

Curso prtico de criao de sites

<html> <body> <% Dim famname(6),i famname(1) = Carmona famname(2) = Silva famname(3) = Souza famname(4) = Matos famname(5) = Aleman famname(6) = Borges For i = 1 to 6 response.write(famname(i) & <br />) Next %> </body> </html> Denimos a varivel i para a aplicao do array. A varivel utilizada evocada com a utilizao do comando .response.write. Podemos tambm utilizar as variveis para gerar looping para uma mesma funo. No prximo exemplo, criamos um script que repete a mesma funo seis vezes, utilizando o comando for i. <html> <body> <% dim i for i=1 to 6 response.write(<h & i & >Header & i & </h & i & >)

45

next %> </body> </html> O resultado pode ser visto na Figura 2.1:

Figura 2.1.

Uma outra caracterstica interessante do VBA a capacidade de evocar scripts de dentro do cdigo. Pode-se, por exemplo, evocar scripts VBScript, adicionando funcionalidades tcnicas pgina: <html> <body> <% dim h h=hour(now()) response.write(<p> & now()) response.write( (Brazilian Time) </p>) If h<12 then response.write(Bom dia!) else response.write(Bom dia!) end if %> </body> </html>

46

Curso prtico de criao de sites

Esse o famoso script utilizado para dar bom-dia ao usurio e denir em que dia e hora a saudao est sendo feita. Note que utilizamos now (agora) para mostrar a hora atual do sistema. Note tambm que a funo If h<12 then estabelece que o script poder ser utilizado somente nas 12 primeiras horas do dia (00h00 a 12h00). Poderamos, dentro da mesma pgina, criar um novo script, para que o usurio fosse saudado com outro script nas horas da tarde, e ainda um outro script nas horas da noite. O script da tarde caria assim: <html> <body> <% dim h h=hour(now()) response.write(<p> & now()) response.write( (Brazilian Time) </p>) If h>12 then If h<18 then response.write(Boa tarde!) else response.write(Boa tarde!) end if %> </body> </html> O script da noite caria assim: <html> <body> <% dim h h=hour(now())

47

response.write(<p> & now()) response.write( (Brazilian Time) </p>) If h>18 then If h<24 then response.write(Boa noite!) else response.write(Boa noite!) end if %> </body> </html> A mesma implementao pode ser feita, dessa vez usando JavaScript. Apesar de ser mais fcil de programar, o JavaScript pode ser bloqueado por computadores que possuem antivrus com opes de congurao muito apertadas. <%@ language=javascript %> <html> <body> <% var d=new Date() var h=d.getHours() Response.Write(<p>) Response.Write(d + (Norwegian Time)) Response.Write(</p>) if (h<12) { Response.Write(Good Morning!) } else { Response.Write(Good day!) }

48

Curso prtico de criao de sites

%> </body> </html> Para chamar o nome do dia que ser congurado, devemos utilizar o script abaixo, que pode ser utilizado em conjunto com os anteriores: <html> <body> <p> Esta funao de VBScript <b>WeekdayName</b> e usada para definir um determinado dia da semana: </p> <% response.Write(WeekDayName(1)) response.Write(<br>) response.Write(WeekDayName(2)) %> <p>Nome abreviado do dia da semana:</p> <% response.Write(WeekDayName(1,true)) response.Write(<br>) response.Write(WeekDayName(2,true)) %> <p>Dia da semana corrente:</p> <% response.Write(WeekdayName(weekday(date))) response.Write(<br>) response.Write(WeekdayName(weekday(date), true)) %> </body> </html>

49

Da mesma maneira, podemos criar um script em ASP para que seja mostrado o ano do ms em que estamos: <html> <body> <p>Esta funao <b>MonthName</b> e usada para definir o mes <p> <% response.Write(MonthName(1)) response.Write(<br>) response.Write(MonthName(2)) %> <p>Nome abreviado do mes:</p> <% response.Write(MonthName(1,true)) response.Write(<br>) response.Write(MonthName(2,true)) %> <p>Mes corrente:</p> <% response.Write(MonthName(month(date))) response.Write(<br>) response.Write(MonthName(month(date), true)) %> </body> </html> Para mostrar a data, dia da semana e ms em que estamos, utilize o script a seguir. Note que utilizamos o script dentro do cdigo HTML, inserindo:

50

Curso prtico de criao de sites

<html> <body> Hoje <%response.write(WeekdayName(weekday(date)))%>, <br /> e estamos no ms <%response.write(MonthName(month(date)))%> </body> </html>

Countdown
Uma das funes do ASP que possui maior penetrao a que monta contadores (countdown). Os contadores podem ser utilizados para contagem de um ano de trabalho, da data de validade de um site ou da chegada de uma determinada data. No exemplo a seguir, denimos o contador para o ano 3000: <html> <body> <p>Contador para o ano 3000> <p> <%millennium=cdate(1/1/3000 00:00:00)%> It is <%response.write(DateDiff(yyyy, nium))%> anos para o ano 3000! <br> It is

Now(),

millen-

51

<%response.write(DateDiff(m, Now(), millennium))%> meses para o ano 3000! <br> It is <%response.write(DateDiff(ww, Now(), millennium))%> semanas para o ano 3000! <br> It is <%response.write(DateDiff(d, Now(), millennium))%> dias para o ano 3000! <br> It is <%response.write(DateDiff(h, Now(), millennium))%> horas para o ano 3000! <br> It is <%response.write(DateDiff(n, Now(), millennium))%> minutos para o ano 3000! <br> It is <%response.write(DateDiff(s, Now(), millennium))%> segundos para o ano 3000! </p> </body> </html>

52

Captulo 3
PHP

At agora falamos muito de ASP IIS, todos produtos da Microsoft, o que signica que, em algum momento de nossas atividades, teremos de pagar por alguma coisa, normalmente pela licena de uso do software, mesmo que hospedemos nossas pginas em um servidor de hosts. Alm disso, j advertimos que utilizar o Apache como alternativa para o servio de pginas ASP pode ser, conceitualmente, uma boa idia. Na prtica, no entanto, as solues ASP para Apache simplesmente no funcionam, ou apresentam erros que so sucientemente irritantes para pr a perder a pacincia de qualquer administrador de sites. por isso que foi criado o PHP, uma alternativa gratuita e de cdigo aberto ao ASP. A linguagem PHP uma linguagem de programao no sentido clssico do termo, com variveis, sentenas condicionais e funes diferente das linguagens baseadas em tags ou marcaes de texto, como o HTML, XML ou WML. E est mais prxima do C, do JavaScript e do prprio ASP. Originariamente (1994) chamado de Personal Home Page, atualmente o PHP conhecido como PHP: Hipertext Preprocessor. Sendo uma linguagem orientada para a programao em ambiente Web, o PHP hoje o principal rival do ASP. Em muitas coisas, no entanto, podemos dizer que eles so bem parecidos: ambos so linguagens de scripting inseridas no cdigo HTML, e que emolduram o cdigo. Outra semelhana com o ASP: o PHP executado no servidor, como uma aplicao interna deste, o que permite que sejam utilizados tambm recursos alocados no servidor, juntamente com a pgina, como servios de e-mail e bases de dados. O browser, novamente como no caso do ASP, limita-se a mostrar o resultado do processamento de cdigo feito no servidor. Ainda outra semelhana: o cdigo PHP pode ser inserido no meio do cdigo HTML comum, que interpretado parte pelo servidor. Quando pginas PHP so armazenadas em um servidor que no tem suporte para essa linguagem, veremos a pgina HTML

54

Curso prtico de criao de sites

perfeitamente montada, e os cdigos PHP espalhados pela pgina, retornando mensagens de erro.

Nosso primeiro cdigo PHP


Vamos mostrar a seguir o funcionamento de uma pgina PHP inserida no meio de um cdigo HTML. Essa ser tambm nossa primeira pgina PHP: <!Nossa primeira pagina PHP --> <html> <head> <title>Exemplo de PHP</title> </head> <body> Parte de HTML normal. <BR><BR> # Aqui comea o codigo PHP, que sempre comea pela inclusao de ? e abertura de aspas <?php echo Parte de PHP<br>; for($i=0;$i<10;$i++) { echo Linea .$i.<br>; } ?> </body> </html>

55

Nesta pgina, o cdigo HTML faz com que um mesmo processo seja repetido entre a linha 0 e 9, retornando a numerao em que a linha foi inscrita em cada execuo do cdigo. O resultado prtico pode ser visto com a insero do cdigo no bloco de notas do Windows ou em qualquer outro editor de texto que no crie formatao (no use o Word) salvando o arquivo sob o formato .php.

Variveis
At aqui mostramos somente o funcionamento de um arquivo PHP em uma pgina HTML. Agora entraremos mais a fundo no funcionamento de um cdigo PHP, estudando as variveis. Uma varivel um bloco que contm determinada informao, que pode ser substituda vontade por nmeros inteiros, nmeros decimais ou caracteres. O contedo das variveis pode ser substitudo a qualquer momento. No PHP, todas as programaes de variveis comeam com o cifro ($) e no necessrio denir uma varivel antes de utiliz-la nem denir um tipo para ela: uma varivel pode tanto conter nmeros quanto caracteres, assim como pode conter ambos simultaneamente. Observe como no cdigo seguinte aparece novamente inserida no meio de uma pgina HTML: <html> <head> <title> Insero de variveis em PHP </title> </head> <body> <?php $a = 1; $b = 3.34; $c = Ol, Mundo; echo $a,<br>,$b,<br>,$c; ?> </body> </html>

56

Curso prtico de criao de sites

No exemplo anterior, definimos trs variveis: $a, $b y $c . Em seguida, com o comando echo definimos que o valor contido nessas variveis deve ser impresso na pgina HTML, em linhas separadas.

Operadores aritmticos
As variveis nos auxiliam a automatizar alguns processos, entre eles algumas funes de clculo, que podem ser criadas com operadores aritmticos. Os operadores aritmticos do PHP so bem intuitivos, bastando ter aprendido o que foi ensinado sobre variveis e acompanhar a tabela de operadores seguinte para ser capaz de realizar cdigos:

Operador
+ *

Nome
Soma Subtrao Multiplicao

Exemplo
5+6 7-9 6*3

Descrio
Soma dois ou mais nmeros Restam dois ou mais nmeros Multiplica dois ou mais nmeros Divide dois ou mais nmeros Devolve o resto da diviso dos nmeros enunciados. Nesse exemplo, o resultado um. Soma um ao contedo de uma varivel. Subtrai um ao contedo de uma varivel.

Diviso

4/8

Mdulo

7%2

++

Soma um

$a++

--

Subtrai um

$a--

57

Esses operadores aritmticos, inseridos em um contexto de cdigo HTML, poderiam ser utilizados da seguinte maneira: <html> <head> <title>Operadores aritmticos</title> </head> <body> <?php $a = 8; $b = 3; echo $a + $b,<br>; echo $a - $b,<br>; echo $a * $b,<br>; echo $a / $b,<br>; $a++; echo $a,<br>; $b--; echo $b,<br>; ?> </body> Conra o exemplo de criao booleana criado a seguir: Operadores de comparaao aritmetica [doc. php] if ( $a == $b ) => IMPORTANTE!!! No faa: if ( $a = $b ) if ( $a <> $b ) => Equivalente a montagem: if ( $a != $b ) if ( $a > $b ) if ( $a < $b ) if ( $a >= $b ) if ( $a <= $b )

58

Curso prtico de criao de sites

Exemplos
Vamos estudar alguns exemplos para ter mais procincia com as tcnicas de criao de pginas PHP. Essas tcnicas podero ser utilizadas para a montagem de pginas com mais qualidade, a custo zero. Alm disso, esses exerccios prepararo voc para o prximo captulo, em que trabalharemos com bancos de dados SQL e MySQL. No exemplo a seguir utilizamos o clssico exemplo de Hello World para mostrar que os comandos echo e print podem ser equivalentes, quando se trata de trabalhar com PHP: </html> Hello World (II) Mostrar informaao : print / echo Inserir comentarios a uma linha: // Frases terminam com; <html> <head> <title>PHP Hello World</title> </head> <body> <?php // echo e print sao equivalentes echo Hello World!; ?> </body> </html> Em uma outra variao do Hello World mostraremos como declarar variveis da maneira correta. As variveis so as pernas do PHP: sem elas no possvel criar pginas que sejam realmente dinmicas, mas somente versteis: Hello World (III)

59

Declaraao de variaveis ($nomeVariable) <html> <head> <title>PHP Hello World</title> </head> <body> <?php // as variaveis sempre comeam com o sinal $ $strHello = Hello; /* as linhas de codigo comentadas podem ocupar mais de uma linha */ print($strHello World!); ?> </body> </html> Mais uma variao: em vez de inserir comentrios dentro do cdigo, iremos mesclar tags (etiquetas) HTML com cdigo PHP. Ter conhecimentos dessa tcnica essencial para gerar sites propriamente ditos, e no pginas HTML com pequenas inseres de PHP: Hello World (IV) Combinaao de tags (etiquetas) HTML e codigo PHP <html> <head> <title>PHP Hello World</title> </head> <body> <b> <?php print(Hello World); ?> </b> </body>

60

Curso prtico de criao de sites

</html> Hello World (IV-b) Inserindo tags HTML dentro de um script PHP <html> <head> <title>PHP Hello World</title> </head> <body> <?php print(<b>Hello</b> <i>World</i>); ?> </body> </html> A relao contrria perfeitamente possvel o PHP mesmo uma massa de modelar perfeita como vemos no exemplo seguinte, em que inserimos as tags HTML em um cdigo PHP: Hello World Exemplo realizado somente com PHP! Inserir TODAS as tags HTML em um script PHP <?php print print print print print print print print ?>

(<html>); (<head>); ( <title>PHP Hello World</title>); ( </head>); ( <body>); ( <p>Hello World!</p>); ( </body>); (</html>);

61

Um exerccio simples
Agora vamos montar um exerccio simples: um programa em PHP que escreva seu nome em negrito e a cidade onde voc nasceu. <?php $nome = Oscar; $cidade = Belo Horizonte; print(<p>Meu nome : <b>$nome</b> </p>); print(<p>Nasci em $cidade</p>); ?>

Um outro exerccio
Vamos fazer um programa em PHP que escreva o resultado da soma de duas variveis com os valores: x=-1 , y=9. <?php $x = -1; $y = 9; $soma = $x + $y; print(O valor de x : <i>$x</i> <br />); print(O valor de y : <i>$y</i> <br />); print(A soma de x e y : <i>$suma</i>); ?>

Trabalho rpido com tags HTML dentro de PHP: mais um exerccio


O problema das aspas duplas () <?php print(<p><font face=Verdana, sans-serif>

62

Curso prtico de criao de sites

Meu nome : <b>Oscar</b> <br /> </font></p>); ?> Soluo 1: substituir por dentro das TAGS HTML <?php print(<p><font face=Verdana, sans-serif> Meu nome : <b>Oscar</b> <br /> </font></p>); ?> Soluo 2: substituir por \ dentro das tags HTML <?php print(<p><font face=\Verdana, sans-serif\> Meu nome : <b>Oscar</b> <br /> </font></p>); ?> Soluo 3: Trabalhar com CSS, para evitar colocar parte do desenho dentro do cdigo HTML

Sentenas condicionais
Por meio dos comandos condicionais temos a oportunidade de avaliar uma expresso e, dependendo do resultado, retornar valores especcos para eles. Veja os exemplos seguintes: <?php $valor = 10; if($valor==5) { echo o valor menor que 10; } elseif($valor==10) { echo o valor igual a 10; } elseif($valor==15) { echo o valor maior que 10; }

63

else { echo o valor nem menor que 10 nem igual a 10; } ?> Trabalhando com esses exemplos teremos a frase: o valor igual a 10 porque o valor da varivel $valor igual passada no elseif. Ao montar uma estrutura com comandos variveis, lembre-se de que: O if sempre abre as condies; O elseif sempre o seguinte do if e somado para cada opo; O else nal sempre escolhido se nenhum dos resultados no if ou elseif forem obtidos. No exemplo a seguir, criamos um aplicativo que retorna o valor negativo ou positivo de um pequeno estoque, de acordo com a quantidade declarada. Comandos condicionais: if [doc. php] if ( $quantidade < 0 ) { print(Error:: A quantidade negativa!); } elseif ( $quantidade < 10 ) { print(A quantidade pedida menor que 10); } else { print(A quantidade mostrada : $quantidade); }

64

Curso prtico de criao de sites

Estruturas de controle
Agora vamos demonstrar os tipos de estruturas de controle e repetio que existem no PHP. Essas estruturas so as engrenagens do PHP: por meio delas que o programa se torna capaz de criar sistemas dinmicos dentro do cdigo. if/else subttulo2 A estrutura if/else, como na maioria das linguagens, a mais utilizada, e no PHP no seria diferente. <?php if ($var1 > $var2) { echo var1 maior que var2; } else { echo var1 no maior que var2; } ?> Nesse exemplo, se a varivel $var1 for maior que a varivel $var2, ser impresso na tela var1 maior que var2, caso contrrio (if) ser impresso var1 no maior que var2. O primeiro exemplo poderia ser reescrito de uma maneira alternativa, como mostra o trecho seguinte: <?php if ($variavel == 1):{ echo varivel = 1; elseif ($variavel == 4): echo varivel = 4; elseif ($variavel == teste): echo varivel =teste; else:

65

$variavel == erro!; endif ?> No exemplo anterior utilIzamos uma maneira alternativa de escrita da estrutura. Nesse caso, se a varivel $varivel for igual a 1, ser impresso varivel = 1, se a varivel for igual a 4, ento ser impresso varivel = 4, seno se $varivel for igual a teste, ento o script ter como sada o texto teste. No caso de nenhuma dessas condies serem verdadeiras (true), ser impresso na tela erro!.

Switch
A estrutura de controle switch se comporta como se colocssemos vrios if seguidos no mesmo cdigo. Muitas vezes o programador tem de comparar a mesma varivel com alguns valores diferentes, e a que entra a estrutura switch. Utilizarei o exemplo anterior para demonstrar como feita a implementao do switch case, como tambm conhecido. <?php switch($variavel){ case 1: echo varivel = 0!!; break; case 4: echo varivel = 4!!; break; case teste: echo varivel = teste!!; break; } ?> Nesse caso a varivel ser testada com os valores 1, 4 e teste. Como no foi denido um default (valor padro), se nenhuma das

66

Curso prtico de criao de sites

condies forem verdadeiras, o script no ter nenhum retorno. Vamos ver um exemplo com default: <?php switch($variavel){ case 1: echo varivel = break; case 4: echo varivel = break; case teste: echo varivel = break; default: echo A varivel go!! } ?>

0!!;

4!!;

teste!!;

no igual a 0, 4 ou Rodri-

Nesse caso, mesmo que todas as condies sejam false, o script ir executar o trecho de cdigo que est no default.

While e suas variaes


A estrutura while uma das mais simples estruturas de repetio e seu comportamento idntico ao das estruturas while em outras linguagens, como C, por exemplo. Sua sintaxe padro : while (expresso) instrues Essa instruo executada enquanto a expresso de controle for true. Esse teste feito no comeo do loop e, assim sendo, se o resultado da primeira vericao for false, as instrues no so executadas nem uma vez.

67

<?php $i = 1; while ($i <= 10) { echo $i++; } ?> O exemplo a seguir cria um script que imprime na tela os nmeros de 0 a 10. Quando a varivel $i alcana o valor 11, ao ser testada ser constatado que ela no nem menor nem igual a 10, portanto retorna false, no executando o cdigo dentro do loop. <?php $i = 1; while ($i <= 10): echo $i; $i++; endwhile; ?>

Do... while
A estrutura do... while quase idntica estrutura while, com a diferena que o teste da varivel feito no nal da estrutura, ou seja, o cdigo executado pelo menos uma vez. Veja o exemplo seguinte: <?php $i = 0; do { echo $i; } while ($i > 0); ?>

68

Curso prtico de criao de sites

Nele vemos que a varivel $i seria impressa ao menos uma vez mesmo que o resultado da vericao fosse false. Aps a impresso, o cdigo no volta a ser executado. Para entendermos melhor, vamos dar uma olhada em mais um exemplo: <?php do { if ($i > 10) { echo i maior que 10; } } while ($i > 10); ?> Nesse exemplo, temos a mesma estrutura do exemplo anterior. O nico diferencial ca por conta de um teste na varivel de controle de repetio. Se (if) o resultado do mesmo for true, ser impressa a mensagem i maior que 10 enquanto i for maior que 10, conforme a condio do lao de repetio.

For
O for a estrutura de repetio mais complexa que existe no PHP, como em quase todas as linguagens de programao. Sua sintaxe : for (expr1; expr2; expr3) instruoes A primeira instruo executada incondicionalmente no comeo do loop. A segunda executada ao se retornar o valor true (verdadeiro). Os comandos so executados, caso seja false o loop para sua execuo. No nal de cada loop, a terceira expresso executada e so refeitos os testes anteriores. Agora observe a seguinte implementao: <?php

69

for ($i = 0; $i <= 100; $i++) { echo $i; } ?> Esse script imprime nmeros de 0 at 100, de acordo com a segunda expresso do for ($i <= 100; $i++) . Utilizando os parmetros da linguagem, vemos que for estabelece que i igual a zero. No segundo parmetro, estabelece-se que i maior ou igual a 100. Cada uma das trs expresses do for pode ser vazia. Por exemplo: se a segunda expresso for vazia, teremos um loop que pode rodar innitamente. Essa tcnica til quando se utiliza o comando break para interromper a repetio do bloco. <?php for ($i = 0; ; $i++) { if ($i > 10) { break; } echo $i; } ?>

Comando break
O comando break interrompe (da seu nome) a execuo de estruturas como o for, while, do...while e switch. Esse comando aceita um valor numrico como parmetro, em que podemos denir em que nvel queremos interromper a execuo. Veja o exemplo seguinte: <?php $i = 0; while ($i< 25) { switch ($i) {

70

Curso prtico de criao de sites

case 5: echo I = 5; break 1; /* Sai somente do switch. */ case 10: echo No 10; saindo<br />\n; break 2; /* Sai do switch e while. */ default: break; } } ?>

Tipos de dados estruturados (simples): Array (vetor ou matriz)


Observe o exemplo a seguir: $produtos[0] = Acar; $produtos[1] = Azeite; $produtos[2] = Arroz; Array (vetor) $produtos Os valores 0, 1 e 2 so os ndices do array. Um array no PHP um tipo de mapa ordenado. Um mapa um tipo que relaciona valores para chaves. Acar, Azeite e Arroz so os valores que contm o array. O vetor contm trs posies, mas se indexa de 0 a 2 (!). Outra possibilidade: podemos fazer a inicializao do script a partir do array $produtos. Veja no exemplo a seguir: $produtos = array(Acar, Azeite, Arroz); ^ ^ ^ [ 0 ] [ 1 ] [ 2 ]

71

Utilizando o comando for podemos mostrar o contedo do array $produtos (for). Veja essa nova implementao no exemplo: for ($i=0; $i<3; $i++){ print $produtos[$i] . <br />; } foreach: Mostrar o conteudo do array $produtos [doc. php] $produtos[0] = Acar; $produtos[1] = Azeite; $produtos[2] = Arroz; print <ul>; foreach ( $produtos as $produto ) { print <li> . $produto . </li>; } print </ul>. Os exemplos mostrados so sucientes para a criao de qualquer estrutura de site simples utilizando Apache e PHP. Existem algumas funes, no entanto, que podem ser teis, em conjunto com o elemento array, para incrementar funes a uma pgina. o caso, por exemplo, de count: count($array) que devolve o nmero de posies do vetor, e pode ser usada para efetuar enumeraes, contagens dentro do site etc. sort($array) Ordena um vetor segundo uma determinada ordem.

72

Curso prtico de criao de sites

shuffle($array) Usado para mesclar (desordenar) um vetor. $array = range(-4, 7) Comando usado para gerar um array, com elementos com os valores de -4 a 7.

Gesto de Formulrios HTML (POST)


Formulrio uma pgina que disponibiliza entrada e sada de dados para o site, para um banco de dados pertencente a ele etc. Mediante o uso de formulrios, o cliente pode enviar dados ao servidor. Em geral, qualquer ao que requeira a comunicao de dados com um servidor pode ser considerada um formulrio. Exemplo: <html> <head> <title>Exemplo de Formulrios</title> </head> <body> <FORM METHOD=POST ACTION=processar _ mensagem.php> Escreva seu nome: <INPUT TYPE=text NAME=nome> Escreva seu e-mail: <INPUT TYPE=text NAME=mail> Escreva sua mensagem: <TEXTAREA rows=11 name=texto cols=60></textarea> <INPUT TYPE=submit value=Enviar> </FORM>

73

</body> </html>

Implementao de formulrio: envio de e-mails com anexos


O tipo de formulrio PHP mais utilizado na maioria dos sites o que cria uma pgina para envio de mensagens de e-mail. Algumas verses mais recentes desse formulrio usadas por grande parte dos provedores de webmail pode tambm inserir anexos na mensagem. O primeiro arquivo que devemos criar se chama email.php e conter todas as instrues necessrias para que a funo POST seja capaz de montar o cabealho da mensagem e envi-la logo em seguida. email.php // o primeiro passo capturar os dados para um formulrio $nom = $ _ POST[nome]; $emai = $ _ POST[email]; $telefon = $ _ POST[telefone]; $mensage = $ _ POST[mensagem]; $msg $msg $msg $msg = $nom\n; .= $telefon\n; .= $emai\n; .= $mensage\n;

$cabealho = Para: destinatrio\n; echo $nom; mail(email@email.com.br,Formulrio de Contato Enviado pelo Site,$msg,$cabealho); echo<h1 align=center>Muito obrigado, $nome</h1>; echo<p align=center>Agradecemos seu Contato.</p>; ?>

74

Curso prtico de criao de sites

Para chamar a rotina email.php, necessitamos de uma outra rotina. Essa rotina se chamar contato.php e nela utilizaremos a forma email. contato.php <tr> <td height=25> </td> <td valign=top><font size=2><strong>Nome:</ strong></font></td> <td colspan=4 valign=top><form name=nome method=post action=> <input name=nome type=text id=nome size=45> </form></td> <td> </td> <td> </td> </tr> <tr> <td height=15></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td height=22></td> <td valign=top><font size=2><strong>Telefone:</ strong></font></td> <td colspan=3 valign=top><form name=telefone method=post action=> <input name=telefone type=text id=telefone size=20>

75

</form></td> <td> </td> <td> </td> <td></td> </tr> <tr> <td height=17></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td height=22></td> <td valign=top><font size=2><strong>email:</ strong></font></td> <td colspan=3 valign=top><form name=email method=post action=> <input name=email type=text id=email size=30> </form></td> <td></td> <td></td> <td></td> </tr> <tr> <td height=14></td> <td></td> <td></td> <td></td> <td></td> <td></td>

76

Curso prtico de criao de sites

<td></td> <td></td> </tr> <tr> <td height=22></td> <td valign=top><font size=2><strong>Mensagem:</ strong></font></td> <td colspan=2 rowspan=2 valign=top><form name=mensagem method=post action=> <textarea name=mensagem cols=45 rows=4></textarea> </form></td> <td> </td> <td></td> <td></td> <td></td> </tr> <tr> <td height=60></td> <td> </td> <td> </td> <td></td> <td></td> <td></td> </tr> <tr> <td height=22></td> <td> </td> <td> </td> <td> </td> <td> </td> <td></td> <td></td> <td></td> </tr>

77

<tr> <td height=24></td> <td></td> <td valign=top> <form method=post action=email. php> <input type=submit name=Submit value=Enviar > </form></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> ...

Projeto de Livro de Endereos


Quer mais um exemplo? Vamos criar, ento, utilizando apenas HTML e PHP, um formulrio que se transforma em um livro de endereos (livro de ouro) ou livro de presena para os assinantes do site. Basta seguir o cdigo para implementar o formulrio, mas voc deve possuir um banco de dados MySQL (ou SQL Server, se for o caso) para que as informaes sejam enviadas para um banco de dados. <? // Exemplo de GuestBook v10pm // Parmetros de conexo $host = localhost; $user = zoneboard02; $pass = anthony; $bdd = zoneboard02; // conexo @mysql _ connect($host,$user,$pass) or die(Impossvel de se conectar)

78

Curso prtico de criao de sites

@mysql _ select _ db($bdd) or die(Impossvel de se conectar) // montagem da tabela guestbook $table=guestbook; $URL = $PHP _ SELF; $fond=#000000; $zone = #ffffff; // Escrevendo uma nova mensagem if($comment) { $date = time(); $query = INSERT INTO $table(date,name,email,url,c ity,country,comment); $query .= VALUES ($date ,$name ,$email ,$url ,$c ity ,$country ,$comment); $result = mysql _ query($query); } // Verificando a validade da senha de administrador if($passe==by-artderue62) { setcookie(guestbook,ok); Header(Location: $URL); } // Seleo do modo administrador if($act==noadmin) { setcookie(guestbook); Header(Location: $URL); } // Destruio de mensagens indesejveis if(isset($del) && isset($guestbook)) { $query = DELETE FROM $table WHERE date = $del; $result = mysql _ query($query); } ?> <HTML><HEAD><TITLE>Meu Livro de Contatos</TITLE>

79

<style type=text/css><!-A { font:bold 8pt Verdana } :hover { color:red;text-decoration:overline } td,th,textarea,input { font:normal 8pt Verdana } .titre { background:<? echo $fond; ?> } --></style> </HEAD><BODY bgcolor=<? echo $fond; ?>> <table width=100% height=100% bgcolor=<? echo $zone; ?>><tr><th> <? if($act==admin) { ?> <form method=post action=<? echo $URL; ?>> <table><tr> <th>Password : </th> <th><input type=password name=passe size=10></ input></th> <th><input type=Submit value=OK></input></th> </tr></table> </form> <? } else { ?> <A href=#form>Assine meu Livro de Contatos!</A><br> <? $query = SELECT * FROM $table ORDER BY date DESC; $result = mysql _ query($query); echo mysql _ numrows($result); ?> <font color=#ffffff>messages : <? if($guestbook) { ?></font> <br><A href=<? echo $URL; ?>?act=noadmin> Mudar para o modo de administrador </A> <? } ?> <table width=95%><tr><td><hr size=1> <? while ($val = mysql _ fetch _ array($result)) { ?> <div class=title><? if($guestbook) { ?> <A href=<? echo $URL; ?>?del=<? echo $val[date]; ?>> <img src=minipoub.gif border=0 width=14 height=15 align=absmiddle></A>

80

Curso prtico de criao de sites

<? } ?> <? echo date(d/m/Y,$val[date]); ?> de <A href=mailto:<? echo $val[email]; ?>><? echo $val[name]; ?></A> (<? echo $val[city]; ?>, <? echo $val[country]; ?>)</div> <? if($val[url]!=) { ?> <A href=<? echo $val[url]; ?> target= _ blank><? echo $val[url]; ?></A> <? } ?> <div><font color=#ffffff><? echo str _ replace( <,<,$val[comment]); ?></div></font><hr size=1> <? } ?> </td></tr></table> <script language=JavaScript><!-function verif(email) { var arobase = email.indexOf(@); var point = email.lastIndexOf(.) if((arobase < 3)||(point + 2 > email. length)||(point < arobase+3)) return false return true } function testform(nom,mail,url,city,country,comment) { if(nom.value==) { nom.focus();return false } if(!verif(mail.value)) { mail.value=;mail. focus();return false } if(url.value==http://) { url.value= } if(city.value==) { city.focus();return false } if(country.value==) { country.focus();return false } if(comment.value==) { comment.focus();return false } return true } //--></script> <A name=form></A><table width=80%><tr><th> <form method=post action=<? echo $URL; ?>

81

onSubmit=return testform(this.name,this. email,this.url,this.city ,this.country,this.comment)> <table cellspacing=0 cellpadding=3 border=0 bgcolor=<? echo $fond; ?>><tr> <th colspan=4>Nome<br><input name=name size=15></th> <th colspan=4>Cidade<br><input name=city size=15></th> <th colspan=4>Pas<br><input name=country size=15></th> </tr><tr> <th> </th> <th colspan=5>E-mail<br><input name=email size=20></th> <th colspan=5>Site<br><input name=url value=http:// size=20> </th><th> </th> </tr><tr> <th colspan=12><br><textarea name=comment rows=4 cols=55></textarea> <br><br><input type=Submit value=Assine meu Livro de Contatos!></input><br> <br><A href=#>Cabealho</A><br><br> </th></tr></table> </form> </table> <? } ?> </th></tr></table> </BODY></HTML> <? mysql _ close(); ?>

82

Captulo 4
SQL e MySQL

Uma das principais utilidades das pginas dinmicas , alm da aparncia de interao com o usurio, permitir que dados enviados por ele ou processados pelo servidor durante uma sesso Web sejam armazenados para posterior vericao por parte dos administradores de sistemas ou pessoal das vendas. Existem at algumas empresas que oferecem o servio de garimpagem dos dados enviados por usurios e armazenados em bancos de dados, tal a quantidade e diversidade de informaes e oportunidades que podem ser obtidas atravs desse expediente principalmente para empresas de mala direta, marketing direto e lojas virtuais. Anal, imagine que voc um acionado por chocolate suo branco que sempre entra em diversas pginas procurando por ofertas desse produto e que, justamente uma das pginas que voc visitou recentemente possua um formulrio do tipo Escolha sua marca preferida, acompanhado de um campo para adicionar seu e-mail para ganhar prmios. Esse formulrio provavelmente est ligado a um banco de dados, que guardar seu e-mail e o dia em que voc se inscreveu na promoo, quantas vezes voc entrou na pgina ( para isso que existem os cookies) e sua marca de chocolate preferida. Bancos de dados no so novidade: desde os tempos dos mainframes com cartes perfurados j existem sistemas de contagem de bancos de dados. Para os usurios do Microsoft Windows e de seu servidor Web, o IIS, a melhor opo o SQL um poderoso banco de dados online, desenvolvido por uma pequena empresa e comprado em denitivo pela Microsoft em 1998. O SQL utiliza strings, como linguagem de programao baseada em scripts, para fazer a garimpagem e retirada de dados enviados pelos clientes. Esses scripts podem ser inseridos no corpo de pginas ASP, JAVA ou PHP sem afetar a utilizao da pgina por parte do usurio.

Instalao do SQL Server


Para utilizar o Microsoft SQL em um site voc precisar do inefvel Bloco de Notas para insero dos scripts, e de uma mquina

84

Curso prtico de criao de sites

rodando o SQL Server o sistema de banco de dados em si para que as requisies produzidas pelos scripts sejam enviadas. Os requisitos mnimos para a instalao do SQL Server so (nesses testes utilizamos a verso 2000): Pentium II, 256 MB de RAM, HD de 4 GB; Conexo com a Internet ou com uma rede interna; Windows NT 4.0 Server com Service Pack 5, Windows 2000 Server com Service Pack 2 ou Windows XP com Service Pack 1. 1. Insira o CD do Microsoft SQL Server 2000 Enterprise Edition e clique no arquivo Setup.bat. O dilogo de instalao do Microsoft SQL Server 2000 Enterprise Edition iniciado. 2. No dilogo Nome do Computador, clique em Computador Local e em Avanar. 3. No dilogo Seleo de Instalao, clique em Criar uma nova instncia do SQL Server. Se voc j instalou um servidor SQL e deseja apenas instalar uma estao de trabalho para manipulao do banco de dados, clique em Instalar Ferramentas do Cliente e, em seguida, em Avanar. 4. No dilogo De nio de Instalao, clique em Ferramentas do Cliente e Servidor e, em seguida, em Avanar. No dilogo Nome da Instncia, deixe Padro marcado e clique em Avanar. 5. No dilogo Tipo de Instalao, clique em Personalizada; clique no boto Procurar e utilize uma partio diversa da utilizada pelo sistema operacional. O ideal mesmo seria utilizar um disco rgido em separado, mas sabemos que isso nem sempre possvel. Se voc utilizar a partio E, por exemplo, seu diretrio passar a se chamar E:\MYSQL .

85

6. No dilogo Selecionar Componentes, aceite todos os componentes e subcomponentes padro. Clique em Avanar. 7. Na janela Contas de Servios, mantenha o valor padro (utilizar a mesma conta para cada servio). Em seguida, clique em Iniciar automaticamente o Servio SQL Server. Para as Denies de Servio, clique em Utilizar a Conta do Sistema Local. Clique em Avanar. 8. Em Permisses de Acesso Padro, sob Permisses de Ativao Padro e sob Permisses de Congurao Padro, clique em Editar Padro para denir as permisses padro. 9. Na caixa Tipo de Acesso, selecione um tipo de acesso para o usurio ou grupo selecionado. No dilogo Modo de Autenticao, clique em Autenticao SQL e Autenticao Windows em Modo Misto e digite uma senha para o SQL. 10. No dilogo Denies de Intercalao, clique em Designador de Intercalao e selecione Latin1_General. Selecione Binrio como Ordem de Classicao e clique em Avanar. No dilogo Bibliotecas de Rede, aceite os valores padro para Canais Nomeados, Nome do Canal Nomeado e Sockets TCP/IP. 11. Quando o dilogo Iniciar Cpia de Arquivos for aberto, clique em Avanar para continuar a instalao do servidor de banco de dados. Se voc desejar alterar quaisquer parmetros, clique em Voltar. 12. No dilogo Escolher Modo de Licenciamento, clique em Licena do Processador para. Digite o nmero de processadores necessrios para sua mquina normalmente voc utilizar um nico processador. Clique em Continuar e conclua a instalao.

86

Curso prtico de criao de sites

Criao de uma tabela SQL


Aps a instalao, vamos iniciar a construo de nosso banco de dados SQL. Vamos, ao mesmo tempo, criar uma tabela que armazene todos os logins feitos em nossa pgina ASP. Basta abrir a pgina e abrir uma nova entrada do cdigo no meio do cdigo HTML, como: <%@ LANGUAGE=VBSCRIPT dim StrSql Varivel que arquiva o comando de SQL a executar StrSql =CREATE TABLE dbo.logins (nome VARCHAR, senha INT NOT NULL) # o prefixo dbo mostra que a base de dados a ser utilizada SQL Server set conn=server.createobject(adodb.connection) #esse comando cria um objeto no caso a tabela que j foi declarada no servidor conn.open DsnName,userName,Password set rs = conn.execute(StrSql) response.write(Query feito! & StrSql) %> Para executar o cdigo basta abrir o seu browser e introduzir a URL www.meu site.com.br/New_Table.asp.

Criao de usurios
Criada nossa base de dados SQL, provavelmente desejaremos inserir alguns usurios no sistema. Para isso digite: CREATE USER nome _ do _ usurio [ [ WITH ] opo [ ... ] ] em que a opo pode ser: PASSWORD (digite uma senha para o usurio) IN GROUP nome _ do _ grupo do usurio se no houver nenhum, digite o comando CREATE GROUP VALID UNTIL data _ hora

87

Oferecendo privilgios a um usurio


Para atribuir todos os privilgios de bancos de dados a um novo usurio, digite: GRANT ALL PRIVILEGES ON meuBD.* TO usuario@localhost IDENTIFIED BY hello WITH GRANT OPTION; FLUSH PRIVILEGES; Esse comando atribui todos os privilgios a todas as tabelas do banco de dados meuBD ao usurio, a partir da mquina localhost, cuja senha hello. O comando ush privileges atualiza as novas alteraes na tabela SQL em uso. Caso o usurio no exista, um novo usurio ser criado.

Funes de data e hora


Aps criar uma base de dados e utilizar consultas, por exemplo, como as mostradas, pode ser necessrio executar uma ltragem dos dados armazenados. Anal de contas, bancos de dados servem para que os dados inscritos neles sejam utilizados. Podemos fazer uma seleo, a partir da interface do cliente do SQL, utilizando o seguinte comando: SELECT * FROM table WHERE MONTH(data)=05; Em que 05 seleciona todos os registros da tabela em que o campo data possui uma data localizada no ms de maio. Tambm podemos utilizar o seguinte comando: SELECT DISTINCT DAYOFMONTH(data),MONTH(data),YEAR(data); Esse comando seleciona o dia do ms, ms e ano localizados na tabela. Basta inserir os respectivos dados, na forma de nmeros 01 a 30 para dias; 01 a 12 para meses, nmeros de quatro dgitos para anos nas respectivas strings.

88

Curso prtico de criao de sites

Importando e exportando arquivos


Mas nem s de consulta vive a administrao de bancos de dados SQL. Alguns bancos e tabelas particulares costumam inchar tanto que se torna necessrio migrar os dados para o formato texto e esvaziar a tabela original. Nesse caso, podemos utilizar o comando: LOAD DATA INFILE data.txt INTO TABLE tbl _ name FIELDS TERMINATED BY , ENCLOSED BY LINES TERMINATED BY \n; que carrega os registros em formato .txt do arquivo data.txt para a tabela tbl_name, em que os campos esto separados por , (vrgula), delimitados por (aspas) e as linhas delimitadas por \n (quebra de linha). Para selecionar todas as ocorrncias encontradas na tabela e lev-las ao arquivo .txt, podemos utilizar o comando: SELECT * INTO OUTFILE eu.txt FROM table; No precisamos, necessariamente, apelar para um arquivo .txt; podemos fazer um backup da tabela original em uma nova tabela. Basta digitar em Cliente do SQL: INSERT INTO table1 (nome) SELECT nome FROM table2 No necessrio criar a tabela previamente ela criada no instante em que solicitada uma cpia de tabela preexistente tendo-a como arquivo de sada.

O Comando JOIN
s vezes, os dados que necessitamos esto dispostos em mais de uma tabela. Nesses casos usa-se o comando join, que utiliza campos de dados em comum para unir mais de uma tabela.

89

Suponhamos, por exemplo, possuirmos uma tabela com a listagem de e-mails e outra de contra-senhas a segunda possui todas as senhas de compra que devem ser fornecidas a cada usurio todas as vezes que ele inserir a conta de e-mail em um formulrio. Essa lista pode utilizar o seguinte cdigo: USE testesenha; SELECT e-mails.nome,contrasenha.resposta FROM emails,contrasenhas WHERE e-mails.contrasenhas = emails.contrasenhas; Pode-se tambm usar o join de forma implcita, utilizando a clusula de condio where para mostrar to-somente campos em que os registros sejam correspondentes. O cdigo seria: USE testsenha; SELECT e-mails.nome,contrasenha.resposta FROM e-mails INNER JOIN contrasenhas ON e-mails.contrasenha = emails.contrasenha; Existem mais algumas variaes de join que podem ser utilizadas. Em left join, os registros da primeira tabela so exibidos right join faz o mesmo com a segunda tabela.

Aliases e contagem
Um recurso que torna a criao de um cdigo SQL mais rpida so os aliases ou apelidos dados a uma determinada tabela ou funo. Basta colocar o alias desejado em frente aos nomes dos campos na clusula select e depois dos nomes das tabelas from. Veja o cdigo: USE testesenha; SELECT f.e-mail FROM contrasenhas f, contrasenhas d WHERE d.contrasenhas = f.contrasenhas AND d.resposta = Recebido;

90

Curso prtico de criao de sites

Note no cdigo anterior que, aps a implementao do alias, podemos, em vez de digitar contrasenha.resposta, digitar simplesmente d.descricao. Com o comando group by, por sua vez, podemos utilizar algumas das novas utilidades trazidas pelo comando alias. Utilizando group by ainda possvel fazer vrios tipos de estatsticas e contagens o que muito til para fazer a contabilidade de acessos e sucessos de um website. Se voc possuir um servidor de e-mails em uma rede interna e desejar conhecer as contas de e-mails dos funcionrios de cada departamento, por exemplo, pode usar o seguinte cdigo: USE servidorl; SELECT d.conta departamento, CONT(f.e-mail) total FROM e-mails f, departamentos d WHERE d.departamento = f.departamento GROUP BY f.departamento Voc tambm pode utilizar o comando sum: USE servidor; SELECT d.conta departamento, CONT(f.e-mail) total FROM e-mails f, departamentos d WHERE d.departamento = f.departamento SUM f.departamento que soma os resultados agrupados de todos os departamentos. Tambm podemos utilizar o comando select, como neste caso, em que ele retorna todos os e-mails, localizados na tabela e-mails, que pertenam ao provedor Hotmail: select e-mail, rg from E-MAILS where provedor = hotmail;

O MySQL
Para quem no quer (ou no pode) gastar dinheiro, ou ainda se utiliza de um servidor rodando GNU/Linux e Apache, existe a pos-

91

sibilidade de utilizar o MySQL, uma ferramenta livre de bases de dados, que para o PHP o que MS-SQL para o Windows e o IIS. A instalao do MySQL simples, desde que voc possua os pacotes corretos: mysql-server-(verso do pacote), mysql-client(verso do pacote), mysql-doc-(verso do pacote). Existe tambm uma verso para Windows, que pode ser congurada com o auxlio de arquivos texto. Os pacotes podem ser obtidos em http://www. mysql.com, assim como executveis para Windows. 1. Para fazer a instalao no GNU/Linux usando a linha de comando, digite: ./configure --prefix=/opt/mysql-4.0.20 make make install 2. Em seguida, altere a senha de administrador do programa: /opt/mysql-4.0.20/bin/mysqladmin -u root password nova _ senha /opt/mysql-4.0.20/bin/mysql u root p 3. Ser pedida a senha que acabamos de cadastrar. Agora voc estar em um prompt do MySQL como mostrado a seguir: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1 to server version: 4.0.2 Type help; or h for help. Type c to clear the buffer. mysql>

92

Curso prtico de criao de sites

4. Precisamos selecionar o banco de dados principal, em que cam cadastradas as contas do usurios para o acesso. Para isso, basta digitar: mysql> use mysql e surgir a mensagem: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed Feita a instalao bsica, vamos implementar o acesso a um banco de dados MySQL usando um servidor PHP. Essa implementao, em relao aos fatores tempo gasto e simplicidade, muito superior implementao anloga usando o Microsoft SQL e o IIS. <? // // =========================================== ===== // // // Cdigo PHP + acesso a um BD MySQL // // =========================================== ===== // // Dados da conexo $host = localhost; $user = userpomXX;

93

$password = *****; $database = pomXX; // 1) Abrindo uma conexo com a base de dados $db = mysql _ connect($host, $user, $password); // 2) Selecionando a base de dados com a qual se deseja trabalhar mysql _ select _ db($database, $db); // 3) Consulta SQL $consulta = select nombre, mail from guestbook; // 4) Executar a consulta $resultado _ consulta = mysql _ query($consulta, $db); // 5) Mostrar resultados while ( $fila = mysql _ fetch _ array($resultado _ consulta) ) { print($fila[mail]<br />); print($fila[nombre]<br />); } // 6) Liberar recursos e fechar conexo (opcional) mysql _ free _ result ( $resultado _ consulta ); mysql _ close ( $db ); ?>

Criando uma tabela em um servidor MySQL via PHP


Para nalizar, criaremos um comando para compor bases de dados a partir de um site PHP. O primeiro passo para implementar essa funcionalidade criar o arquivo formulaire.htm. formulaire.htm:

94

Curso prtico de criao de sites

//Incio do formulrio, sob o formato HTML <html> <body> <form method=post action=inscription.php> Adresse email: <input type=text name=email><br> <input type=submit value=Ok> </form> </body> </html> inscription.php: <? $point = strpos($email, .); // Retorna a posiao do primeiro ponto por meio da variavel email $aroba = strpos($email, @); // Retorna a posiao da primeira base de dados por meio da variavel email if($point== || $aroba == ) { print (Campo o retorno invlido.<p>); //Avisa que o endereo buscado e invalido. Require(formulaire.htm); // Retorna para o formulario de inscriao. exit; //Sai do script } $mysql = mysql _ connect(localhost, login, password); // Conecta-se a base indicada. mysql _ select _ db(base _ indicada,$mysql); // Escolhe uma base de dados mysql _ query(INSERT INTO mailing _ tbl VALUE( ,$email)); //Acrescenta o e-mail mysql _ close($mysql); // Realiza a conexao. ?> Agora criaremos a estrutura para utilizao do componente mostrado no cdigo anterior. Isso ser feito com a criao da pgina mailing:

95

mailing.htm: <html> <body> <form method=post action=mailing.php> Email do autor: <input type=text name=auteur><br> Assunto:<input type=text name=sujet><br> Conteudo:<textareacols=89 rows=10 name=contenu></textarea><br> <input type=submit value=Envoyer> </form> </body> </html> Em seguida criamos o arquivo mailing.php: mailing.php: <? $point = strpos($auteur, .); $aroba = strpos($auteur, @); if($point== || $aroba == || $contenu == ) { print (Campo invlido.<p>); //Mostra que um endereo e invalido Require(mailing.htm); // Retorna para o formulario de inscriao. exit; //Sai do script } $mysql = mysql _ connect(localhost,login,password ); mysql _ select _ db(base _ de _ donnee,$mysql); $req = mysql _ query(SELECT * FROM mailing _ tbl); while($data = mysql _ fetch _ array($req)) { mail($data[email], $sujet, $contenu, From:$auteur); } mysql _ close($mysql); ?>

96

Você também pode gostar