Prévia do material em texto
iniciais.indd 1iniciais.indd 1 21/8/2006 12:33:3621/8/2006 12:33:36
© 2006 by Digerati Books
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.
Nenhuma parte deste livro, sem autorização prévia por escrito da editora,
poderá ser reproduzida ou transmitida sejam quais forem os meios emprega-
dos: eletrônicos, mecânicos, fotográfi cos, gravação ou quaisquer outros.
Diretor Editorial
Luis Matos
Assistência Editorial
Monalisa Neves
Erika Sá
Preparação de Originais
Luciana Salgado Guimarães Moreira
Revisão
Karina Penariol Sanches
Projeto Gráfi co
Daniele Fátima
Diagramação
Natalí Garcia
Universo dos Livros Editora Ltda.
Rua Tito, 1609
CEP 05051-001 · São 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
iniciais.indd 2iniciais.indd 2 23/8/2006 11:59:4623/8/2006 11:59:46
Prefácio
Houve um tempo em que bastava o conhecimento da lingua-
gem HTML para desenvolver páginas de Internet, que eram hospe-
dadas em um dos poucos servidores disponíveis. Neste tempo, as
páginas eram estáticas, as imagens eram muito raras e as conexões
de acesso, na sua maioria, discadas.
Mas a Internet evoluiu muito rápido e, em sua nova geração, a
banda larga começou a se popularizar, agilizando em muito a velo-
cidade de conexão. Os internautas também passaram a ser mais
exigentes, buscando cada vez mais interação e atratividade.
Ao léxico da Internet foram incorporados novos termos técnicos
como ASP, PHP, Cold Fusion, Curl, JavaScript, Ajax, XML, DTHML,
Flash, entre outros, e os profi ssionais que desenvolviam sites pas-
saram a ter necessidade de conhecer cada uma destas tecnologias
para implementar recursos sofi sticados ao site.
Os servidores Web também ganharam em recursos, e os profi s-
sionais passaram a ter opção de escolha entre soluções Made in Mi-
crosoft com o pacote Windows + ASP + SQL + IIS e soluções Open-
Source 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 profi ssional.
Boa leitura!
Luis Matos
luismatos@universodoslivros.com.br
Diretor Editorial
iniciais.indd 3iniciais.indd 3 21/8/2006 12:34:0321/8/2006 12:34:03
iniciais.indd 4iniciais.indd 4 21/8/2006 12:34:0321/8/2006 12:34:03
Sumário
Capítulo 1
Montagem de servidor ............................................... 07
Capítulo 2
Linguagens da Web .................................................... 31
Capítulo 3
PHP ........................................................................53
Capítulo 4
SQL e MySQL ............................................................. 83
iniciais.indd 5iniciais.indd 5 23/8/2006 12:00:0623/8/2006 12:00:06
iniciais.indd 6iniciais.indd 6 21/8/2006 12:34:0321/8/2006 12:34:03
Capítulo 1
Montagem de servidor
Cap1.indd 7Cap1.indd 7 21/8/2006 13:41:1821/8/2006 13:41:18
8
Para ter seu próprio site, antes de tudo, você precisa de um
servidor de hospedagem. Hospedagem é o nome que se dá ao
serviço em que o dono de um computador (na verdade, de vá-
rios) e de um link de conexão à Internet “aluga” recursos da má-
quina (espaço em disco, processamento) e uma fatia do link para
serem utilizados por quem estiver interessado.
No caso dos serviços de hospedagem de sites, tanto pes-
soais quanto comerciais – se bem que os primeiros prati-
camente inexistem atualmente, por conta da presença dos
blogs e do Orkut –, o que se aluga é um espaço para armaze-
nagem dos sites no disco rígido do servidor, e a quantidade
de conexões de usuários que poderão ser feitas para a pági-
na, simultaneamente.
Para a hospedagem de sites profi ssionais deve existir ain-
da um espaço de disco oferecido para a inserção de bancos
de dados e garantias de proteção contra invasões de crackers
(ladrões de senhas e de dados), script kiddies – os “aprendi-
zes” de hackers – e defacers, os costumeiros responsáveis por
“pichações” em páginas da Web ou retirada de páginas do ar,
usando técnicas de inundação de conexões (Denial of Service
ou DOS) ou simplesmente apagando os arquivos do site de
dentro do diretório de hospedagem. A segurança normalmen-
te é feita com a presença de um fi rewall com algumas regras
de proteção predefi nidas. Sempre que um novo cliente se fi lia
ao serviço de hospedagem de sites, ele poderá inserir novas
regras ao fi rewall, que terão efeito apenas em sua conta. É as-
sim que grandes empresas de hospedagem como a LocaWeb
(www.locaweb.com.br) costumam trabalhar.
Você pode montar seu próprio servidor Web em casa? Sim, e
a um custo relativamente módico: cerca de mil reais. Compen-
sa? Dependendo da situação pode compensar, mas, do ponto
de vista fi nanceiro, raramente será uma boa opção. Basta colo-
car todas as despesas na ponta do lápis:
Cap1.indd 8Cap1.indd 8 21/8/2006 13:42:0221/8/2006 13:42:02
9
Curso prático de criação de sites
Servidor doméstico
Custo médio
R$ 800,00
Entre R$ 100,00/mês (Links ADSL 400 Kbps) e
R$ 200,00/mês (Link 1 Mbps).
Entre R$ 30,00/mês e R$ 200,00/mês (horas de
conexão ilimitadas).
Grátis (GNU/Linux), R$ 900,00 (RedHat Linux
Enterprise) ou R$ 2.400,00 (Windows Server 2003).
Entre R$ 50,00/mês (página disponível cinco
dias por semana, oito horas por dia) e R$ 250,00
(página disponível todos os dias da semana, 24
horas por dia).
Item
Servidor (Pentium 4.2
GHz, 512 MB RAM, HD
40 GB, placa de rede).
Serviço Internet
Banda Larga.
Provedor de acesso
à Internet.
Sistema operacional
do servidor.
Gastos de energia
elétrica com o servidor
e roteador de acesso
à Web.
Tabela 1: Gastos com um servidor doméstico.
Servidor de hospedagem profi ssional
Custo médio
R$ 299,00/mês.
Custo zero, já que será utilizado o link do serviço
de hospedagem.
Item
Servidor semidedicado:
plano de hospedagem
com banco de dados, 50
GB de transferência de
dados, 1 GB de espaço
em disco e 100 caixas
postais de e-mail.
Serviço Internet
Banda Larga.
Cap1.indd 9Cap1.indd 9 21/8/2006 13:42:0221/8/2006 13:42:02
10
Tabela 2: Gastos com serviço de hospedagem profi ssional.
� Sistemas Operacionais
Outro ponto que se deve levar em consideração, além dos cus-
tos, é a manutenção e segurança do site. Os bons provedores de
hospedagem costumam fazer backups diários das informações ar-
mazenadas em seus servidores, além de garantir a segurança das
informações por meio de criptografi a e regras de fi rewall. Por sua
vez, se você resolver montar seu próprio servidor, todos os encar-
gos de manutenção do servidor, backup e segurança passarão a ser
de responsabilidade sua.
Essa preocupação é comum a todos os sistemas operacionais
em uso em servidores, mas é especialmente preocupante em siste-
mas Windows. A maioria dos vírus criados afeta o sistema operacio-
nal da Microsoft, sobretudo as versões 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 usuário sequer abra um
arquivo ou e-mail proveniente da máquina infectada, como costu-
mava acontecer com os vírus da geração anterior, ou seja, além de
fi car com a sua página fora do ar, você pode infectar pessoas que
Servidor de hospedagem profi ssional
Custo médio
Custo zero, já que será utilizado o link do serviço
de hospedagem.
Custo zero. Só se deve pagar pelo sistema operacional
ao se contratar serviços de acesso dedicado.
Custo zero.
Item
Provedor de acesso
à Internet.
Sistema operacional
do servidor.
Gastos de energia
elétrica com o servidor
e roteador de acesso
à Web.
Cap1.indd 10Cap1.indd 10 21/8/2006 13:42:0221/8/200613:42:02
11
Curso prático de criação de sites
acessem sua página e até potenciais clientes, caso mantenha um
website com fi ns comerciais.
Além disso, você terá de se encarregar da instalação do próprio
sistema operacional, ação que, apesar de parecer corriqueira, ad-
quire contornos um pouco mais dramáticos quando estamos dian-
te de um servidor Web: além da instalação tradicional do sistema
operacional, teremos de realizar a confi guração dos elementos de
rede, confi gurar os servidores Web e aplicar todos os patches de
segurança existentes.
Ao optar por sistemas operacionais da Microsoft – tanto em ser-
vidores de uma empresa de hospedagem como em casa – teremos
de trabalhar com o servidor Web IIS (Internet Information Service),
atualmente em sua versão 6 (o Windows 2000 utiliza a versão 5). A
linguagem dinâmica ideal para se trabalhar com o IIS é o ASP (Acti-
ve Server Page), também desenvolvido pela Microsoft.
Ao optar por sistemas operacionais como o GNU/Linux, o ser-
vidor de Web padrão será o Apache (www.apache.org), atualmen-
te em sua versão 2.2.2. O Apache apresenta problemas com pá-
ginas dinâmicas criadas em ASP, razão pela qual é recomendado
criar páginas usando tecnologia livre como o PHP (PHP Hypertext
Preprocessor) ou o Perl. Também existem versões do ASP para
Windows.
� Apache
A fundação Apache, criada em 1989, lançou a primeira versão
do seu servidor Web, que possui o mesmo nome da fundação,
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 criação
e análise de logs que permite uma fi ltragem quase total de infor-
mações. Desde então o Apache foi “engolindo mercado”, a ponto
de ser o responsável por 65% dos servidores Web atualmente em
atividade no mundo.
Cap1.indd 11Cap1.indd 11 21/8/2006 13:42:0221/8/2006 13:42:02
12
Vamos mostrar agora como realizar a instalação do Apache em
uma máquina rodando o Windows 2000 Server. Na seção seguinte,
realizaremos a mesma instalação e confi gurações, mas dessa vez
em um servidor GNU/Linux.
Mesmo que você não deseje construir um servidor dentro de
sua casa ou empresa, e já repassou a “dor de cabeça” para uma em-
presa de hospedagem, recomendamos que leia atentamente esta
seção. Em raros provedores o próprio cliente deve fazer a instalação
de seu servidor – em outros casos, você deve ter bagagem técnica
para conversar com atendentes e delinear o tipo de confi guração
que deseja aplicar ao seu servidor. Além disso, se você quiser ser
um profi ssional de Web, é obrigatório saber confi gurar o Apache.
1. Vá a página http://www.apache.org/mirrors/ e selecione um
dos sites espelho (chamados também de mirrors) em que es-
tiver disponível o download da última versão do Apache. Pro-
cure pelo diretório /apache/httpd/binaries/win32/ no mirror
de sua escolha e clique no arquivo apache_2.2.2-win32-x86-
no_ssl.msi para iniciar o download.
Figura 1.1.
Cap1.indd 12Cap1.indd 12 23/8/2006 12:07:3923/8/2006 12:07:39
13
Curso prático de criação de sites
2. Execute o arquivo quando o download estiver terminado.
Clique em Next e, após aceitar a licença e ler a página de apre-
sentação, clique em Next duas vezes para passar para a pági-
na de confi gurações.
3. Em Network Domain, selecione o domínio em que sua pá-
gina está inserido, por exemplo: digerati.com.br, ou eu.com.
Certifi que-se de já ter um domínio registrado no Registro.BR
(http://registro.br/). Em Server Name, dê um nome ao seu ser-
vidor, como, por exemplo, tester1. Por fi m, em Administrator ś
E-mail Address, digite um endereço de e-mail que possa ser
utilizado para a criação de arquivos de segurança.
Figura 1.2.
Figura 1.3.
Cap1.indd 13Cap1.indd 13 23/8/2006 12:07:5523/8/2006 12:07:55
14
4. Uma confi guração de segurança importante: clique em for
All Users, on Port 80, as a Service (para todos os usuários, na
porta 80, como um serviço) para que seja possível instalar o
Apache com todas as suas extensões e funcionalidades habili-
tadas e acessíveis a todos os usuários, via porta 80. Ao selecio-
nar essa opção, o Apache passa a ser reconhecido pelo Win-
dows como um serviço. Essa é a opção ideal, já que estamos
falando de um servidor de acesso público. Clique em Next.
5. Clique em Typical para realizar uma instalação completa.
Na tela Destination Folder, clique em Change e selecione um
novo local para seu servidor (no nosso caso, imaginamos al-
guém que estivesse familiarizado com o IIS e, por isso, sele-
cionamos o diretório como C:\Apache Group).
Figura 1.4.
Figura 1.5.
Cap1.indd 14Cap1.indd 14 23/8/2006 12:07:5923/8/2006 12:07:59
15
Curso prático de criação de sites
6. Na tela seguinte, clique em Install e, em seguida, em Finish.
O servidor já foi instalado.
7. Agora é necessário confi gurar o sistema. Acessando o menu
Iniciar > Programas > Apache HTTP Server 2.2.2 > Confi gure
Apache Server, clique em Edit the Apache httpd.conf Confi gura-
tion File. Se o arquivo não abrir imediatamente, você deve asso-
ciá-lo a outro aplicativo. Utilize, por exemplo, o Bloco de Notas.
Figura 1.6.
Figura 1.7.
Cap1.indd 15Cap1.indd 15 23/8/2006 12:08:0323/8/2006 12:08:03
16
8. Para quem não está acostumado com arquivos de con-
fi guração do estilo UNIX, em que tudo é feito em arquivos
de texto que devem ser editados, essa confi guração pode
parecer meio complicada, mas não é. Para quem sabe inglês,
o arquivo é auto-explicativo.
9. Procure pela linha MaxRequestsPerChild 0. Ela defi ne
quantas conexões serão aceitas, de forma simultânea, pelo
servidor. Se você tem uma largura de banda reduzida ou está
rodando o Apache em uma máquina com poucos recursos
de memória, digite uma quantidade entre 10 e 20. Valores
acima disso não são recomendáveis em servidores isolados
(que trabalham sozinhos) como os servidores domésticos,
ou podem depender do número de conexões simultâneas
contratadas com o serviço de hospedagem profi ssional.
10. Em seguida, procure pela linha Listen e observe se ela man-
tém o valor 80 como o padrão. Ela defi ne que a porta 80 seja
a porta padrão para envio e recebimento de material HTTP.
Se você ou a empresa de hospedagem possuírem um serviço
Microsoft IIS na mesma máquina – felizmente, e por razões
óbvias, quase ninguém faz isso – podem ocorrer alguns pro-
blemas de compatibilidade, com dois servidores HTTP escu-
tando na mesma porta. Nesse caso, selecione a porta 3128
para o Apache, que é a normalmente utilizada para serviços
de proxy (conexão segura à Internet), e, na ausência deles,
fi ca livre. Portanto, você também pode utilizar a porta 3128
se trabalhar em uma rede que possui um proxy transparente
(que não requer autenticação).
11. Salve o arquivo e, em seguida, clique em Iniciar > Progra-
mas > Apache HTTP Server 2.2.2 > Control Apache Server
> Restart para reiniciar o servidor.
Cap1.indd 16Cap1.indd 16 21/8/2006 13:42:2321/8/2006 13:42:23
17
Curso prático de criação de sites
� No Linux
A utilização ideal do Apache Server está associada ao GNU/Li-
nux e ao PHP. A maioria das distribuições GNU/Linux – inclusive
as que são compradas como encartes em CDs ou DVDs – já vem
com pacotes do Apache compilados e prontos para instalação. Na
maioria das distribuições, pode-se optar pela inclusão do Apache
desde o início da instalação do sistema operacional, com a opção
de se levantar o serviço 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 instâncias do servidor HTTP Apache
ativas. Se nenhuma instância for encontrada, então proceda à ins-
talação, detalhada logo a seguir:
1. Se você deseja ter a última versão do Apache em seu sis-tema Linux, ele pode ser adquirido no site ofi cial, http://apa-
che.org/. Escolha um mirror de sua preferência e procure
pelo diretório /apache/httpd/binaries/linux/. Baixe o arqui-
vo httpd-2.0.52-s390-ibm-linux.tar.gz.
2. Descompacte o arquivo para um diretório de sua escolha,
dentro de sua máquina GNU/Linux.
tar xvfz httpd-2.0.x.tar.gz
3. Será criado um diretório com o mesmo nome do arquivo,
mas sem a extensão .tar.gz. Entre no diretório criado como
administrador (root). Se você não souber fazer isso, basta
utilizar o terminal de linha de comando para ser capaz de exe-
cutar os comandos necessários à sua instalação.
Cap1.indd 17Cap1.indd 17 21/8/2006 13:42:2321/8/2006 13:42:23
18
su
(digite a senha de root).
cd httpd-2.0.x
4. Agora que descompactamos o código-fonte e estamos
dentro do diretório do Apache, realizaremos a compilação
do programa:
./configure --enable-module=so --enable-
rule=SHARED _ CORE -prefix=/www
# Voce pode escolher o diretorio para a instalaçao
do Apache. Neste caso, seguimos, novamente o pa-
drao 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 operaçoes podem demorar al-
guns minutos ate a finalizaçao.
5. Feita a instalação, podemos iniciar o serviço utilizando o
seguinte comando:
/usr/local/apache/bin/apachectl start
para interromper o serviço, caso surja algum erro, digite o co-
mando:
/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
não for mostrada, basta abrir qualquer navegador e digitar o
Cap1.indd 18Cap1.indd 18 21/8/2006 13:42:2321/8/2006 13:42:23
19
Curso prático de criação de sites
endereço http://localhost:80 (ou http://localhost:8080, se
você selecionou essa porta).
7. Feito o teste, pode-se apagar o diretório de instalação
do servidor:
cd
rm httpd-2.0.x.tar.gz
rm -rf httpd-2.0.x
8. Agora passaremos para as confi gurações do Apache. Va-
mos criar os diretórios seguintes, que serão utilizados para ar-
mazenar as páginas (/www) e os scripts CGI (/www/cgi-bin):
mkdir /home/www
mkdir /home/www/cgi-bin
9. Agora vamos trabalhar com o arquivo de confi guração do
Apache. Diferente do que acontece com o Windows, não há
uma interface gráfi ca 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.
Figura 1.8.
Cap1.indd 19Cap1.indd 19 23/8/2006 12:16:0023/8/2006 12:16:00
20
Se o servidor foi montado com uma distribuição GNU/Linux
que suporta o modo gráfi co, você pode utilizar editores gráfi -
cos 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 começar a editar o arquivo, aperte a tecla Insert do teclado
do servidor e posicione o cursor sobre a área que deseja editar.
11. Para confi gurar o endereço do administrador do site, pro-
cure pela seção:
#
# ServerAdmin: Your address, where problems with
the server should be
# e-mailed. This address appears on some server-
generated 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 endereço de cor-
reio eletrônico do seu uso.
12. Agora vamos defi nir o diretório raiz (root). É nesse diretório
que serão colocadas todas as páginas do site criado por nós.
Procure pela seção:
#
# DocumentRoot: The directory out of which you
will serve your
# documents. By default, all requests are taken
from this directory, but
Cap1.indd 20Cap1.indd 20 21/8/2006 13:42:2721/8/2006 13:42:27
21
Curso prático de criação 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 confi gurar a aceitação de scripts CGI em nos-
so servidor Apache. Procure pelas seções:
# This should be changed to whatever you set Do-
cumentRoot 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 Do-
cumentRoot to.
# digite o caminho do diretório em que seu site
será armazenado
Cap1.indd 21Cap1.indd 21 21/8/2006 13:42:2821/8/2006 13:42:28
22
<Directory “/usr/local/apache/htdocs/meusite”>
(...)
# Formate o outro trecho da seguinte maneira, na
qual permitimos a execução 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 Exec-
CGI
14. É conveniente indicar quais páginas serão visualizadas por
omissão, ou seja, não serão apresentadas ao browser quan-
do apenas o nome do diretório for pedido, como quando se
digita http://127.0.0.1 na linha de endereço de um browser. O
Apache já vem com dois nomes preconfi gurados, index.html
e index.html.var, mas convém adicionar também index.shtml
para que possa ter páginas com SSI – um componente dinâ-
mico do CGI, que trabalha junto com o servidor Web – como
página principal. Basta procurar a seção 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 alteração:
Cap1.indd 22Cap1.indd 22 21/8/2006 13:42:2821/8/2006 13:42:28
23
Curso prático de criação 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 confi gurar o diretório no qual serão executa-
dos os arquivos CGI. Você pode utilizar a confi guração padrão
(/home/www/cgi-bin/). Se você alterou o diretório raiz para
o armazenamento das páginas do site (Passo 12), terá que fa-
zer alterações no diretório raiz dos arquivos CGI seguindo os
mesmos moldes:
#
# ScriptAlias: This controls which directories
contain server scripts.
# ScriptAliases are essentially the same as Alia-
ses, 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
Cap1.indd 23Cap1.indd 23 21/8/2006 13:42:2821/8/2006 13:42:28
24
# CGI directory exists, if you have that confi-
gured.
#
<Directory “/home/www/cgi-bin”>
16. Tal como na opção anterior, é necessário “descomentar”
a linha com esta confi guração para a ativar, mas também in-
dicar ao servidor que os arquivos com a extensão .shtml são
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 confi rmar se as confi gurações foram bem feitas, basta
acessar os arquivos secundários de confi guração e conferir o
status. Se você realizou as confi gurações anteriores, seu ar-
quivo /home/www/index.shtml, por exemplo – ou seja qualfor 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-
Cap1.indd 24Cap1.indd 24 21/8/2006 13:42:2821/8/2006 13:42:28
25
Curso prático de criação de sites
low is my system’s date and that a listing of the
site’s 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ê defi niu para a raiz de sua página – 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 conteúdo do
diretório atual que esteja no formato .html.
Cap1.indd 25Cap1.indd 25 21/8/2006 13:42:2921/8/2006 13:42:29
26
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 “That’s all folks!”
20. Se as configurações estiverem corretas, falta pouco
para que o Apache esteja realmente funcional no GNU/Li-
nux. Devemos, por exemplo, dar permissão para o funcio-
namento dos scripts para que eles possam funcionar dentro
dos diretórios do Apache. As permissões funcionam como
uma espécie de roteiro do que pode ou não ser feito em
um diretório. No GNU/Linux elas podem ser definidas com
o auxílio do comando chmod, como no caso seguinte, em
que damos permissão 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) é distribuído gratuitamente
com as versões de Windows baseadas em NT, como o Windows
2000 Server e 2003. Nessas versões, o IIS possui capacidade
ilimitada de conexão de clientes e ampla margem de confi guração.
Na versão para Windows XP, ao contrário, o IIS pode ser utilizado
apenas para dez conexões simultâneas. Dá para criar um site de
sucesso? Não, mas pode ser bem útil em uma intranet.
Cap1.indd 26Cap1.indd 26 23/8/2006 12:21:1623/8/2006 12:21:16
27
Curso prático de criação de sites
Dentro de uma rede comercial pequena – escritório com dez fun-
cionários esparramados por um espaço geográfi co mais ou menos
extenso, por exemplo – uma intranet talvez seja a melhor maneira de
compartilhar ou atualizar informações. Com a criação de uma rede
interna de informações, fi ca muito mais fácil gerenciar conjuntos de
dados que devem ser vistos por todas as máquinas da rede – com
vantagens, inclusive, em relação aos comunicados via e-mail, que
ainda podem ser considerados uma forma de comunicação um tanto
estática. As empresas contratam profi ssionais que saibam montar
páginas e sistemas de intranet com a mesma intensidade e entusias-
mo com que fazem a contratação de profi ssionais especializados na
montagem de websites externos (para a intranet).
Vamos mostrar como realizar a instalação do IIS no Windows
XP. A versão do IIS utilizada no XP é a 5, e são permitidas somente
dez conexões simultâneas, mas vale a pena salientar que o método
de instalação aqui mostrado pode também ser aplicado em máqui-
nas Windows 2000/2003.
1. Com o CD do Windows XP no drive, espere que a interfa-
ce de apresentação seja iniciada e, em seguida, clique em
Instalar Componentes Opcionais do Windows.
2. Selecione o IIS na lista de programas que é mostrada, clique
no botão Avançar e, em seguida, em Concluir. A máquina
deverá ser reiniciada.
3. Para ver se o IIS foi iniciado corretamente, digite em seu
browser:
http://localhost
A página seguinte deve ser mostrada:
Cap1.indd 27Cap1.indd 27 23/8/2006 12:21:2623/8/2006 12:21:26
28
Figura 1.9: Página inicial do IIS.
4. O diretório padrão do IIS é C:\Inetpub\wwwroot. Tudo que
você deseja que seja exibido na intranet deve ser colocado
nesse diretório. Você pode confi gurar as páginas que serão
exibidas através do Painel de Controle > Ferramentas Admi-
nistrativas > Internet Information Service. Será aberta uma
janela de console.
5. Clique com o botão 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 máquina em que foi instalado o IIS.
Figura 1.10.
Cap1.indd 28Cap1.indd 28 21/8/2006 13:42:2921/8/2006 13:42:29
29
Curso prático de criação de sites
6. Expanda o diretório Sites da Web, clicando com o botão
direito do mouse em Site da Web padrão e, após, em Proprie-
dades. Na aba Site da Web, linha Descrição, dê um nome à
sua página. Em seguida, na linha Endereço IP, coloque o IP de
sua máquina. Em Porta TCP, defi niremos a porta padrão para
endereços Web e páginas HTTP (80).
7. Na aba Documentos, clique em Ativar Documento Padrão.
No campo seguinte, selecione a página que você deseja confi -
gurar como a página padrão, excluindo as páginas seguintes.
8. Podemos adicionar um sistema de login à nossa intranet.
Para fazer isso, clique em Segurança de diretório, botão Edi-
tar... Desabilite a opção Acesso anônimo e selecione a opção
Autenticação básica.
Figura 1.11.
Figura 1.12.
Cap1.indd 29Cap1.indd 29 21/8/2006 13:42:3621/8/2006 13:42:36
30
9. Clique em seguida na opção Autenticação do Windows
integrada, para utilizar as senhas de usuários do Windows.
Você também poderá criar um usuário padrão intranet em seu
Windows, para que todos os usuários se conectem através
dessa conta. Clique em OK e feche o console do IIS.
� Testando a intranet
Para acessar a sua intranet em outras máquinas, inicie o Internet
Explorer e digite o endereço:
http://endereço.de.ip.da.sua.máquina
Se o IP não funcionar, você pode substituí-lo pelo nome da máquina:
http://nome_da_máquina
Figura 1.13.
Cap1.indd 30Cap1.indd 30 21/8/2006 13:42:4021/8/2006 13:42:40
Capítulo 2
Linguagens da Web
Cap2.indd 31Cap2.indd 31 21/8/2006 13:46:2021/8/2006 13:46:20
32
Inexistia para a Web, há dez anos, uma linguagem específi ca
para a organização, quer lógica, quer artística, das informações que
estavam agrupadas em um determinado local: o acesso de dados
era possível, mas não o de informações ou páginas de informações
relacionadas.
Tecnicamente, para se construir uma página de informação, seja
ela para a Web ou para um sistema operacional, por exemplo, é
necessário estruturar o material que se quer transformar em infor-
mação, dando-lhe uma forma. Essa estruturação só é conseguida
com a utilização de uma linguagem – conjunto de funções lógicas
que defi nirão o formato que os dados terão ao serem transforma-
dos em um documento.
� O Hipertexto e o browser
Com a abertura de mais terminais Web e a popularização da
Internet, tornou-se necessária a criação de uma linguagem que pa-
dronizasse as informações, tornando-as facilmente disponíveis a
qualquer máquina, leve e sem necessidade de trabalhos extras por
parte do usuário para sua utilização.
Foi assim que nasceu o hipertexto, que foi a primeira linguagem
da Web a permitir a criação de documentos legíveis de forma não
seqüencial. O hipertexto, no entanto, era muito simples: constava
somente de seções de texto formatado em blocos e links para a
navegação entre os textos.
A entrada do hipertexto no cenário da Web e sua expansão oca-
sionaram, nessa mesma época, a criação de uma interface mais
intuitiva para o hipertexto. Foi então que se criou o Mosaic: o pri-
meiro browserda história, e um dos grandes responsáveis pela dis-
seminação da Internet.
� Um hipertexto com muito mais recursos
HTML é a sigla para o inglês Hyper Text Markup Language (Lin-
guagem de Marcação de Hipertexto). O HTML é uma coleção de
estilos que defi ne os vários componentes de um documento Word
Cap2.indd 32Cap2.indd 32 21/8/2006 13:46:5921/8/2006 13:46:59
33
Curso prático de criação de sites
Wide Web (como formatação, hiperlinks clicáveis, imagens gráfi -
cas, documentos multimídia e formulários).
O HTML é uma linguagem que deveria servir como marcação
de outra linguagem – o hipertexto. A verdade é que acabou sendo
sua substituta: hoje em dia ninguém usa hipertexto puro, mesmo
em terminais de acesso. O conteúdo de hipertexto é delimitado por
uma instrução de início e outra de fi m da ação: e essa, essencial-
mente, é a estrutura de um código-fonte HTML será interpretado,
posteriormente, pelo browser, o qual se encarregará de interpretar
os comandos ou tags, como são usualmente chamados. O código-
fonte poderá ser digitado em qualquer editor de texto (muita gente
fez sua primeira página Web no Bloco de Notas), bastando salvar
o documento com a extensão *.htm ou *.html. Os programadores
de HTML que não são designers e estão mais preocupados com a
segurança preferem criar seus códigos da maneira descrita: linha
por linha de texto. Os outros, é claro, preferem construir em Drea-
mweaver ou Front Page.
Desde já vamos desfazer um equívoco: uma das principais acu-
sações contra o HTML é alegar que ele não é uma linguagem de
programação estruturada, e sim um conjunto de instruções de tex-
to que são interpretadas pelo browser (aliás, isso por si só já basta-
ria para que fosse uma linguagem de programação). Engano: ape-
sar dos comandos (tags) serem carregados pelo browser, possuem
delimitadores completos inclusive para suas próprias instruções.
Uma tag é delimitada por < >, apresentando a seguinte forma:
<tag inicial> TEXTO </tag final> ou <tag único>
Os primeiros são tags aos pares e os segundos são tags indivi-
duais; quando um navegador carrega uma página, procura por esses
comandos para executar a página – o browser não é responsável pela
formatação, tamanho ou recursos da página, mas sim o código.
Graças a esses e a outras tags, os documentos em HTML pos-
suem as seguintes características:
Cap2.indd 33Cap2.indd 33 21/8/2006 13:46:5921/8/2006 13:46:59
34
� Formatação de documentos em vários estilos de letras, co-
res e tamanhos;
� Formatação de tabelas;
� Formatação de listas;
� Criação de mapas clicáveis, relacionados a hiperlinks;
� Formatação de formulários para auxílio no cadastramento
em sites, compras, entre outros.
Os pontos negativos do HTML são a falta de dinamismo gráfi co
nas páginas feitas com esse código, além dos banners animados
que podem ser feitos com tags. Além disso, os documentos HTML
têm um uso comercial e empresarial um tanto restrito, já que a fi l-
tragem de dados não pode ser feita de forma simples e direta nos
próprios documentos, necessitando de bancos de dados específi -
cos, como o Oracle ou o MySQL, o que torna a administração de
sites comerciais cara e complicada.
� Soluções de dados para o HTML,
entre outras coisas – o Cold Fusion
A solução para as defi ciências do HTML em matéria de manipu-
lação de dados viria com a criação do XML (Extensible Markup Lan-
guage), uma linguagem baseada em tags textuais como o HTML,
mas que permite a marcação, extração e manipulação de dados
através do próprio documento .xml.
Enquanto essa tecnologia não era disponibilizada, no entanto,
várias empresas tentaram melhorar a análise e a disponibilidade
de dados do HTML, principalmente em servidores comerciais ou
servidores de dados localizados em empresas. Uma dessas em-
presas foi a Allaire, que criou, em 1995, um servidor de extração
de dados em páginas HTML – o Cold Fusion – que depois seria
vendido para a Macromedia.
Os arquivos de Cold Fusion para extração e manipulação de
dados utilizam a extensão .cfml (Cold Fusion Markup Language),
verdadeira precursora do XML, com o diferencial de ser um for-
Cap2.indd 34Cap2.indd 34 21/8/2006 13:46:5921/8/2006 13:46:59
35
Curso prático de criação de sites
mato proprietário – e, portanto, pago. Além disso, o Cold Fusion é
um servidor de aplicações, suportando tráfegos de grande volume,
inclusive de bancos de dados de outras empresas, como Oracle e
Sybase, além de trazer suporte para o gerenciamento de aplicações
em clusters (diversas máquinas processando o mesmo aplicativo
ou as mesmas informações como se fossem uma única máquina).
Ou seja, um documento dinâmico (ou Template) criado e armaze-
nado em um servidor Cold Fusion é diferente de uma página HTML
estática, pois pode publicar dados dinamicamente.
Uma variável armazena dados que podem ser utilizados por apli-
cações. Como em outras linguagens de programação, você deve
confi gurar variáveis para armazenar informações que serão acessa-
das mais tarde e pode referenciar uma gama de tipos de variáveis
para manipular diferentes tipos de processamento.
Veja a seguir quais são as variáveis mais utilizadas em um
documento .cfml:
� Local: inicia e manipula manualmente os valores na pági-
na dinâmica;
� 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: confi gura e passa manualmente os valores de
uma página para outra no fi nal da url (ex.: Pag_Teste.cfm?
Var=Valor&ID=2);
� HTTP: cookies. Confi gura manualmente e passa automati-
camente valores de identifi cação entre o cliente e o servidor;
� CGI: fornece automaticamente detalhes do ambiente, dis-
poníveis no HTTP Web server, durante a requisição do brow-
ser do cliente;
� Application: inicia manualmente com valores uma página
.cfm da aplicação. Referencia manualmente valores de pági-
nas específi cas de outras aplicações.
Cap2.indd 35Cap2.indd 35 21/8/2006 13:46:5921/8/2006 13:46:59
36
� O Curl
Outro padrão de linguagem criado mais ou menos na mesma épo-
ca foi o Curl. Assim como o Cold Fusion, o Curl destaca-se por poder
criar uma simples página com conteúdo estático, como o HTML, até
uma loja virtual, com a conseqüente marcação e manipulação de da-
dos e, principalmente, ambientes 3D totalmente revolucionários.
Talvez seja essa última característica a grande vantagem dessa lin-
guagem, a ponto de ela ser usada atualmente somente com esse pro-
pósito. Na época de seu lançamento colocava-se em evidência sobre-
tudo a facilidade de assimilação dos comandos da linguagem, além
de sua maior estruturação em relação ao (sempre injustiçado) HTML.
As diferenças, todavia, eram bem poucas, o que acabou por enterrar
a linguagem como uma potencial substituta do HTML (e o lançamento
de ferramentas voltadas para o trabalho em HTML, como o Dream-
weaver, deram um empurrão extra para que isso acontecesse).
Assim como no HTML, o Curl também baseava sua capacidade
de formatar a página em tags. Nele, contudo, os comandos são de-
fi nidos entre chaves.
Outra diferença está na declaração de alguns comandos. Em vez
de se declarar, para fi ns de inserção de texto, o comando <BODY>,
deve-se trabalhar com os comandos text e paragraph, que respecti-
vamente defi nem a aparência de um texto e a de um parágrafo.
Confi ra, no box a seguir, os principais comandos de uma página
ou aplicativo baseado em Curl.
� title: título;
� heading e heading level=2: defi ne cabeçalhos com nível
um e dois de destaque;
� paragraph: cria um novo parágrafo;
� text: texto;
� center: texto exibido no centro da página;
� italic: texto exibido em itálico;
� bold: texto exibido em negrito;
Cap2.indd 36Cap2.indd 36 21/8/2006 13:46:5921/8/2006 13:46:59
37
Curso prático de criação de sites
� itemizee enumerate: inicia uma lista de itens com marca-
dores ou numeradores;
� item: acrescenta um item à lista de marcadores ou nume-
rada com o texto item1;
� image source=url “imagem.jpg”: exibe uma imagem;
� hrule: linha horizontal;
� table: exibe uma tabela na página;
� row: insere uma linha na tabela;
� cell: inclui uma célula com o texto Primeira Célula.
Como você pode ver, os comandos do Curl são incluídos den-
tro de chaves. Se algum comando estiver posicionado ou fechado
incorretamente, a página não será processada. Por exemplo, para
exibir uma tabela, o correto é digitar o código:
{
{table
row
cell celula}
}
e não
{table
row
cellcelula}
O Curl Surge Lab IDE pode ser adquirido no site www.curl.com,
menu Products, link Surge Lab Integrated Development Environ-
ment (IDE). Sua utilização para programadores e estudantes é gra-
tuita, mas existe um contrato de utilização por volume de dados de
no mínimo 50 dólares.
Cap2.indd 37Cap2.indd 37 21/8/2006 13:46:5921/8/2006 13:46:59
38
� Algo realmente diferente: o ASP
A Microsoft não poderia fi car de fora na busca de uma nova lin-
guagem 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 Explo-
rer, sobre o seu concorrente Netscape. E mostrou toda a sua força
criando uma linguagem de programação que, ainda hoje, é padrão
para muitos setores da Internet: o ASP.
ASP é a sigla para Active Server Pages (Servidor de Páginas
Dinâmicas). Trata-se de uma linguagem para desenvolvimento
de páginas HTML dinâmicas que mesclou duas linguagens que
ganhavam terreno na Web e em aplicações de rede: o JScript
(Java Script) e o VBScript.
O ASP, assim como as linguagens abordadas anteriormente, foi
criado também para possibilitar uma manipulação de dados mais
completa, impossível no HTML. É uma linguagem para Web criada
pela Microsoft, assim como o IIS, e seu objetivo é permitir a criação
de páginas e aplicações que, de alguma forma, permitam interação
com o usuário.
Ele funciona da seguinte maneira: sempre que há a requisição
de uma página .asp, o servidor interpreta os comandos que estão
entre tags (sempre as tags!) e mantém as instruções de outras lin-
guagens, enviando, em seguida, o resultado ao browser. Esse pro-
cesso faz com que o carregamento de páginas em ASP seja con-
sideravelmente mais rápido do que o de páginas construídas de
forma híbrida (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, é possível rodar códigos que geram
páginas HTML dinamicamente, e então mandá-las para o browser.
Também é possível, a partir de uma única rotina, gerar uma página
HTML contendo consultas a banco de dados e envio e recebimento
de correio eletrônico, via páginas HTML, para criação de rotinas de
propaganda rotativa, para identifi cação e autenticação de usuários,
para leitura de arquivos texto e uma infi nidade de outras aplicações.
Cap2.indd 38Cap2.indd 38 21/8/2006 13:46:5921/8/2006 13:46:59
39
Curso prático de criação de sites
Isso tudo ocorre sem que o usuário consiga perceber que infor-
mações são processadas, já que o ASP baseia seu funcionamento
em três camadas:
a) A primeira interface é a do usuário, que acessará apenas a
página de código HTML, em sua máquina cliente, via browser.
Aqui não há processamento pesado, existe somente captação
e exibição de dados;
b) Na segunda camada temos as chamadas regras de negócio,
ou seja, as que buscarão informações correlatas no código-fon-
te da aplicação, em que estão todas as condições da aplicação.
Essa etapa ocorre no âmbito dos servidores da aplicação.
c) A terceira camada corresponde ao banco de dados; é aqui
que ocorrem todas as atualizações de dados efetivadas, com
inclusões, alterações, exclusões.
O ASP é utilizado na primeira camada para enviar dados para a
segunda, e recebe dados da segunda para serem exibidos na pri-
meira. Para quem tem conhecimento em Visual Basic, o ASP é uma
questão de adaptação. Para quem já tem noção de lógica de pro-
gramação, basta aprender alguns comandos e começar a desenvol-
ver alguns sistemas em ASP.
� E o .net?
Após 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 criação de clien-
tes .rich (clientes com recursos mais robustos, como por exemplo
a utilização interativa de aplicativos localizados no servidor, feitos
principalmente pela Macromedia, como o Flash e o mais recente
Studio MX), resolveu criar a plataforma .net.
Cap2.indd 39Cap2.indd 39 21/8/2006 13:47:0021/8/2006 13:47:00
40
E assim, há cerca de dois anos ouvimos a Microsoft bradar aos
quatro cantos do mundo uma espécie de sigla chamada .net (lê-se
dotnet) que, segundo a própria, promete revolucionar o mundo das
páginas dinâmicas de dados.
A plataforma .net constitui-se de uma série de programas para a
criação dessa tecnologia e um modelo de programação e ferramen-
tas que permitem mais integração entre documentos .xml e a Web.
Além disso, a .net deverá integrar-se com o novo sistema operacio-
nal Microsoft voltado para o mercado corporativo, o Windows .net
e a diversas soluções de servidores e bancos de dados concorren-
tes, inclusive algumas Open Source, como o Apache.
Isso quer dizer que todos os produtos e serviços criados com
essa tecnologia passarão invisíveis aos olhos do usuário, que sen-
tirá toda a força do .net sem sequer desconfi ar que faz uso des-
sa misteriosa sigla. A funcionalidade de recursos básicos da Web,
como HTML e páginas gráfi cas de conteúdo dinâmico, permane-
cerá inalterada. Já a criação de aplicações 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 pá-
ginas dinâmicas antes mesmo de trabalhar com arquivos HTML,
então terá de trabalhar com o ASP. Todo arquivo feito em ASP tem
extensão .asp. Esse arquivo possui código em HTML e scripts que
contêm as instruções que geram algum tipo de interatividade com
o usuário. Cadastrar-se em um site, comprar em um site de comér-
cio, ver data e hora atuais, receber e mandar e-mails são exemplos
de interações que o ASP pode proporcionar. O ASP também per-
mite o acesso a banco de dados que suportam objetos específi cos
para utilização de bancos de dados, como ODBC (Open Data Base
Connectivity) e o acesso por ADO (Active Data Objects).
Cap2.indd 40Cap2.indd 40 21/8/2006 13:47:0021/8/2006 13:47:00
41
Curso prático de criação de sites
As páginas em ASP, os scripts ou os serviços requeridos não
são executados no computador de quem acessa essas páginas
– por isso dizemos que a execução ocorre no âmbito do servidor e
não do cliente. Ao acessar uma página desse tipo, o servidor que a
hospeda deverá ter suporte para o ASP, processar as solicitações
presentes na página e “entregar” o resultado no navegador do usuá-
rio, em formato HTML.
Para que o servidor possa processar as requisições e entregar o
resultado ao visitante da página, é necessário que nele esteja insta-
lado o IIS (Internet Information Server) ou outro programa servidor
capaz de processar páginas em linguagem ASP.
� O que a linguagem ASP oferece
A linguagem ASP possui várias vantagens:
� Independência do navegador: qualquer navegador de Inter-
net, em qualquer sistema operacional, pode acessar sites em ASP,
pois todo o processamento de informações é feito no servidor e
somente os resultados são mostrados ao usuário;
� Código-fonte protegido: os visitantes de sitesem ASP enxer-
gam somente os resultados do processamento em páginas HTML,
o que impede que o código-fonte seja visualizado;
� Banco de dados: a linguagem ASP funciona muito bem para
visualizar e manipular informações em bancos de dados que supor-
tam OBDC.
� Exemplo de uma página em ASP
Agora que você já sabe como as páginas em ASP são proces-
sadas, veremos um exemplo bastante simples, que mostra por que
é interessante usar ASP em vez de simples páginas HTML – o que
não livrará você, contudo, de ter de trabalhar com conceitos dessa
linguagem no próximo capítulo. Vamos criar uma página em ASP,
Cap2.indd 41Cap2.indd 41 21/8/2006 13:47:0021/8/2006 13:47:00
42
salvá-la, executá-la e, em seguida, veremos os resultados. O código
para a página é 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> Serviço informativo!<P>
<%for repetidor = 1 to 3%>
<font size = <%=repetidor%>> Cortesia Digerati Books
<%=repetidor%></FONT><br>
<%next%>
</body>
Note que:
� Ao utilizar a expressão <%@ LANGUAGE= VBscript %>
defi nimos que estamos criando um script que será executado
toda vez que a página for acessada;
� Iniciamos uma página em ASP sempre defi nindo o início
(também chamado de bordas ou rebarbas) de uma página
HTML. O HTML será o veículo utilizado para o encapsular do
código ASP;
� <%for repetidor = 1 to 3%> é utilizado para especifi -
car quantas vezes determinada parte do script será executada
de forma contínua. 1 to 3 informa ao browser que o código
deverá ser relido três vezes – se indicássemos a expressão
como <%for repetidor = 1 to 5%> , esta seria repetida
cinco vezes na mesma tela;
Cap2.indd 42Cap2.indd 42 21/8/2006 13:47:0021/8/2006 13:47:00
43
Curso prático de criação de sites
� <%=time%> retorna a hora atual do sistema do usuário
no navegador;
� A expressão <%=day(now)%> retorna a data do dia, seguin-
do as confi gurações do relógio do Windows ou de qualquer
outro aplicativo de data e hora instalado na máquina cliente;
� Comandos do ASP devem sempre ser executados entre si-
nais de porcentagem (%).
Salvando a página anterior em formato ASP (teste.asp) utili-
zando o Notepad, basta executá-la no browser e o resultado será
mostrado na tela.
Agora, um detalhe interessante: como já foi dito antes, o usuá-
rio que visita um site em ASP não pode ver o código-fonte, somente
o resultado do processamento das páginas em ASP. Assim, se o
usuário quiser ver o código da página ASP do exemplo anterior,
verá apenas o seguinte código em HTML:
<html>
<head>
<title> Exemplo de página 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>
Cap2.indd 43Cap2.indd 43 21/8/2006 13:47:0121/8/2006 13:47:01
44
� Variáveis
Ao utilizar o ASP, trabalhamos com a noção de variáveis, que são
utilizadas para defi nir possíveis caminhos para um comando. Quan-
to mais variáveis são defi nidas em um bloco, mais temos opções
que podem ser aplicadas sobre esse mesmo comando. Comandos
funcionais, mas com uma única variável, são tratados como pos-
suidores de resultados estáticos. A ausência de variáveis também
defi ne que um comando é estático.
Para criar uma variável simples no ASP utilizamos o sinal <%.
Para delimitar uma variável utilizamos os delimitadores <% (aber-
tura da declaração da variável) e %> (fechamento da declaração
da variável). Além disso, devemos utilizar o delimitador dim para a
criação da variável.
No exemplo a seguir, utilizamos a função dim name para defi nir
o nome do usuário de uma determinada página. Esse nome será
mostrado na página, em formato HTML:
<html>
<body>
<%
dim name
name=”Tadeu Carmona”
response.write(“Meu nome é: “ & name)
%>
</body>
</html>
Quando inserimos mais de uma variável dentro de um sistema,
criamos um array. O array cria diversas possibilidades para uma
mesma variável. O exemplo a seguir permite a escolha de um nome
de usuário por meio da escolha de um número:
Cap2.indd 44Cap2.indd 44 21/8/2006 13:47:0121/8/2006 13:47:01
45
Curso prático de criação 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>
Defi nimos a variável i para a aplicação do array. A variável utili-
zada é evocada com a utilização do comando .response.write.
Podemos também utilizar as variáveis para gerar looping para
uma mesma função. No próximo exemplo, criamos um script que
repete a mesma função seis vezes, utilizando o comando for i.
<html>
<body>
<%
dim i
for i=1 to 6
response.write(“<h” & i & “>Header “ & i & “</h” &
i & “>”)
Cap2.indd 45Cap2.indd 45 21/8/2006 13:47:0121/8/2006 13:47:01
46
next
%>
</body>
</html>
O resultado pode ser visto na Figura 2.1:
Figura 2.1.
Uma outra característica interessante do VBA é a capacidade de
evocar scripts de dentro do código. Pode-se, por exemplo, evocar
scripts VBScript, adicionando funcionalidades técnicas à página:
<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>
Cap2.indd 46Cap2.indd 46 21/8/2006 13:47:0121/8/2006 13:47:01
47
Curso prático de criação de sites
Esse é o famoso script utilizado para dar bom-dia ao usuário
e defi nir em que dia e hora a saudação está sendo feita. Note que
utilizamos now (agora) para mostrar a hora atual do sistema.
Note também que a função If h<12 then estabelece que o
script poderá ser utilizado somente nas 12 primeiras horas do dia
(00h00 a 12h00). Poderíamos, dentro da mesma página, criar um
novo script, para que o usuário fosse saudado com outro script nas
horas da tarde, e ainda um outro script nas horas da noite.
O script da tarde fi 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 fi caria assim:
<html>
<body>
<%
dim h
h=hour(now())
Cap2.indd 47Cap2.indd 47 21/8/2006 13:47:0221/8/2006 13:47:02
48
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 implementação pode ser feita, dessa vez usando Ja-
vaScript. Apesar de ser mais fácil de programar, o JavaScript pode
ser bloqueado por computadores que possuem antivírus com op-
ções de confi guração 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!”)
}
Cap2.indd 48Cap2.indd 48 21/8/2006 13:47:0221/8/2006 13:47:02
49
Curso prático de criação de sites
%>
</body>
</html>
Para chamar o nome do dia que será confi gurado, devemos utilizar
o script abaixo, que pode ser utilizado em conjunto com os anteriores:
<html>
<body>
<p>
Esta funçao 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>
Cap2.indd 49Cap2.indd 49 21/8/2006 13:47:0321/8/2006 13:47:03
50
Da mesma maneira, podemos criar um script em ASP para que
seja mostrado o ano do mês em que estamos:
<html>
<body>
<p>Esta funçao <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 mês em que estamos, uti-
lize o script a seguir. Note que utilizamos o script dentro do código
HTML, inserindo:
Cap2.indd 50Cap2.indd 50 21/8/2006 13:47:0321/8/2006 13:47:03
51
Curso prático de criação de sites
<html>
<body>
Hoje é
<%response.write(WeekdayName(weekday(date)))%>,
<br />
e estamos no mês
<%response.write(MonthName(month(date)))%>
</body>
</html>
� Countdown
Uma das funções do ASP que possui maior penetração é a que
monta contadores (countdown). Os contadores podem ser utiliza-
dos 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, defi nimos 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”, Now(), millen-
nium))%>
anos para o ano 3000!
<br>
It is
Cap2.indd 51Cap2.indd 51 21/8/2006 13:47:0321/8/2006 13:47:03
52
<%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>
Cap2.indd 52Cap2.indd 52 21/8/2006 13:47:0321/8/2006 13:47:03
Capítulo 3
PHP
Cap3.indd 53Cap3.indd 53 21/8/2006 13:57:4421/8/2006 13:57:44
54
Até agora falamos muito de ASP IIS, todos produtos da Micro-
soft, o que signifi ca que, em algum momento de nossas atividades,
teremos de pagar por alguma coisa, normalmente pela licença de
uso do software, mesmo que hospedemos nossas páginas em um
servidor de hosts.
Além disso, já advertimos que utilizar o Apache como alternati-
va para o serviço de páginas ASP pode ser, conceitualmente, uma
boa idéia. Na prática, no entanto, as soluções ASP para Apache
simplesmente não funcionam, ou apresentam erros que são sufi -
cientemente irritantes para pôr a perder a paciência de qualquer
administrador de sites.
É por isso que foi criado o PHP, uma alternativa gratuita e de
código aberto ao ASP. A linguagem PHP é uma linguagem de pro-
gramação no sentido clássico do termo, com variáveis, sentenças
condicionais e funções – diferente das linguagens baseadas em
tags ou marcações de texto, como o HTML, XML ou WML. E está
mais próxima do C, do JavaScript e do próprio ASP.
Originariamente (1994) chamado de Personal Home Page, atual-
mente o PHP é conhecido como PHP: Hipertext Preprocessor. Sen-
do uma linguagem orientada para a programação em ambiente
Web, o PHP é hoje o principal rival do ASP.
Em muitas coisas, no entanto, podemos dizer que eles são bem
parecidos: ambos são linguagens de scripting inseridas no código
HTML, e que emolduram o código.
Outra semelhança com o ASP: o PHP é executado no servidor,
como uma aplicação interna deste, o que permite que sejam utili-
zados também recursos alocados no servidor, juntamente com a
página, como serviços de e-mail e bases de dados. O browser, no-
vamente como no caso do ASP, limita-se a mostrar o resultado do
processamento de código feito no servidor.
Ainda outra semelhança: o código PHP pode ser inserido no
meio do código HTML “comum”, que é interpretado à parte pelo
servidor. Quando páginas PHP são armazenadas em um servidor
que não tem suporte para essa linguagem, veremos a página HTML
Cap3.indd 54Cap3.indd 54 21/8/2006 13:58:3021/8/2006 13:58:30
55
Curso prático de criação de sites
perfeitamente montada, e os códigos PHP espalhados pela página,
retornando mensagens de erro.
� Nosso primeiro código PHP
Vamos mostrar a seguir o funcionamento de uma página PHP
inserida no meio de um código HTML. Essa será também nossa
primeira página PHP:
<!—Nossa primeira pagina PHP -->
<html>
<head>
<title>Exemplo de PHP</title>
</head>
<body>
Parte de HTML normal.
<BR><BR>
# Aqui começa o codigo PHP, que sempre começa 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>
Cap3.indd 55Cap3.indd 55 21/8/2006 13:58:3021/8/2006 13:58:30
56
Nesta página, o código HTML faz com que um mesmo processo
seja repetido entre a linha 0 e 9, retornando a numeração em que a
linha foi inscrita em cada execução do código. O resultado prático
pode ser visto com a inserção do código no bloco de notas do Win-
dows ou em qualquer outro editor de texto que não crie formatação
(não use o Word) salvando o arquivo sob o formato .php.
� Variáveis
Até aqui mostramos somente o funcionamento de um arquivo
PHP em uma página HTML. Agora entraremos mais a fundo no fun-
cionamento de um código PHP, estudando as variáveis.
Uma variável é um bloco que contém determinada informação,
que pode ser substituída à vontade por números inteiros, números
decimais ou caracteres. O conteúdo das variáveis pode ser substi-
tuído a qualquer momento.
No PHP, todas as programações de variáveis começam com o
cifrão ($) e não é necessário defi nir uma variável antes de utilizá-la
nem defi nir um tipo para ela: uma variável pode tanto conter nú-
meros quanto caracteres, assim como pode conter ambos simulta-
neamente. Observe como no código seguinte aparece novamente
inserida no meio de uma página HTML:
<html>
<head>
<title> Inserção de variáveis em PHP </title>
</head>
<body>
<?php
$a = 1;
$b = 3.34;
$c = “Olá, Mundo”;
echo $a,”<br>”,$b,”<br>”,$c;
?>
</body>
</html>
Cap3.indd 56Cap3.indd 56 21/8/2006 13:58:3021/8/2006 13:58:30
57
Curso prático de criação de sites
No exemplo anterior, definimos três variáveis: $a, $b y
$c. Em seguida, com o comando echo definimos que o valor
contido nessas variáveis deve ser impresso na página HTML,
em linhas separadas.
� Operadores aritméticos
As variáveis nos auxiliam a automatizar alguns processos, en-
tre eles algumas funções de cálculo, que podem ser criadas com
operadores aritméticos. Os operadores aritméticos do PHP são
bem intuitivos, bastando ter aprendido o que foi ensinado sobre
variáveis e acompanhar a tabela de operadores seguinte para ser
capaz de realizar códigos:
Operador
+
-
*
/
%
++
--
Nome
Soma
Subtração
Multiplicação
Divisão
Módulo
Soma um
Subtrai um
Exemplo
5 + 6
7 - 9
6 * 3
4 / 8
7 % 2
$a++
$a--
Descrição
Soma dois ou mais números
Restam dois ou mais números
Multiplica dois ou mais
números
Divide dois ou mais
números
Devolve o resto da divisão dos
números enunciados. Nesse
exemplo, o resultado é um.
Soma um ao conteúdo de
uma variável.
Subtrai um ao conteúdo de
uma variável.
Cap3.indd 57Cap3.indd 57 21/8/200613:58:3121/8/2006 13:58:31
58
Esses operadores aritméticos, inseridos em um contexto de có-
digo HTML, poderiam ser utilizados da seguinte maneira:
<html>
<head>
<title>Operadores aritméticos</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>
Confi ra o exemplo de criação booleana criado a seguir:
Operadores de comparaçao aritmetica [doc. php]
if ( $a == $b ) => IMPORTANTE!!! Não faça: if ( $a
= $b )
if ( $a <> $b ) => Equivalente a montagem: if ( $a
!= $b )
if ( $a > $b )
if ( $a < $b )
if ( $a >= $b )
if ( $a <= $b )
Cap3.indd 58Cap3.indd 58 21/8/2006 13:58:3121/8/2006 13:58:31
59
Curso prático de criação de sites
� Exemplos
Vamos estudar alguns exemplos para ter mais profi ciência com
as técnicas de criação de páginas PHP. Essas técnicas poderão ser
utilizadas para a montagem de páginas com mais qualidade, a cus-
to zero. Além disso, esses exercícios prepararão você para o pró-
ximo capítulo, em que trabalharemos com bancos de dados SQL e
MySQL.
No exemplo a seguir utilizamos o clássico exemplo de Hello
World para mostrar que os comandos echo e print podem ser equi-
valentes, quando se trata de trabalhar com PHP:
</html>
“Hello World” (II)
Mostrar informaçao : 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 variação do Hello World mostraremos como de-
clarar variáveis da maneira correta. As variáveis são as pernas do
PHP: sem elas não é possível criar páginas que sejam realmente
dinâmicas, mas somente versáteis:
“Hello World” (III)
Cap3.indd 59Cap3.indd 59 21/8/2006 13:58:3121/8/2006 13:58:31
60
Declaraçao de variaveis ($nomeVariable)
<html>
<head>
<title>PHP – Hello World</title>
</head>
<body>
<?php
// as variaveis sempre começam com o sinal ‘$’
$strHello = “Hello”;
/* as linhas de codigo comentadas podem ocupar mais
de uma linha */
print(“$strHello World!”);
?>
</body>
</html>
Mais uma variação: em vez de inserir comentários dentro do có-
digo, iremos mesclar tags (etiquetas) HTML com código PHP. Ter co-
nhecimentos dessa técnica é essencial para gerar sites propriamente
ditos, e não páginas HTML com pequenas inserções de PHP:
“Hello World” (IV)
Combinaçao de tags (etiquetas) HTML e codigo PHP
<html>
<head>
<title>PHP – Hello World</title>
</head>
<body>
<b> <?php print(“Hello World”); ?> </b>
</body>
Cap3.indd 60Cap3.indd 60 21/8/2006 13:58:3121/8/2006 13:58:31
61
Curso prático de criação 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 relação contrária é perfeitamente possível – o PHP é mesmo
uma massa de modelar perfeita – como vemos no exemplo seguin-
te, em que inserimos as tags HTML em um código PHP:
“Hello World” – Exemplo realizado somente com PHP!
Inserir TODAS as tags HTML em um script PHP
<?php
print (“<html>”);
print (“<head>”);
print (“ <title>PHP – Hello World</title>”);
print (“ </head>”);
print (“ <body>”);
print (“ <p>Hello World!</p>”);
print (“ </body>”);
print (“</html>”);
?>
Cap3.indd 61Cap3.indd 61 21/8/2006 13:58:3121/8/2006 13:58:31
62
� Um exercício simples
Agora vamos montar um exercício 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 exercício
Vamos fazer um programa em PHP que escreva o resultado da
soma de duas variáveis 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 rápido com tags HTML
dentro de PHP: mais um exercício
O problema das aspas duplas (“)
<?php
print(“<p><font face=”Verdana, sans-serif”>
Cap3.indd 62Cap3.indd 62 21/8/2006 13:58:3121/8/2006 13:58:31
63
Curso prático de criação de sites
Meu nome é: <b>Oscar</b> <br />
</font></p>”);
?>
Solução 1: substituir “ por ‘ dentro das TAGS HTML
<?php
print(“<p><font face=’Verdana, sans-serif’>
Meu nome é: <b>Oscar</b> <br />
</font></p>”);
?>
Solução 2: substituir “ por \” dentro das tags HTML
<?php
print(“<p><font face=\”Verdana, sans-serif\”>
Meu nome é: <b>Oscar</b> <br />
</font></p>”);
?>
Solução 3: Trabalhar com CSS, para evitar colocar par-
te do “desenho” dentro do código HTML
� Sentenças condicionais
Por meio dos comandos condicionais temos a oportunidade de
avaliar uma expressão e, dependendo do resultado, retornar valo-
res específi cos 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”;
}
Cap3.indd 63Cap3.indd 63 21/8/2006 13:58:3121/8/2006 13:58:31
64
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 variável $valor é igual à passada no elseif. Ao
montar uma estrutura com comandos variáveis, lembre-se de que:
� O if sempre abre as condições;
� O elseif é sempre o seguinte do if e é somado para
cada opção;
� O else fi nal é sempre escolhido se nenhum dos resultados
no if ou elseif forem obtidos.
No exemplo a seguir, criamos um aplicativo que retorna o va-
lor 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”);
}
Cap3.indd 64Cap3.indd 64 21/8/2006 13:58:3121/8/2006 13:58:31
65
Curso prático de criação de sites
Estruturas de controle
Agora vamos demonstrar os tipos de estruturas de controle e
repetição que existem no PHP. Essas estruturas são as engrena-
gens do PHP: é por meio delas que o programa se torna capaz de
criar sistemas dinâmicos dentro do código.
if/else – subtítulo2
A estrutura if/else, como na maioria das linguagens, é a mais
utilizada, e no PHP não seria diferente.
<?php
if ($var1 > $var2) {
echo “var1 é maior que var2”;
}
else {
echo “var1 não é maior que var2”;
}
?>
Nesse exemplo, se a variável $var1 for maior que a variável
$var2, será impresso na tela var1 é maior que var2, caso con-
trário (if) será impresso var1 não é maior que var2.
O primeiro exemplo poderia ser reescrito de uma maneira alter-
nativa, como mostra o trecho seguinte:
<?php
if ($variavel == 1):{
echo “variável = 1”;
elseif ($variavel == 4):
echo “variável = 4”;
elseif ($variavel == ‘teste’):
echo “variável =teste”;
else:
Cap3.indd 65Cap3.indd 65 21/8/2006 13:58:3121/8/2006 13:58:31
66
$variavel == “erro!”;
endif
?>
No exemplo anterior utilIzamos uma maneira alternativa de escrita
da estrutura. Nesse caso, se a variável $variável for igual a 1, será
impresso variável = 1, se a variável for igual a 4, então será im-
presso variável = 4, senão se $variável for igual a teste, então
o script terá como saída o texto teste. No caso de nenhuma dessas
condições seremverdadeiras (true), será impresso na tela erro!.
� Switch
A estrutura de controle switch se comporta como se colocás-
semos vários if seguidos no mesmo código. Muitas vezes o pro-
gramador tem de comparar a mesma variável com alguns valores
diferentes, e é aí que entra a estrutura switch. Utilizarei o exemplo
anterior para demonstrar como é feita a implementação do switch
case, como também é conhecido.
<?php
switch($variavel){
case 1:
echo “variável = 0!!”;
break;
case 4:
echo “variável = 4!!”;
break;
case ‘teste’:
echo “variável = teste!!”;
break;
}
?>
Nesse caso a variável será testada com os valores 1, 4 e teste.
Como não foi defi nido um default (valor padrão), se nenhuma das
Cap3.indd 66Cap3.indd 66 21/8/2006 13:58:3121/8/2006 13:58:31
67
Curso prático de criação de sites
condições forem verdadeiras, o script não terá nenhum retorno. Va-
mos ver um exemplo com default:
<?php
switch($variavel){
case 1:
echo “variável = 0!!”;
break;
case 4:
echo “variável = 4!!”;
break;
case ‘teste’:
echo “variável = teste!!”;
break;
default:
echo “A variável não é igual a 0, 4 ou Rodri-
go!!”
}
?>
Nesse caso, mesmo que todas as condições sejam false, o script
irá executar o trecho de código que está no default.
� While e suas variações
A estrutura while é uma das mais simples estruturas de repe-
tição e seu comportamento é idêntico ao das estruturas while em
outras linguagens, como C, por exemplo. Sua sintaxe padrão é:
while (expressão) instruções
Essa instrução é executada enquanto a expressão de controle
for true. Esse teste é feito no começo do loop e, assim sendo, se
o resultado da primeira verifi cação for false, as instruções não são
executadas nem uma vez.
Cap3.indd 67Cap3.indd 67 21/8/2006 13:58:3221/8/2006 13:58:32
68
<?php
$i = 1;
while ($i <= 10) {
echo $i++;
}
?>
O exemplo a seguir cria um script que imprime na tela os nú-
meros de 0 a 10. Quando a variável $i alcança o valor 11, ao ser
testada será constatado que ela não é nem menor nem igual a 10,
portanto retorna false, não executando o código dentro do loop.
<?php
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;
?>
� Do... while
A estrutura do... while é quase idêntica à estrutura while, com
a diferença que o teste da variável é feito no fi nal da estrutura, ou
seja, o código é executado pelo menos uma vez. Veja o exemplo
seguinte:
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
Cap3.indd 68Cap3.indd 68 21/8/2006 13:58:3221/8/2006 13:58:32
69
Curso prático de criação de sites
Nele vemos que a variável $i seria impressa ao menos uma vez
mesmo que o resultado da verifi cação fosse false. Após a impres-
são, o código não 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 fi ca por conta de um teste na variável de contro-
le de repetição. Se (if) o resultado do mesmo for true, será impres-
sa a mensagem i é maior que 10 enquanto i for maior que 10,
conforme a condição do laço de repetição.
� For
O for é a estrutura de repetição mais complexa que existe no PHP,
como em quase todas as linguagens de programação. Sua sintaxe é:
for (expr1; expr2; expr3) instruçoes
A primeira instrução é executada incondicionalmente no co-
meço do loop. A segunda é executada ao se retornar o valor true
(verdadeiro). Os comandos são executados, caso seja false o loop
para sua execução. No fi nal de cada loop, a terceira expressão é
executada e são refeitos os testes anteriores.
Agora observe a seguinte implementação:
<?php
Cap3.indd 69Cap3.indd 69 21/8/2006 13:58:3221/8/2006 13:58:32
70
for ($i = 0; $i <= 100; $i++) {
echo $i;
}
?>
Esse script imprime números de 0 até 100, de acordo com a se-
gunda expressão do for ($i <= 100; $i++) . Utilizando os parâ-
metros da linguagem, vemos que for estabelece que i é igual a zero.
No segundo parâmetro, estabelece-se que i é maior ou igual a 100.
Cada uma das três expressões do for pode ser vazia. Por exem-
plo: se a segunda expressão for vazia, teremos um loop que pode
rodar infi nitamente. Essa técnica é útil quando se utiliza o comando
break para interromper a repetição do bloco.
<?php
for ($i = 0; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}
?>
� Comando break
O comando break interrompe (daí seu nome) a execução de
estruturas como o for, while, do...while e switch.
Esse comando aceita um valor numérico como parâmetro, em
que podemos defi nir em que nível queremos interromper a execu-
ção. Veja o exemplo seguinte:
<?php
$i = 0;
while ($i< 25) {
switch ($i) {
Cap3.indd 70Cap3.indd 70 21/8/2006 13:58:3321/8/2006 13:58:33
71
Curso prático de criação 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] = “Açúcar”;
$produtos[1] = “Azeite”;
$produtos[2] = “Arroz”;
Array (vetor) $produtos
Os valores 0, 1 e 2 são os índices do array. Um array no PHP é
um tipo de mapa ordenado. Um mapa é um tipo que relaciona va-
lores para chaves.
“Açúcar”, “Azeite” e “Arroz” são os valores que contêm o array.
O vetor contém três posições, mas se indexa de 0 a 2 (!).
Outra possibilidade: podemos fazer a inicialização do script a
partir do array $produtos. Veja no exemplo a seguir:
$produtos = array(“Açúcar”, “Azeite”, “Arroz”);
^ ^ ^
[ 0 ] [ 1 ] [ 2 ]
Cap3.indd 71Cap3.indd 71 21/8/2006 13:58:3321/8/2006 13:58:33
72
Utilizando o comando for podemos mostrar o conteúdo do array
$produtos (for). Veja essa nova implementação no exemplo:
for ($i=0; $i<3; $i++){
print $produtos[$i] . “<br />”;
}
foreach: Mostrar o conteudo do array $produtos [doc.
php]
$produtos[0] = “Açúcar”;
$produtos[1] = “Azeite”;
$produtos[2] = “Arroz”;
print “<ul>”;
foreach ( $produtos as $produto )
{
print “<li>” . $produto . “</li>”;
}
print “</ul>”.
Os exemplos mostrados são sufi cientes para a criação de qual-
quer estrutura de site simples utilizando Apache e PHP. Existem
algumas funções, no entanto, que podem ser úteis, em conjunto
com o elemento array, para incrementar funções a uma página. É o
caso, por exemplo, de count:
count($array)
que devolve o número de posições do vetor, e pode ser usada para
efetuar enumerações, contagens dentro do site etc.
sort($array)
Ordena um vetor segundo uma determinada ordem.
Cap3.indd 72Cap3.indd 72 21/8/2006 13:58:3321/8/2006 13:58:33
73
Curso prático de criação 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.
� Gestão de Formulários HTML (POST)
Formulário é uma página que disponibiliza entrada e saída de da-
dos para o site, para um banco de dados pertencente a ele etc. Me-
diante o uso de formulários, o cliente pode enviar dados ao servidor.
Em geral, qualquer ação que requeira a comunicação de dados
com um servidor pode ser considerada um formulário. Exemplo:
<html>
<head>
<title>Exemplo de Formulários</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>
Cap3.indd 73Cap3.indd 73 21/8/2006 13:58:3321/8/2006 13:58:33
74
</body>
</html>
� Implementação de formulário:
envio de e-mails com anexos
O tipo de formulário PHP mais utilizado na maioria dos sites é o que
cria uma página para envio de mensagens de e-mail. Algumas versões
mais recentes desse formulário – usadas por grande parte dos prove-
dores de webmail – pode também inserir anexos na mensagem.
O primeiro arquivo que devemos criar se chama email.php e conte-
rá todas as instruções necessárias para que a função POST seja capaz
de montar o cabeçalho da mensagem e enviá-la logo em seguida.
email.php
// o primeiro passo é capturar os dados para um for-
mulário
$nom = $ _ POST[“nome”];
$emai = $ _ POST[“email”];
$telefon = $ _ POST[“telefone”];
$mensage = $ _ POST[“mensagem”];
$msg = “$nom\n”;
$msg .= “$telefon\n”;
$msg .= “$emai\n”;
$msg .= “$mensage\n”;
$cabeçalho = “Para: destinatário\n”;
echo “$nom”;
mail(“email@email.com.br”,”Formulário de Contato En-
viado pelo Site”,$msg,$cabeçalho);
echo”<h1 align=center>Muito obrigado, $nome</h1>”;
echo”<p align=center>Agradecemos seu Contato.</p>”;
?>
Cap3.indd 74Cap3.indd 74 21/8/2006 13:58:3321/8/2006 13:58:33
75
Curso prático de criação 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”>
Cap3.indd 75Cap3.indd 75 21/8/2006 13:58:3321/8/2006 13:58:33
76
</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>
Cap3.indd 76Cap3.indd 76 21/8/2006 13:58:3321/8/2006 13:58:33
77
Curso prático de criação 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”></tex-
tarea>
</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>
Cap3.indd 77Cap3.indd 77 21/8/2006 13:58:3321/8/2006 13:58:33
78
<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 Endereços
Quer mais um exemplo? Vamos criar, então, utilizando apenas
HTML e PHP, um formulário que se transforma em um livro de ende-
reços (livro de ouro) ou livro de presença para os assinantes do site.
Basta seguir o código para implementar o formulário, mas você deve
possuir um banco de dados MySQL (ou SQL Server, se for o caso)
para que as informações sejam enviadas para um banco de dados.
<? // Exemplo de GuestBook v10pm
// Parâmetros de conexão
$host = “localhost”;
$user = “zoneboard02”;
$pass = “anthony”;
$bdd = “zoneboard02”;
// conexão
@mysql _ connect($host,$user,$pass)
or die(“Impossível de se conectar”)
Cap3.indd 78Cap3.indd 78 21/8/2006 13:58:3321/8/2006 13:58:33
79
Curso prático de criação de sites
@mysql _ select _ db(“$bdd”)
or die(“Impossível 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”);
}
// Seleção do modo administrador
if($act==”noadmin”) {
setcookie(“guestbook”);
Header(“Location: $URL”);
}
// Destruição de mensagens indesejáveis
if(isset($del) && isset($guestbook)) {
$query = “DELETE FROM $table WHERE date = ‘$del’”;
$result = mysql _ query($query);
}
?>
<HTML><HEAD><TITLE>Meu Livro de Contatos</TITLE>
Cap3.indd 79Cap3.indd 79 21/8/2006 13:58:3321/8/2006 13:58:33
80
<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 hei-
ght=15 align=”absmiddle”></A>
Cap3.indd 80Cap3.indd 80 21/8/2006 13:58:3421/8/2006 13:58:34
81
Curso prático de criação 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; ?>”
Cap3.indd 81Cap3.indd 81 21/8/2006 13:58:3421/8/2006 13:58:34
82
onSubmit=”return testform(this.name,this.
email,this.url,this.city
,this.country,this.comment)”>
<table cellspacing=0 cellpadding=3 border=0 bgco-
lor=”<? 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>País<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=”#”>Cabeçalho</A><br><br>
</th></tr></table>
</form>
</table>
<? } ?>
</th></tr></table>
</BODY></HTML>
<? mysql _ close(); ?>
Cap3.indd 82Cap3.indd 82 21/8/2006 13:58:3421/8/2006 13:58:34
Capítulo 4
SQL e MySQL
Cap4.indd 83Cap4.indd 83 21/8/2006 13:59:5021/8/2006 13:59:50
84
Uma das principais utilidades das páginas dinâmicas é, além da
aparência de interação com o usuário, permitir que dados enviados
por ele ou processados pelo servidor durante uma sessão Web se-
jam armazenados para posterior verifi cação por parte dos adminis-
tradores de sistemas ou pessoal das vendas. Existem até algumas
empresas que oferecem o serviço de garimpagem dos dados envia-
dos por usuários e armazenados em bancos de dados, tal a quanti-
dade e diversidade de informações e oportunidades que podem ser
obtidas através desse expediente – principalmente para empresas
de mala direta, marketing direto e lojas virtuais. Afi nal, imagine que
você é um afi cionado por chocolate suíço branco que sempre entra
em diversas páginas procurando por ofertas desse produto e que,
justamente uma das páginas que você visitou recentemente possuía
um formulário do tipo “Escolha sua marca preferida”, acompanhado
de um campo para adicionar seu e-mail para ganhar prêmios.
Esse formulário provavelmente está ligado a um banco de da-
dos, que guardará seu e-mail e o dia em que você se inscreveu na
promoção, quantas vezes você entrou na página (é para isso que
existem os cookies) e sua marca de chocolate preferida.
Bancos de dados não são novidade: desde os tempos dos main-
frames com cartões perfurados já existem sistemas de contagem
de bancos de dados.
Para os usuários do Microsoft Windows e de seu servidor Web,
o IIS, a melhor opção é o SQL – um poderoso banco de dados on-
line, desenvolvido por uma pequena empresa e comprado em de-
fi nitivo pela Microsoft em 1998. O SQL utiliza strings, como lingua-
gem de programação baseada em scripts, para fazer a garimpagem
e retirada de dados enviados pelos clientes. Esses scripts podem
ser inseridos no corpo de páginas ASP, JAVA ou PHP sem afetar a
utilização da página por parte do usuário.
� Instalação do SQL Server
Para utilizar o Microsoft SQL em um site você precisará do ine-
fável Bloco de Notas para inserção dos scripts, e de uma máquina
Cap4.indd 84Cap4.indd 84 21/8/2006 14:00:2921/8/2006 14:00:29
85
Curso prático de criação de sites
rodando o SQL Server – o sistema de banco de dados em si – para
que as requisições produzidas pelos scripts sejam enviadas. Os
requisitos mínimos para a instalação do SQL Server são (nesses
testes utilizamos a versão 2000):
� Pentium II, 256 MB de RAM, HD de 4 GB;
� Conexão 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 diálogo de instalação do Mi-
crosoft SQL Server 2000 Enterprise Edition é iniciado.
2. No diálogo Nome do Computador, clique em Computador
Local e em Avançar.
3. No diálogo Seleção de Instalação, clique em Criar uma nova
instância do SQL Server. Se você já instalou um servidor SQL
e deseja apenas instalar uma estação de trabalho para mani-
pulação do banco de dados, clique em Instalar Ferramentas
do Cliente e, em seguida, em Avançar.
4. No diálogo Defi nição de Instalação, clique em Ferramen-
tas do Cliente e Servidor e, em seguida, em Avançar. No
diálogo Nome da Instância, deixe Padrão marcado e clique
em Avançar.
5. No diálogo Tipo de Instalação, clique em Personalizada;
clique no botão Procurar e utilize uma partição diversa da uti-
lizada pelo sistema operacional. O ideal mesmo seria utilizar
um disco rígido em separado, mas sabemos que isso nem
sempre é possível. Se você utilizar a partição E, por exemplo,
seu diretório passará a se chamar E:\MYSQL.
Cap4.indd 85Cap4.indd 85 21/8/2006 14:00:2921/8/2006 14:00:29
86
6. No diálogo Selecionar Componentes, aceite todos os com-
ponentes e subcomponentes padrão. Clique em Avançar.
7. Na janela Contas de Serviços, mantenha o valor padrão (uti-
lizar a mesma conta para cada serviço). Em seguida, clique
em Iniciar automaticamente o Serviço SQL Server. Para as
Defi nições de Serviço, clique em Utilizar a Conta do Sistema
Local. Clique em Avançar.
8. Em Permissões de Acesso Padrão, sob Permissões de Ati-
vação Padrão e sob Permissões de Confi guração Padrão, cli-
que em Editar Padrão para defi nir as permissões padrão.
9. Na caixa Tipo de Acesso, selecione um tipo de acesso para
o usuário ou grupo selecionado. No diálogo Modo de Autenti-
cação, clique em Autenticação SQL e Autenticação Windows
em Modo Misto e digite uma senha para o SQL.
10. No diálogo Defi nições de Intercalação, clique em Desig-
nador de Intercalação e selecione Latin1_General. Selecione
Binário como Ordem de Classifi cação e clique em Avançar.
No diálogo Bibliotecas de Rede, aceite os valores padrão para
Canais Nomeados, Nome do Canal Nomeado e Sockets TCP/IP.
11. Quando o diálogo Iniciar Cópia de Arquivos for aberto, cli-
que em Avançar para continuar a instalação do servidor de
banco de dados. Se você desejar alterar quaisquer parâme-
tros, clique em Voltar.
12. No diálogo Escolher Modo de Licenciamento, clique em Li-
cença do Processador para. Digite o número de processadores
necessários para sua máquina – normalmente você utilizará um
único processador. Clique em Continuar e conclua a instalação.
Cap4.indd 86Cap4.indd 86 21/8/2006 14:00:3021/8/2006 14:00:30
87
Curso prático de criação de sites
� Criação de uma tabela SQL
Após a instalação, vamos iniciar a construção de nosso banco de
dados SQL. Vamos, ao mesmo tempo, criar uma tabela que armaze-
ne todos os logins feitos em nossa página ASP. Basta abrir a página e
abrir uma nova entrada do código no meio do código HTML, como:
<%@ LANGUAGE=”VBSCRIPT”
dim StrSql ‘Variável 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 uti-
lizada é 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 código basta abrir o seu browser e introduzir a
URL www.meu site.com.br/New_Table.asp.
� Criação de usuários
Criada nossa base de dados SQL, provavelmente desejaremos
inserir alguns usuários no sistema. Para isso digite:
CREATE USER nome _ do _ usuário [ [ WITH ] opção [ ...
] ]
em que a opção pode ser:
PASSWORD (digite uma senha para o usuário)
IN GROUP nome _ do _ grupo do usuário – se não houver
nenhum,digite o comando CREATE GROUP
VALID UNTIL ‘data _ hora’
Cap4.indd 87Cap4.indd 87 21/8/2006 14:00:3021/8/2006 14:00:30
88
� Oferecendo privilégios a um usuário
Para atribuir todos os privilégios de bancos de dados a um novo
usuário, digite:
GRANT ALL PRIVILEGES ON meuBD.* TO usuario@localhost
IDENTIFIED BY ‘hello’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
Esse comando atribui todos os privilégios a todas as tabelas do
banco de dados meuBD ao usuário, a partir da máquina localhost,
cuja senha é hello. O comando fl ush privileges atualiza as novas
alterações na tabela SQL em uso. Caso o usuário não exista, um
novo usuário será criado.
� Funções de data e hora
Após criar uma base de dados e utilizar consultas, por exemplo,
como as mostradas, pode ser necessário executar uma fi ltragem
dos dados armazenados. Afi nal de contas, bancos de dados ser-
vem para que os dados inscritos neles sejam utilizados. Podemos
fazer uma seleção, 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 mês de maio.
Também podemos utilizar o seguinte comando:
SELECT DISTINCT DAYOFMONTH(data),MONTH(data),YEAR(data);
Esse comando seleciona o dia do mês, mês e ano localizados
na tabela. Basta inserir os respectivos dados, na forma de números
– 01 a 30 para dias; 01 a 12 para meses, números de quatro dígitos
para anos – nas respectivas strings.
Cap4.indd 88Cap4.indd 88 21/8/2006 14:00:3021/8/2006 14:00:30
89
Curso prático de criação de sites
� Importando e exportando arquivos
Mas nem só de consulta vive a administração de bancos de da-
dos SQL. Alguns bancos e tabelas particulares costumam inchar tan-
to que se torna necessário 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 estão separados por ‘,’ (vírgu-
la), delimitados por “ “ (aspas) e as linhas delimitadas por ‘\n’ (que-
bra de linha). Para selecionar todas as ocorrências encontradas na
tabela e levá-las ao arquivo .txt, podemos utilizar o comando:
SELECT * INTO OUTFILE ‘eu.txt’ FROM table;
Não 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
Não é necessário criar a tabela previamente – ela é criada no ins-
tante em que é solicitada uma cópia de tabela preexistente tendo-a
como arquivo de saída.
� O Comando JOIN
Às vezes, os dados que necessitamos estão 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.
Cap4.indd 89Cap4.indd 89 21/8/2006 14:00:3021/8/2006 14:00:30
90
Suponhamos, por exemplo, possuirmos uma tabela com a lis-
tagem de e-mails e outra de contra-senhas – a segunda possui to-
das as senhas de compra que devem ser fornecidas a cada usuário
todas as vezes que ele inserir a conta de e-mail em um formulário.
Essa lista pode utilizar o seguinte código:
USE testesenha;
SELECT e-mails.nome,contrasenha.resposta FROM e-
mails,contrasenhas WHERE e-mails.contrasenhas = e-
mails.contrasenhas;
Pode-se também usar o join de forma implícita, utilizando a
cláusula de condição where para mostrar tão-somente campos em
que os registros sejam correspondentes. O código seria:
USE testsenha;
SELECT e-mails.nome,contrasenha.resposta FROM e-mails
INNER JOIN contrasenhas ON e-mails.contrasenha = e-
mails.contrasenha;
Existem mais algumas variações de join que podem ser utili-
zadas. Em left join, os registros da primeira tabela são exibidos
– right join faz o mesmo com a segunda tabela.
� Aliases e contagem
Um recurso que torna a criação de um código SQL mais rápi-
da são os aliases ou apelidos dados a uma determinada tabela ou
função. Basta colocar o alias desejado em frente aos nomes dos
campos na cláusula select e depois dos nomes das tabelas from.
Veja o código:
USE testesenha;
SELECT f.e-mail FROM contrasenhas f, contrasenhas d
WHERE d.contrasenhas = f.contrasenhas AND d.resposta
= ‘Recebido’;
Cap4.indd 90Cap4.indd 90 21/8/2006 14:00:3021/8/2006 14:00:30
91
Curso prático de criação de sites
Note no código anterior que, após a implementação do alias,
podemos, em vez de digitar contrasenha.resposta, digitar simples-
mente d.descricao.
Com o comando group by, por sua vez, podemos utilizar algumas
das novas utilidades trazidas pelo comando alias. Utilizando group
by ainda é possível fazer vários tipos de estatísticas 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 funcionários de
cada departamento, por exemplo, pode usar o seguinte código:
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ê também 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.
Também podemos utilizar o comando select, como neste caso,
em que ele retorna todos os e-mails, localizados na tabela e-mails,
que pertençam ao provedor Hotmail:
select e-mail, rg
from E-MAILS
where provedor = hotmail;
� O MySQL
Para quem não quer (ou não pode) gastar dinheiro, ou ainda se
utiliza de um servidor rodando GNU/Linux e Apache, existe a pos-
Cap4.indd 91Cap4.indd 91 21/8/2006 14:00:3121/8/2006 14:00:31
92
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 instalação do MySQL é simples, desde que você possua os
pacotes corretos: mysql-server-(versão do pacote), mysql-client-
(versão do pacote), mysql-doc-(versão do pacote). Existe também
uma versão para Windows, que pode ser confi gurada com o auxílio
de arquivos texto. Os pacotes podem ser obtidos em http://www.
mysql.com, assim como executáveis para Windows.
1. Para fazer a instalação no GNU/Linux usando a linha de co-
mando, 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>
Cap4.indd 92Cap4.indd 92 21/8/2006 14:00:3121/8/2006 14:00:31
93
Curso prático de criação de sites
4. Precisamos selecionar o banco de dados principal, em que
fi cam cadastradas as contas do usuários 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 instalação básica, vamos implementar o acesso a um
banco de dados MySQL usando um servidor PHP. Essa implemen-
tação, em relação aos fatores tempo gasto e simplicidade, é muito
superior à implementação análoga usando o Microsoft SQL e o IIS.
<?
//
// ===========================================
=====
//
//
// Código PHP + acesso a um BDMySQL
//
// ===========================================
=====
//
// Dados da conexão
$host = “localhost”;
$user = “userpomXX”;
Cap4.indd 93Cap4.indd 93 21/8/2006 14:00:3121/8/2006 14:00:31
94
$password = “*****”;
$database = “pomXX”;
// 1) Abrindo uma conexão com a base de dados
$db = mysql _ connect($host, $user, $password);
// 2) Selecionando a base de dados com a qual se de-
seja 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 conexão (opcional)
mysql _ free _ result ( $resultado _ consulta );
mysql _ close ( $db );
?>
� Criando uma tabela em um servidor MySQL via PHP
Para fi 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:
Cap4.indd 94Cap4.indd 94 21/8/2006 14:00:3121/8/2006 14:00:31
95
Curso prático de criação de sites
//Início do formulário, 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 posiçao do
primeiro ponto por meio da variavel email
$aroba = strpos($email, “@”); // Retorna a posiçao da
primeira base de dados por meio da variavel email
if($point==’’ || $aroba == ‘’)
{
print (“Campo o retorno inválido.<p>”); //Avisa que o
endereço buscado e invalido.
Require(“formulaire.htm”); // Retorna para o formula-
rio de inscriçao.
exit; //Sai do script
}
$mysql = mysql _ connect(“localhost”, “login”, “pas-
sword”); // Conecta-se a base indicada.
mysql _ select _ db(“base _ indicada”,$mysql); // Esco-
lhe 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 utilização do componente mostra-
do no código anterior. Isso será feito com a criação da página mailing:
Cap4.indd 95Cap4.indd 95 21/8/2006 14:00:3121/8/2006 14:00:31
96
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 inválido.<p>”); //Mostra que um endere-
ço e invalido
Require(“mailing.htm”); // Retorna para o formulario
de inscriçao.
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);
?>
Cap4.indd 96Cap4.indd 96 21/8/2006 14:00:3121/8/2006 14:00:31