Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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

Mais conteúdos dessa disciplina