SlideShare uma empresa Scribd logo
Capítulo 1

                               Conteúdo Dinâmico e a Web



Para o usuário comum, uma página da internet é uma página da internet. Ela abre no
navegador e fornece informações. Olhando mais de perto, no entanto, algumas páginas
permanecem basicamente as mesmas, enquanto outras mudam regularmente. Páginas que
não mudam – páginas estáticas – são relativamente simples de se criar. Alguém deve criar
um documento HTML, manualmente ou utilizando ferramentas, e fazer o upload do mesmo
para um site que possa ser visitado por navegadores de internet. Uma das ferramentas mais
comuns para se criar documentos HTML é o Adobe Dreamweaver. Quando mudanças são
necessárias, você simplesmente substitui arquivo antigo por um novo. Páginas dinâmicas
também são construídas com HTML, mas em lugar de uma simples abordagem constrói-e-
lança, as páginas são atualizadas regularmente, por quantas vezes são requisitadas.
Sites estáticos oferecem textos hyperlinked e talvez uma tela de login, mas, além disso,
não oferecem muita interação. Em contraste, Amazon.com (http://www.amazon.com)
demonstra muito do que um site dinâmico pode fazer: os dados de sua compra são
registrados, e o Amazon oferece recomendações de ofertas baseadas no seu histórico de
compras quando você acessa a página deles. Em outras palavras, dinâmico significa que
o usuário interage com o site muito além de apensa ler páginas e a rede responder de
acordo. Toda página é uma experiência pessoal.
Criar páginas dinâmicas – mesmo há alguns anos – significava escrever uma porção de
códigos nas linguagens C ou Pearl, e em seguida chamar e executar estes programas
através de um processo chamado Common Gateway Interface (CGI). Ter de criar arquivos
executáveis não era muito divertido, e nem aprender uma nova e complicada linguagem.
Ainda bem que PHP e MySQL tornam a criação de sites dinâmicos mais fácil e mais
rápido.

Http e a Internet
Alguma noção básica de como a internet funciona pode ser útil se você nunca programou
para a Web antes. O HyperText Transfer Protocol (HTTP) define como as páginas são
transferidas através da internet. HTTP é o método utilizado para transferir ou transportar
informações na World Wide Web. Seu propósito original era oferecer uma maneira de
publicar e recuperar páginas HTML.

O World Wide Web Consortium (W3C) e a Internet Engeneering Task Force coordenou
o desenvolvimento do HTTP, que é um protocolo de requisição-e-resposta que conecta
clientes e servidores. O cliente originário, geralmente um navegador da web, é referido
como agente usuário. O servidor destinatário, que armazena ou cria recursos e pode conter
arquivos e imagens HTML, é chamado de servidor originário. Entre o agente usuário e o
servidor originário, pode haver uma série de intermediários, tais como proxys.



                                                                                       |1
Um cliente HTTP inicia uma requisição estabelecendo uma conexão Transmission Control
Protocol (TCP – Protocolo de Controle de Transmissão) com algum portão particular ou
um hospedeiro remoto (port 80 é o defeito). Um servidor HTTP ouvindo neste portão-
espera pelo cliente para enviar uma mensagem de requisição. Ao receber a mensagem,
o servidor devolve uma linha de status, como “http/1.1 200 OK”, e sua própria resposta.
Dependendo do status, esta resposta pode ser o arquivo requisitado, uma mensagem de
erro, ou alguma outra informação.
HTTP é construído sobre o TCP, o qual é mergulhado no topo do Protocolo da Internet (IP).
Ambos são freqüentemente citados juntos, como TCP/IP. Aplicações em hospedeiros em
rede podem utilizar TCP para criar conexões um com o outro, e em seguida trocar córregos
de dados. O protocolo garante entrega confiável do remetente ao receptor. TCP sustenta
muitos dos protocolos de aplicações e aplicações mais populares da internet, incluindo a
Web, e-mail, e o Secure Shell (SSH).

o papel de pHp e MySQl no Desenvolvimento da Web
PHP é uma linguagem de programação desenvolvida para gerar páginas da web
interativamente no computador que as serve, que é chamado de servidor web. Ao contrário
do HTML, onde o navegador da web utiliza etiquetas e markup para gerar uma página, o
código PHP circula entre a página requisitada e o servidor web, somando e modificando a
saída básica HTML.
PHP facilita o desenvolvimento da web porque todo o código necessário está contido na
estrutura de PHP. Isso significa que não há razão para que você reinvente a roda cada vez que
se sentar para desenvolver um programa PHP; ele vem com funções de web embutidas.
Enquanto PHP é ótima para desenvolvimento aplicativo da web, não, ela não armazena
informações sozinha. Para isso é necessário um banco de dados. O banco de dados
escolhido pelos que desenvolveram PHP é o MySQL, que atua como um caixeiro arquivista
para informações de usuários processadas com PHP. MySQL automatiza as tarefas mais
comuns relacionadas ao armazenamento e recuperação de informações específicas de
usuários baseadas em seu critério fornecido.


                   Considere o exemplo do Amazon.com: as recomendações que o Amazon oferece são
                   baseadas no banco de dados que registra a informação de sua compra prévia.



MySQL é facilmente acessado por PHP, e eles funcionam bem juntos. Um benefício adicional
é que PHP e MySQL correm em diversos tipos de computadores e sistemas de operação,
inclusive Mac OS X, computadores baseados no Windows, e Linux.

Vantagens de se utilizar pHp com MySQl
Existe uma série de fatores que tornam a utilização de PHP e MySQL em conjunto uma
escolha natural:
PHP e MySQL funcionam bem juntos.
    Php e MySQL foram desenvolvidos um tendo o outro em mente, portanto são fáceis de
    se utilizar em conjunto. A programação relacionada entre eles é pareada logicamente.
    Trabalhar em conjunto não foi uma idéia posterior quando os criadores criaram a
    relação entre PHP e MySQL.



2 | Capítulo 1: Conteúdo Dinâmico e a Web
PHP e MySQL têm Open Source Power
   Como são projetos de open source, PHP e MySQL podem ambos ser utilizados de
   graça. Bibliotecas clientes de MySQL não são mais empacotados com PHP. Usuários
   avançados têm a habilidade de mudar o código fonte, e portanto mudar a maneira
   com que linguagem e programa funcionam.
PHP e MySQL têm suporte da comunidade
   Ambas as comunidades ativas de ferramentas da Web das quais você pode participar, e
   os participantes auxiliarão na resposta de suas perguntas. Você também pode comprar
   suporte profissional para MySQL se você precisar.
PHP e MySQL são rápidos
   Seus designs simples e eficientes permitem processamento mais veloz.
PHP e MySQL não incomodam com detalhes desnecessários
   Você não precisa conhecer todos os detalhes desnecessários de como a linguagem
   PHP se relaciona ao banco de dados MySQL, já que existe uma relação padrão para a
   requisição de procedimentos MySQL de PHP. Relação de programação de aplicação on-
   line (APIs) em http://www.php.net oferece recursos ilimitados.


o Valor da open Source
Conforme mencionamos acima, tanto PHP quanto MySQL são projetos de open source,
portanto você não precisa se preocupar em comprar licenças de uso para cada computador
em seu escritório ou sua casa. Quando utilizam projetos e tecnologias de open source,
programadores têm acesso ao código fonte. Isso permite análise individual ou grupal para
identificação de potenciais códigos problemáticos, teste, eliminação de erros, e oferece
mudanças, assim como somas a esse código. Por exemplo, Unix – o precursor na comunidade
do software open source – foi dividido gratuitamente com softwares de universidades e
pesquisadores. Linux, a alternativa grátis ao Unix, é um resultado direto dos esforços e do
paradigma da licença do open source. A maioria das licenças de open source inclui o direito
de distribuição de códigos modificados com algumas restrições. Por exemplo, algumas
licenças requerem que o código derivativo também seja lançado sob a mesma licença, ou
pode haver alguma restrição que outros não possam utilizar seu código.
Conforme Tim Reilly coloca “a licença de open source começou como uma tentativa de
preservação de uma cultura de compartilhamento, e somente mais tarde levou a uma
noção mais expandida do valor deste compartilhamento”. Hoje, programadores de open
source compartilham suas mudanças de código na web através dos http://www.php.net,
listservs, e sites. Se você for pego num pesadelo de codificação e não conseguir acordar, os
recursos mencionados previamente podem e vão te ajudar.
Nós te equiparemos com fóruns de usuários de open source mais a frente para que você
possa conferir por si próprio. Nós incluiremos listservs e sites que dispõem inúmeros recursos
se você precisar.


os Componentes de uma aplicação pHp
Para que se possa processar e desenvolver páginas da web dinâmicas, você precisa utilizar
e compreender diversas tecnologias. Existem três componentes principais na criação de
páginas dinâmicas: um servidor web, uma linguagem de programação acompanhando
o servidor e um banco de dados. É uma boa idéia deter algum conhecimento destes três
componentes básicos para desenvolvimento utilizando PHP. Começaremos com uma
compreensão rudimentar do propósito e da história do Apache (seu servidor web), PHP (sua

                                        o papel de pHp e MySQl no Desenvolvimento da Web | 3
linguagem de programação que acompanha o servidor) e MySQL (seu banco de dados).
Isso ajuda a compreender como eles se encaixam no desenvolvimento da web.
Lembre-se de que sites dinâmicos coletam informações de diferentes fontes simultaneamente,
inclusive Apache, PHP, MySQL e Cascading Style Sheets (CSS), sobre os qual falaremos mais
tarde.



pHp
PHP surgiu da necessidade das pessoas de desenvolver e manter web sites contendo um
funcionamento dinâmico de serviço ao cliente. Em 1994, Rasmus Lerdorf criou uma coleção
de scripts Perl de open source para uso pessoal, e estes eventualmente foram reescritos
em C e transformados no que PHP é hoje. Antes de 1998, PHP foi lançado em sua terceira
versão, tornando-se uma ferramenta de desenvolvimento da web que podia competir com
produtos similares, tais como a Active Server Pages (ASP) da Microsoft e o Java Server Pages
(JSP) da Sun. PHP também é uma linguagem interpretada, e não tanto compilada. A real
beleza de PHP é sua simplicidade combinada com poder.

                   Linguagens compiladas criam um arquivo binário, como por exemplo, um .exe, enquanto
                   linguagens interpretadas trabalham diretamente com o código da fonte quando
                   está executando, ao invés de criar um arquivo independente.



PHP é ubíquo e compatível com todos os grandes sistemas operacionais. Também é fácil
de aprender, tornando-se assim uma ferramenta ideal para iniciantes de programação
de sites. Ademais, você pode tirar proveito dos esforços da comunidade para facilitar
o desenvolvimento da web para todos. Os criadores de PHP desenvolveram uma infra-
estrutura que permite que programadores experientes em C ampliem as habilidades de
PHP. Como resultado, PHP agora se integra com tecnologias avançadas com XML, XSL e o
Component Object Model Technologies (COM) da Microsoft.


apache
Apache é um servidor web que transforma requisições dos navegadores em resultados
em páginas da web e sabe como processar o código PHP. PHP é só uma linguagem de
programação, portanto sem o poder de um servidor web como Apache por trás, não
haveria como usuários da web alcançassem suas páginas contendo o código de linguagem
PHP.
Apache não é o único servidor web disponível. Outro servidor web popular é o Internet
Information Services (IIS) da Microsoft, que é fornecido pelo Windows 2000 e todas as
versões mais avançadas. Apache possui as vantagens de ser grátis, de oferecer todo o
código da fonte, e de utilizar uma licença irrestrita. Apache 2.0 é a atual versão que você
provavelmente utiliza, apesar da 1.3 ainda ser frequentemente usada. IIS é mais fácil de
integrar com o Active Directory, o mais novo sistema de autenticação da Microsoft, mas
isso se aplica principalmente a web sites de companhias internas.




4 | Capítulo 1: Conteúdo Dinâmico e a Web
De acordo com a pesquisa do servidor web Netcraft, Apache tem sido o servidor
                 web mais popular da internet desde abril de 1996.



Porque os servidores web como o Apache e o IIS foram desenhados para servir arquivos
HTML, eles precisam de uma maneira de saber como processar o código PHP. Apache utiliza
módulos para carregar extensões em suas funções. IIS utiliza um conceito semelhante chamado
Internet Server Application Program Interface (ISAPI). Ambos permitem um processamento
mais veloz do código PHP do que o processo da antiga escola de convocar PHP como uma
executável separada cada vez que o servidor web recebia uma requisição de uma página
contendo PHP. Nós discutiremos a preparação do módulo Apache no capítulo 2.
Apache só possui duas grandes versões em uso atualmente: 1.3 e 2. Apache 2 é uma grande
reescritura e sustenta lineamentos. Linhas permitem que um único processo gerencie mais
de uma coisa ao mesmo tempo. Isso aumenta a velocidade e reduz os recursos necessários.
Infelizmente, PHP não é totalmente compatível com lineamento ainda. Apache 2 já foi
lançado há tempo suficiente para ser considerado estável para uso nos ambientes de
desenvolvimento e produção.
Apache 2 também sustenta módulos mais potentes. Alguns módulos adicionais podem ser
encontrados em http://www.cri.ensmp.fr/~coelho/mod_macro. Contudo, módulos DLLs
compartilhados que não vem com os arquivos fonte oficiais de Apache, tais como mod_
php4, mod_ssl, mod_auth_mysql, e mod_auth_ntsec, podem ser encontrados na web.
Apache também tem a vantagem de ser capaz de funcionar em sistemas operacionais que
não o Windows, o que agora nos leva ao assunto da compatibilidade. Mas primeiro dar-
lhe-emos uma cobertura mais profunda dos bancos de dados relacionais e SQL.


SQl e Bancos de Dados Relacionais
Structured Query Language (SQL) é a linguagem popular mais utilizada para criar, recuperar,
atualizar e deletar dados de sistemas de gerenciamento de bancos relacionais. Um banco de
dados relacional conforma-se ao modelo relacional e refere-se aos dados e ao esquema do
banco. O esquema é a estrutura do banco de como os dados são arranjados. A utilização
comum do termo “Relational Database Management System” tecnicamente se refere ao
software utilizado na criação de um banco de dados relacional, tais quais o Oracle ou o
Microsoft SQL Server.
Um banco de dados relacional é uma coleção de tabelas, porém outros itens são
frequentemente considerados parte do banco de dados, já que ajudam a organizar e
estruturar os dados além de forçar o banco de dados a conformar-se com uma série de
requisições.



MySQl
MySQL é um banco de dados relacional gratuito porém muito bem equipado. MySQL
foi desenvolvido nos anos 90 para saciar a crescente necessidade dos computadores de
gerenciar informações de maneira inteligente. O núcleo original de colaboradores do
MySQL buscava atender as suas necessidades através da utilização de mSQL, um banco de
dados simples e pequeno. Se tornou claro que mSQL não podia resolver todos os problemas

                                                        os Componentes de um pHp application | 5
que eles gostariam que resolvesse, portanto eles criaram um banco mais robusto que se
transformou no MySQL.
MySQL sustenta diversos motores de bancos de dados. Motores de bancos de dados
determinam como o MySQL lida com a armazenagem e com as inquisições dos dados.
Por causa disto, cada mecanismo de armazenagem tem sua própria gama de habilidades e
forças. Através do tempo, os motores dos bancos de dados disponíveis estão se tornando
mais avançados e velozes. A Tabela 1.1 lista quando diversos atributos foram acrescentados
ao MySQL.

Tabela 1.1. grandes lançamentos de MySQL.

 Versão            atributos
 3.23              o Banco de dados MyISaM é acrescentado e é o motor de defeito. Controla grandes
                   quantidades de dados de forma eficaz.
                   o Banco de dados InnoDB é lançado para processamento seguro de transações de bancos de dados e
                   suporte de foreign keys. Foreign Keys permitem relações entre tabelas para serem designadas
                   explicitamente no banco de dados.

4.0                pesquisas sustentam uniões. uniões permitem a junção dos resultados de duas pesquisas em
                   um resultado. Mudanças de configuração podem ser feitas sem que se reinicie o banco de dados.

4.1                um comando help é incluído para o cliente do banco de dados. Há suporte para unnamed
                   views (visualizações sem nomes), também conhecido como subpesquisas. unnamed views permitem
                   que você trate uma pesquisa como uma tabela separada dentro de uma pesquisa. Há suporte
                   para programações de caractere unicode (linguagens locais).

5.0                Gatilhos, procedimentos armazenados, confinamentos e cursores do banco de dados são acrescentados.
                   um gatilho permite que o código execute no banco de dados quando um evento engatilhado
                   ocorre, como a inserção de dados em uma tabela. procedimentos armazenados permitem que
                   os programas sejam definidos e executados no banco de dados. Cursores permitem que o código no
                   banco de dados seja executado para cada fileira que for compatível com a pesquisa.


5.1                partições, agendamento, plug-in em apI e replicação baseada em fileiras são acrescentados. partições são
                   usadas para dividir o armazém físico de grandes tabelas baseadas em uma regra definida. É
                   comumente utilizado para melhorar a performance de grandes tabelas como dados antigos
                   que são considerados históricos. agendamento permite que um código de banco de dados seja
                   executado em horários definidos. o plug-in em apI pavimenta o caminho para acrescentar e remover a
                   funcionalidade para o servidor MySQl sem reiniciá-lo. Replicações baseadas em fileiras copiam dados de
                   um servidor para outro no nível da fileira.


A atual produção lançada do MySQL é a versão 5.0x. MySQL 5.0 oferece uma performance
comparável a de qualquer uma das mais caras empresas de bancos de dados, tais como
Oracle, Informix, DB2 (IBM), e SQL Server (Microsoft). Os colaboradores atingiram este
nível de performance alavancando os talentos de diversos colaboradores de open source,
juntamente com testes das comunidades. Para tarefas gerais de bancos de dados guiados
pela web, o motor MyISAM do banco de dados funciona perfeitamente bem.

                   Os mais avançados atributos do MySQL 5.1 não são estáveis como atributos introduzidos
                   em lançamentos anteriores. MySQL 5.0 é o atual lançamento estável geral. Baixe a mais
                   nova versão reduzida (a maior da terceira porção do número da versão) para qualquer
                   grande versão que você escolha. Tem a mais avançada contenção de bugs para esta versão
                   inclusa.




6 | Capítulo 1: Conteúdo Dinâmico e a Web
Não se preocupe demais com os mais novos e avançados atributos, já que o volume do que
você provavelmente vai precisar já foi incluído no MySQL há um bom tempo.



Compatibilidade
Navegadores da web, tais como Safari, Firefox, Netscape e Internet Explorer são feitos para
processar HTML, portanto não importa qual sistema operacional atua no servidor web.
Apache, PHP e MySQL sustentam uma vasta gama de Sistemas Operacionais (SO)m portanto
você não está restringido a um SO específico em qualquer servidor ou cliente. Enquanto
você não precisa se preocupar muito com a compatibilidade do software, a variedade
completa de formatos de arquivos e diferentes linguagens que vem junto requerem um
tempo para que se acostume a elas.


Integrando Diversas Fontes de Informações
Nos primórdios da web, a vida era simples. Havia arquivos que continham HTML, e arquivos
binários, tais como imagens. Diversas tecnologias foram desde então desenvolvidas para
organizar a visita a páginas da internet. Por exemplo, Cascading Style Sheets (CCS) pega
informações de apresentações da sua HTML e em um único ponto para que você possa
fazer as mudanças de formatação em torno de uma série de páginas de uma vez só; você
não precisa mudar o markup de sua HTML manualmente, uma página HTML por vez.
Você pode, potencialmente, ter informações vindas de arquivos HTML que façam referência
aos moldes CCS, PHP e um banco de dados MySQL de uma vez só. Moldes PHP facilitam
a mudança de HTML em uma página quando contiver campos habitados por query de
bancos de dados. Daremos uma rápida olhada na maneira como estas peças se encaixam.
Só para te proporcionar um gostinho de como seu código aparentará, o exemplo 1.1
mostra código MySQL chamado por PHP por inserir um comentário em um banco MySQL.
Este exemplo contém código PHP que gera HTML a partir de um banco MySQL, e a própria
HTML faz referência a um stylesheet de CCS.




                                                 Integrando diversas fontes de informação | 7
Exemplo 1.1. Uma função PHP para inserir um comentário em uma tabela de um banco de
dados de comentários.

<?php

//A function to insert a comment into a comments table based on
//the $comment parameter.
//The database name is also a parameter

function add_comment($comment,$database){
  // Add a comment
     // As a security measure, escape any special characters in the user_name.
  $comment=mysql_real_escape_string($comment);

  // This is the SQL command
  $sql_insert = “INSERT INTO `comments` (body) VALUES (‘$comment’)”;

  // Select the database
  mysql_select_db($database);

  $success = mysql_query($sql_insert) or die(mysql_error( ));

  // print the page header
  print(‘
       <html>
           <head>
               <title>Remove User</title>
               <link rel=”stylesheet” type=”text/css” href=”example.css” />
           </head>
            <body>
                <div class=”comments”>’);

  // Check to see if the insert was successful
  if ($success){
       // Tell the user it was successful
       print(“The comment $comment was inserted successfully.”);
  }
  else {
         // Tell the user it was not successful
         print(“The comment $comment could not be inserted. Please try again later.”);
  }

  // Print the page footer
  print(‘</div></body></html>’);
  }

  ?>

Não se preocupe em entender precisamente o que está acontecendo no exemplo 1.1. A
idéia é simplesmente perceber que existe código PHP, código do banco de dados e um link
para um stylesheet.

Para simplificar a manutenção de sites que contêm muitas páginas diferentes, mas que todas
compartilham uma aparência semelhante, a cabeça e o pé da página podem ser colocados
e incluídos em cada página PHP. Isso permite que mudanças sejam feitas na cabeça ou no
pé em uma localidade que mude a aparência de cada página automaticamente. Isso libera
o colaborador de ter que mudar cada página do website.

Colaboradores PHP aprenderam que separar o código PHP do HTML pode facilitar a vida
tanto de colaboradores quanto de usuários de negócios que saibam modificar HTML, mas
que não conhecem PHP tão bem. Criando moldes de arquivos PHP separados que tenham
placeholders como dados dinâmicos, você pode separar o markup HTML do código PHP.




8 | Capítulo 1: Conteúdo Dinâmico e a Web
O exemplo 1.2 mostra um exemplo de molde de arquivo utilizando o formato do motor
de molde do Smarty. O motor do molde é requerido para substituir os valores no molde.
Smarty é discutido no capítulo 10.

Exemplo 1.2. Um molde Smarty PHP.
 <html>
      <head>
           <title>My Books</title>
      </head>
      <body>
           <p>Favorite Books:</p>
           <p>
               Title: {$title}<br />
               Author: {$author}
            </p>
       </body>
   </html>


When the template engine processes the page, the placeholders are replaced with
their associated values, as shown in Example 1-3.


Example 1-3. The resulting HTML code after template substitution and processing
  <html>
      <head>
            <title>My Books</title>
  </head>
  <body>
      <p>Favorite Books:</p>
      <p>
          Title: Java in a Nutshell<br />
          Author: Flanagan
      </p>
   </body>
  </html>



O resultado é que enquanto você soma outro arquivo ao mix, você tornou o markup de
HTML mais fácil de ser lido, e o código PHP é menos desordenado com HTML estranho.
Alguém que desenvolve a web que não é habilidosos com PHP pode modificar a aparência
da página sem se preocupar com quebra do código PHP.

O último tipo de informação mostrada aqui, CCS, também surgiu do desejo de separar os
estilos de apresentação tais quais cor e espaçamento no conteúdo do núcleo.

Cascading Style Sheets (CSS) suplementa HTML para oferecer a quem desenvolve a
web e a seus usuários mais controle sobre a forma como suas páginas se apresentam.
Designers e usuários podem criar stylesheets que definam como diferentes elementos, tais
como cabeçalhos e links, apareçam no website. O termo cascading deriva do fato de que
múltiplos stylesheets em diferentes níveis podem ser aplicadas a mesma página da web
com definições herdando de um nível para o próximo. Para aplicar o código CSS, o código
exemplo demonstrado é colocado na cabeça do seu arquivo HTML.




                                               Integrando diversas fontes de informação | 9
<html>
      <head>
         <title>CSS Example</title>
         <style type=”text/css”>
           h4, b {color: #80D92F; font-family: arial; }
           p { text-indent: 2cm; background: yellow; font-family: courier;}
      </style>
      </head>

    <body>
          <h3>Learn how to use CSS on your web sites!</h3>
          <h4>It’s cool, it’s amazing, it even saves you time!</h4>
          <p>Isn’t this <b>nifty</b>?</p>
    </body>
  </html>


No CSS, você pode ou designar uma cor nomeando-a, como fizemos aqui na designação
do fundo, “fundo: amarelo”, ou você pode apontá-la através do código da cor, como
fizemos aqui, “cor: #80D92F”. O código que começa com “estilo” é o código CSS. O
documento rende como demonstrado na Figura 1.1.
Apesar de incluirmos CCS no arquivo neste exemplo, poderia ter vindo de um arquivo
separado, como ocorre no exemplo 1.1, no qual foi referido como user_admin.css.


                   Para maiores informações sobre CSS, veja o Cascading
                   Style Sheets: The definitive Guide (Cascading Style Sheets: o guia definitivo)
                   de Eric Meyer (O’Reilly).



Evidentemente, também possuímos os velhos arquivos HTML simples no mix.

O markup HTML aplica etiquetas ao conteúdo para identificar informações que sejam de
um tipo particular ou que necessitem de formatação especial. Etiquetas HTML são sempre
postas entre os símbolos <> e não diferenciam maiúsculas de minúsculas;




Figura 1-1. CSS e HTML exibiso no navegador




10 | Capítulo 1: Conteúdo Dinâmico e a Web
logo, não importa se você digita em caixa alta ou baixa (apesar de XHTML recomendar que
se utilize caixa baixa). Mas na verdade, é uma questão de estilo. Nós usamos caixa alta em
nossos websites para visualizarmos a HTML melhor e pormos um carro retorno entre cada
linha de markup. Etiquetas geralmente ocorrem em pares de começo-e-fim. Estes pares se
encontram na forma:

        <etiqueta> Isn´t this nifty?</etiqueta>


A primeira <etiqueta> indica o começo de um par de etiquetas, e a última </etiqueta>
indica o fim. Esse par completo de etiquetas é chamado de elemento. Qualquer conteúdo
de um elemento tem as regras do elemento aplicadas a si. No exemplo anterior, o texto
“learn how to use CSS on your web sites!” está contido em um elemento h3:

        <h3>Learn how to use CSS on your web sites!</h3>


Também é um bom treino (e é exigido por XHTML) que suas etiquetas se aninharem
de forma limpa para produzir elementos com limites claros. Sempre utilize etiquetas de
finalização quando você atingir o final de um elemento, e evite ter pares de etiquetas que
se sobreponham. (Ao invés de <b>bold<i>italic</i></b>, você deve fechar o código assim:
</b></i>.) Em outras palavras, você deve abrir e fechar itens no mesmo nível. Portanto, se
você abrir um bold e em seguida um itálico, você deve fechar primeiro o itálico, em seguida
o bold.


Requerendo Dados de uma página da Web
Pode ser complicado entender como todas estas peças se integram. Quando um servidor
web detecta um código PHP, ele vira a página para o intérprete de PHP. O servidor processa
o arquivo PHP e envia o arquivo HTML resultante ao navegador. Se este resultado inclui um
stylesheet de CSS externa, o navegador emite uma requisição separada para esse stylesheet
antes de exibir a página.
Processar PHP no servidor chama-se server-side processing (processamento do servidor por
fora). Quando você requisita uma página, você desengatilha uma série de eventos. A Figura
1-2 ilustra essa interação entre seu computador e o servidor web, que é o anfitrião do web
site.

    http://www.phone.com/directory.html
       1       Your computer                                           Web host
                                     2
                                                                                  3
                                    Request             Request
                                                                       Web server
                                                                        process
                                           Internet
                                Response              Response
                   6
                                                             5                4

                       Word
                                                                        Hard disk
             Email



Figura 1.2. Enquanto o usuário simplesmente digita uma URL e tecla Enter, existe uma série
de passos que ocorrem por trás dos panos para atender a este requerimento.


                                               Requerendo dados de uma página da Web | 11
Segue a avaria da Figura 1.2:

    1. Você insere um endereço de uma página na barra de localização do seu
       navegador
    2. Seu navegador divide este endereço e envia o nome da página ao servidor web.
       Por exemplo, http://www.phone.com/directory.html requer a página directory.html
       do endereço www.phone.com.
    3. Um programa do servidor web, chamado web server process, leva o requerimento
       por directory.html e procura por este arquivo específico.
    4. O servidor web lê o arquivo directory.html do HD do servidor web.
    5. O servidor web devolve os conteúdos de directory.html ao seu navegador.
    6. O seu navegador utiliza o markup de HTML que foi devolvido pelo servidor web
       para construir a capitulação da página da web na tela do seu computador.

    O arquivo HTML chamado directory.html (requisitado na figura 1.2) é chamado de
    página da web estática pois todos que requisitam a página directory.html acessam
    exatamente a mesma página.
    Para que o servidor web personalize a página devolvida, PHP e MySQL são adicionados
    ao mix. A figura 1.3 ilustra os passos extras que ocorrem na corrente de eventos do
    anfitrião da web.
    Cada passo da corrente é listado a seguir:

 http://www.plane.com/login.php
    1        Your computer                                             Web host
                                  2                   3
                                                                     5
                                 Request     Request
                                                              Web server    4
                                                                                Hard disk
                                     Internet                   PHP 9
                            Response       Response       6   interpreter
                 11
                                                 10                8
                                                          7
                    Word
                                                               MySQL
           Email



Figura 1.3. O intérprete PHP, MySQL e o servidor web cooperam no retorno da página.

    1. Você insere um endereço de uma página na barra de localização do seu
       navegador.
    2. Seu navegador divide este endereço e envia o nome da página para seu anfitrião.
       Por exemplo, http://www.phone.com/login.php requisita a página login.php do
       endereço www.phone.com.
    3. O servidor web processa as respostas do anfitrião para login.php.
    4. O servidor web lê o arquivo login.php no HD do anfitrião.
    5. O servidor web detecta que o arquivo php não é simplesmente um arquivo HTML,

12 | Capítulo 1: Conteúdo Dinâmico e a Web
portanto solicita um outro processador – o intérprete PHP – para processar o
          arquivo.
    6.    O intérprete de PHP executa o código PHP que ele encontra no texto que recebeu
          do processo do servidor web. Incluso neste código estão chamadas ao banco de
          dados MySQL.
    7.    PHP solicita que o banco de dados MySQL execute as chamadas do banco de
          dados.
    8.    O banco de dados MySQL processa respostas dos resultados da pesquisa do banco
          de dados.
    9.    O intérprete PHP completa a execução do código PHP com dados do banco e
          retorna os resultados ao processo do servidor web.
    10.   O servidor web retorna os resultados sob forma de texto HTML ao seu navegador
    11.   Seu navegador web utiliza os textos HTML para construir a página da web no seu
          monitor.

Isso pode parecer uma série de passos, mas todo esse processo ocorre automaticamente
cada vez que uma página da web com código php é solicitada. Aliás, este processo pode
ocorrer diversas vezes em uma única página, já que uma página pode conter arquivos de
imagem e a definição CSS, que devem ser todas recuperadas pelo servidor web.

Ao desenvolver páginas da web dinâmicas, você trabalha com uma série de variáveis e
componentes do servidor, que são todos importantes para que se tenha um site atraente,
fácil de navegar e de se manter. No capítulo 2 nós demonstramos como instalar as três
maiores rodas necessárias ao funcionamento disso tudo: Apache, PHP e MySQL.




                                              Requerendo dados de uma página da Web | 13
Questões sobre o capítulo 1
Questão 1.1
       Quais são os três elementos dos quais você precisa para construir uma página da
web dinâmica?

Questão 1.2
       O que Apache utiliza para carregar extensões?

Questão 1.3
       O que significa SQL (em MySQL)?

Questão 1.4
       Para que os símbolos “<>” são utilizados?

Questão 1.5
       O que faz o Intérprete de PHP?

Veja a seção do “Capítulo 1” no Apêndice para obter as respostas das perguntas.




14 | Capítulo 1: Conteúdo Dinâmico e a Web

Mais conteúdo relacionado

Mais procurados

Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
Lorranna Machado
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
robson
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
Curso asp - basico
Curso   asp - basicoCurso   asp - basico
Curso asp - basico
Regisnaldo Alencar
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
Luiz Junior
 
Ferramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento WebFerramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento Web
igorpimentel
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
Henry Raúl González Brito
 
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PT
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PTLições Práticas de Semântica com HTML5 — 2º evento HTML5PT
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PT
André Luís
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0
Duarte Nunes
 
Phpmagazine
PhpmagazinePhpmagazine
Phpmagazine
Jackie Costa
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
Fred Ramos
 
Introdução à Criação De Páginas Web Aula1
Introdução à Criação De Páginas Web Aula1Introdução à Criação De Páginas Web Aula1
Introdução à Criação De Páginas Web Aula1
marioreis
 
Introdução a Tecnologias Web
Introdução a Tecnologias WebIntrodução a Tecnologias Web
Introdução a Tecnologias Web
Álvaro Farias Pinheiro
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
Flávio Lisboa
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)
Devmedia
 
Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
Italo Lelis de Vietro
 

Mais procurados (18)

Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Curso asp - basico
Curso   asp - basicoCurso   asp - basico
Curso asp - basico
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Ferramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento WebFerramentas Livres para Desenvolvimento Web
Ferramentas Livres para Desenvolvimento Web
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
 
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PT
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PTLições Práticas de Semântica com HTML5 — 2º evento HTML5PT
Lições Práticas de Semântica com HTML5 — 2º evento HTML5PT
 
Tecnologias Web 2.0
Tecnologias Web 2.0 Tecnologias Web 2.0
Tecnologias Web 2.0
 
Phpmagazine
PhpmagazinePhpmagazine
Phpmagazine
 
Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 
Introdução à Criação De Páginas Web Aula1
Introdução à Criação De Páginas Web Aula1Introdução à Criação De Páginas Web Aula1
Introdução à Criação De Páginas Web Aula1
 
Introdução a Tecnologias Web
Introdução a Tecnologias WebIntrodução a Tecnologias Web
Introdução a Tecnologias Web
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
Cake Php
Cake PhpCake Php
Cake Php
 
E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)E-book sobre HTML 5 (Devmedia)
E-book sobre HTML 5 (Devmedia)
 
Otimização de aplicações web
Otimização de aplicações webOtimização de aplicações web
Otimização de aplicações web
 

Semelhante a PHP - Capítulo 01

4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
RubenManhia
 
Php
PhpPhp
Python CGI
Python CGIPython CGI
Apostila php
Apostila phpApostila php
Apostila php
murilocbs
 
Apostila php
Apostila phpApostila php
Apostila php
Charleston Anjos
 
Apostila php
Apostila phpApostila php
Apostila php
koldm2
 
Apostila php
Apostila phpApostila php
Apostila php
helitonmartins
 
Apostila php
Apostila phpApostila php
Introdução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticasIntrodução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticas
Susana Oliveira
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
Fernando Palma
 
File3
File3File3
Asp
AspAsp
Php apostila - vol 02
Php   apostila - vol 02Php   apostila - vol 02
Php apostila - vol 02
Luciano Marwell
 
PHP - Prefácio
PHP - PrefácioPHP - Prefácio
PHP - Prefácio
fdorado
 
Páginas dinâmicas
Páginas dinâmicasPáginas dinâmicas
Páginas dinâmicas
Luciano Crecente
 
Apostila php
Apostila phpApostila php
Apostila php
felgamer
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHP
Kratos879
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
Mauro Duarte
 
Aula 01 - Programação Web - PHP
Aula 01  - Programação Web - PHPAula 01  - Programação Web - PHP
Aula 01 - Programação Web - PHP
Dalton Martins
 

Semelhante a PHP - Capítulo 01 (20)

4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Php
PhpPhp
Php
 
Python CGI
Python CGIPython CGI
Python CGI
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Introdução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticasIntrodução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticas
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
File3
File3File3
File3
 
Asp
AspAsp
Asp
 
Php apostila - vol 02
Php   apostila - vol 02Php   apostila - vol 02
Php apostila - vol 02
 
PHP - Prefácio
PHP - PrefácioPHP - Prefácio
PHP - Prefácio
 
Páginas dinâmicas
Páginas dinâmicasPáginas dinâmicas
Páginas dinâmicas
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHP
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
 
Aula 01 - Programação Web - PHP
Aula 01  - Programação Web - PHPAula 01  - Programação Web - PHP
Aula 01 - Programação Web - PHP
 

PHP - Capítulo 01

  • 1. Capítulo 1 Conteúdo Dinâmico e a Web Para o usuário comum, uma página da internet é uma página da internet. Ela abre no navegador e fornece informações. Olhando mais de perto, no entanto, algumas páginas permanecem basicamente as mesmas, enquanto outras mudam regularmente. Páginas que não mudam – páginas estáticas – são relativamente simples de se criar. Alguém deve criar um documento HTML, manualmente ou utilizando ferramentas, e fazer o upload do mesmo para um site que possa ser visitado por navegadores de internet. Uma das ferramentas mais comuns para se criar documentos HTML é o Adobe Dreamweaver. Quando mudanças são necessárias, você simplesmente substitui arquivo antigo por um novo. Páginas dinâmicas também são construídas com HTML, mas em lugar de uma simples abordagem constrói-e- lança, as páginas são atualizadas regularmente, por quantas vezes são requisitadas. Sites estáticos oferecem textos hyperlinked e talvez uma tela de login, mas, além disso, não oferecem muita interação. Em contraste, Amazon.com (http://www.amazon.com) demonstra muito do que um site dinâmico pode fazer: os dados de sua compra são registrados, e o Amazon oferece recomendações de ofertas baseadas no seu histórico de compras quando você acessa a página deles. Em outras palavras, dinâmico significa que o usuário interage com o site muito além de apensa ler páginas e a rede responder de acordo. Toda página é uma experiência pessoal. Criar páginas dinâmicas – mesmo há alguns anos – significava escrever uma porção de códigos nas linguagens C ou Pearl, e em seguida chamar e executar estes programas através de um processo chamado Common Gateway Interface (CGI). Ter de criar arquivos executáveis não era muito divertido, e nem aprender uma nova e complicada linguagem. Ainda bem que PHP e MySQL tornam a criação de sites dinâmicos mais fácil e mais rápido. Http e a Internet Alguma noção básica de como a internet funciona pode ser útil se você nunca programou para a Web antes. O HyperText Transfer Protocol (HTTP) define como as páginas são transferidas através da internet. HTTP é o método utilizado para transferir ou transportar informações na World Wide Web. Seu propósito original era oferecer uma maneira de publicar e recuperar páginas HTML. O World Wide Web Consortium (W3C) e a Internet Engeneering Task Force coordenou o desenvolvimento do HTTP, que é um protocolo de requisição-e-resposta que conecta clientes e servidores. O cliente originário, geralmente um navegador da web, é referido como agente usuário. O servidor destinatário, que armazena ou cria recursos e pode conter arquivos e imagens HTML, é chamado de servidor originário. Entre o agente usuário e o servidor originário, pode haver uma série de intermediários, tais como proxys. |1
  • 2. Um cliente HTTP inicia uma requisição estabelecendo uma conexão Transmission Control Protocol (TCP – Protocolo de Controle de Transmissão) com algum portão particular ou um hospedeiro remoto (port 80 é o defeito). Um servidor HTTP ouvindo neste portão- espera pelo cliente para enviar uma mensagem de requisição. Ao receber a mensagem, o servidor devolve uma linha de status, como “http/1.1 200 OK”, e sua própria resposta. Dependendo do status, esta resposta pode ser o arquivo requisitado, uma mensagem de erro, ou alguma outra informação. HTTP é construído sobre o TCP, o qual é mergulhado no topo do Protocolo da Internet (IP). Ambos são freqüentemente citados juntos, como TCP/IP. Aplicações em hospedeiros em rede podem utilizar TCP para criar conexões um com o outro, e em seguida trocar córregos de dados. O protocolo garante entrega confiável do remetente ao receptor. TCP sustenta muitos dos protocolos de aplicações e aplicações mais populares da internet, incluindo a Web, e-mail, e o Secure Shell (SSH). o papel de pHp e MySQl no Desenvolvimento da Web PHP é uma linguagem de programação desenvolvida para gerar páginas da web interativamente no computador que as serve, que é chamado de servidor web. Ao contrário do HTML, onde o navegador da web utiliza etiquetas e markup para gerar uma página, o código PHP circula entre a página requisitada e o servidor web, somando e modificando a saída básica HTML. PHP facilita o desenvolvimento da web porque todo o código necessário está contido na estrutura de PHP. Isso significa que não há razão para que você reinvente a roda cada vez que se sentar para desenvolver um programa PHP; ele vem com funções de web embutidas. Enquanto PHP é ótima para desenvolvimento aplicativo da web, não, ela não armazena informações sozinha. Para isso é necessário um banco de dados. O banco de dados escolhido pelos que desenvolveram PHP é o MySQL, que atua como um caixeiro arquivista para informações de usuários processadas com PHP. MySQL automatiza as tarefas mais comuns relacionadas ao armazenamento e recuperação de informações específicas de usuários baseadas em seu critério fornecido. Considere o exemplo do Amazon.com: as recomendações que o Amazon oferece são baseadas no banco de dados que registra a informação de sua compra prévia. MySQL é facilmente acessado por PHP, e eles funcionam bem juntos. Um benefício adicional é que PHP e MySQL correm em diversos tipos de computadores e sistemas de operação, inclusive Mac OS X, computadores baseados no Windows, e Linux. Vantagens de se utilizar pHp com MySQl Existe uma série de fatores que tornam a utilização de PHP e MySQL em conjunto uma escolha natural: PHP e MySQL funcionam bem juntos. Php e MySQL foram desenvolvidos um tendo o outro em mente, portanto são fáceis de se utilizar em conjunto. A programação relacionada entre eles é pareada logicamente. Trabalhar em conjunto não foi uma idéia posterior quando os criadores criaram a relação entre PHP e MySQL. 2 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 3. PHP e MySQL têm Open Source Power Como são projetos de open source, PHP e MySQL podem ambos ser utilizados de graça. Bibliotecas clientes de MySQL não são mais empacotados com PHP. Usuários avançados têm a habilidade de mudar o código fonte, e portanto mudar a maneira com que linguagem e programa funcionam. PHP e MySQL têm suporte da comunidade Ambas as comunidades ativas de ferramentas da Web das quais você pode participar, e os participantes auxiliarão na resposta de suas perguntas. Você também pode comprar suporte profissional para MySQL se você precisar. PHP e MySQL são rápidos Seus designs simples e eficientes permitem processamento mais veloz. PHP e MySQL não incomodam com detalhes desnecessários Você não precisa conhecer todos os detalhes desnecessários de como a linguagem PHP se relaciona ao banco de dados MySQL, já que existe uma relação padrão para a requisição de procedimentos MySQL de PHP. Relação de programação de aplicação on- line (APIs) em http://www.php.net oferece recursos ilimitados. o Valor da open Source Conforme mencionamos acima, tanto PHP quanto MySQL são projetos de open source, portanto você não precisa se preocupar em comprar licenças de uso para cada computador em seu escritório ou sua casa. Quando utilizam projetos e tecnologias de open source, programadores têm acesso ao código fonte. Isso permite análise individual ou grupal para identificação de potenciais códigos problemáticos, teste, eliminação de erros, e oferece mudanças, assim como somas a esse código. Por exemplo, Unix – o precursor na comunidade do software open source – foi dividido gratuitamente com softwares de universidades e pesquisadores. Linux, a alternativa grátis ao Unix, é um resultado direto dos esforços e do paradigma da licença do open source. A maioria das licenças de open source inclui o direito de distribuição de códigos modificados com algumas restrições. Por exemplo, algumas licenças requerem que o código derivativo também seja lançado sob a mesma licença, ou pode haver alguma restrição que outros não possam utilizar seu código. Conforme Tim Reilly coloca “a licença de open source começou como uma tentativa de preservação de uma cultura de compartilhamento, e somente mais tarde levou a uma noção mais expandida do valor deste compartilhamento”. Hoje, programadores de open source compartilham suas mudanças de código na web através dos http://www.php.net, listservs, e sites. Se você for pego num pesadelo de codificação e não conseguir acordar, os recursos mencionados previamente podem e vão te ajudar. Nós te equiparemos com fóruns de usuários de open source mais a frente para que você possa conferir por si próprio. Nós incluiremos listservs e sites que dispõem inúmeros recursos se você precisar. os Componentes de uma aplicação pHp Para que se possa processar e desenvolver páginas da web dinâmicas, você precisa utilizar e compreender diversas tecnologias. Existem três componentes principais na criação de páginas dinâmicas: um servidor web, uma linguagem de programação acompanhando o servidor e um banco de dados. É uma boa idéia deter algum conhecimento destes três componentes básicos para desenvolvimento utilizando PHP. Começaremos com uma compreensão rudimentar do propósito e da história do Apache (seu servidor web), PHP (sua o papel de pHp e MySQl no Desenvolvimento da Web | 3
  • 4. linguagem de programação que acompanha o servidor) e MySQL (seu banco de dados). Isso ajuda a compreender como eles se encaixam no desenvolvimento da web. Lembre-se de que sites dinâmicos coletam informações de diferentes fontes simultaneamente, inclusive Apache, PHP, MySQL e Cascading Style Sheets (CSS), sobre os qual falaremos mais tarde. pHp PHP surgiu da necessidade das pessoas de desenvolver e manter web sites contendo um funcionamento dinâmico de serviço ao cliente. Em 1994, Rasmus Lerdorf criou uma coleção de scripts Perl de open source para uso pessoal, e estes eventualmente foram reescritos em C e transformados no que PHP é hoje. Antes de 1998, PHP foi lançado em sua terceira versão, tornando-se uma ferramenta de desenvolvimento da web que podia competir com produtos similares, tais como a Active Server Pages (ASP) da Microsoft e o Java Server Pages (JSP) da Sun. PHP também é uma linguagem interpretada, e não tanto compilada. A real beleza de PHP é sua simplicidade combinada com poder. Linguagens compiladas criam um arquivo binário, como por exemplo, um .exe, enquanto linguagens interpretadas trabalham diretamente com o código da fonte quando está executando, ao invés de criar um arquivo independente. PHP é ubíquo e compatível com todos os grandes sistemas operacionais. Também é fácil de aprender, tornando-se assim uma ferramenta ideal para iniciantes de programação de sites. Ademais, você pode tirar proveito dos esforços da comunidade para facilitar o desenvolvimento da web para todos. Os criadores de PHP desenvolveram uma infra- estrutura que permite que programadores experientes em C ampliem as habilidades de PHP. Como resultado, PHP agora se integra com tecnologias avançadas com XML, XSL e o Component Object Model Technologies (COM) da Microsoft. apache Apache é um servidor web que transforma requisições dos navegadores em resultados em páginas da web e sabe como processar o código PHP. PHP é só uma linguagem de programação, portanto sem o poder de um servidor web como Apache por trás, não haveria como usuários da web alcançassem suas páginas contendo o código de linguagem PHP. Apache não é o único servidor web disponível. Outro servidor web popular é o Internet Information Services (IIS) da Microsoft, que é fornecido pelo Windows 2000 e todas as versões mais avançadas. Apache possui as vantagens de ser grátis, de oferecer todo o código da fonte, e de utilizar uma licença irrestrita. Apache 2.0 é a atual versão que você provavelmente utiliza, apesar da 1.3 ainda ser frequentemente usada. IIS é mais fácil de integrar com o Active Directory, o mais novo sistema de autenticação da Microsoft, mas isso se aplica principalmente a web sites de companhias internas. 4 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 5. De acordo com a pesquisa do servidor web Netcraft, Apache tem sido o servidor web mais popular da internet desde abril de 1996. Porque os servidores web como o Apache e o IIS foram desenhados para servir arquivos HTML, eles precisam de uma maneira de saber como processar o código PHP. Apache utiliza módulos para carregar extensões em suas funções. IIS utiliza um conceito semelhante chamado Internet Server Application Program Interface (ISAPI). Ambos permitem um processamento mais veloz do código PHP do que o processo da antiga escola de convocar PHP como uma executável separada cada vez que o servidor web recebia uma requisição de uma página contendo PHP. Nós discutiremos a preparação do módulo Apache no capítulo 2. Apache só possui duas grandes versões em uso atualmente: 1.3 e 2. Apache 2 é uma grande reescritura e sustenta lineamentos. Linhas permitem que um único processo gerencie mais de uma coisa ao mesmo tempo. Isso aumenta a velocidade e reduz os recursos necessários. Infelizmente, PHP não é totalmente compatível com lineamento ainda. Apache 2 já foi lançado há tempo suficiente para ser considerado estável para uso nos ambientes de desenvolvimento e produção. Apache 2 também sustenta módulos mais potentes. Alguns módulos adicionais podem ser encontrados em http://www.cri.ensmp.fr/~coelho/mod_macro. Contudo, módulos DLLs compartilhados que não vem com os arquivos fonte oficiais de Apache, tais como mod_ php4, mod_ssl, mod_auth_mysql, e mod_auth_ntsec, podem ser encontrados na web. Apache também tem a vantagem de ser capaz de funcionar em sistemas operacionais que não o Windows, o que agora nos leva ao assunto da compatibilidade. Mas primeiro dar- lhe-emos uma cobertura mais profunda dos bancos de dados relacionais e SQL. SQl e Bancos de Dados Relacionais Structured Query Language (SQL) é a linguagem popular mais utilizada para criar, recuperar, atualizar e deletar dados de sistemas de gerenciamento de bancos relacionais. Um banco de dados relacional conforma-se ao modelo relacional e refere-se aos dados e ao esquema do banco. O esquema é a estrutura do banco de como os dados são arranjados. A utilização comum do termo “Relational Database Management System” tecnicamente se refere ao software utilizado na criação de um banco de dados relacional, tais quais o Oracle ou o Microsoft SQL Server. Um banco de dados relacional é uma coleção de tabelas, porém outros itens são frequentemente considerados parte do banco de dados, já que ajudam a organizar e estruturar os dados além de forçar o banco de dados a conformar-se com uma série de requisições. MySQl MySQL é um banco de dados relacional gratuito porém muito bem equipado. MySQL foi desenvolvido nos anos 90 para saciar a crescente necessidade dos computadores de gerenciar informações de maneira inteligente. O núcleo original de colaboradores do MySQL buscava atender as suas necessidades através da utilização de mSQL, um banco de dados simples e pequeno. Se tornou claro que mSQL não podia resolver todos os problemas os Componentes de um pHp application | 5
  • 6. que eles gostariam que resolvesse, portanto eles criaram um banco mais robusto que se transformou no MySQL. MySQL sustenta diversos motores de bancos de dados. Motores de bancos de dados determinam como o MySQL lida com a armazenagem e com as inquisições dos dados. Por causa disto, cada mecanismo de armazenagem tem sua própria gama de habilidades e forças. Através do tempo, os motores dos bancos de dados disponíveis estão se tornando mais avançados e velozes. A Tabela 1.1 lista quando diversos atributos foram acrescentados ao MySQL. Tabela 1.1. grandes lançamentos de MySQL. Versão atributos 3.23 o Banco de dados MyISaM é acrescentado e é o motor de defeito. Controla grandes quantidades de dados de forma eficaz. o Banco de dados InnoDB é lançado para processamento seguro de transações de bancos de dados e suporte de foreign keys. Foreign Keys permitem relações entre tabelas para serem designadas explicitamente no banco de dados. 4.0 pesquisas sustentam uniões. uniões permitem a junção dos resultados de duas pesquisas em um resultado. Mudanças de configuração podem ser feitas sem que se reinicie o banco de dados. 4.1 um comando help é incluído para o cliente do banco de dados. Há suporte para unnamed views (visualizações sem nomes), também conhecido como subpesquisas. unnamed views permitem que você trate uma pesquisa como uma tabela separada dentro de uma pesquisa. Há suporte para programações de caractere unicode (linguagens locais). 5.0 Gatilhos, procedimentos armazenados, confinamentos e cursores do banco de dados são acrescentados. um gatilho permite que o código execute no banco de dados quando um evento engatilhado ocorre, como a inserção de dados em uma tabela. procedimentos armazenados permitem que os programas sejam definidos e executados no banco de dados. Cursores permitem que o código no banco de dados seja executado para cada fileira que for compatível com a pesquisa. 5.1 partições, agendamento, plug-in em apI e replicação baseada em fileiras são acrescentados. partições são usadas para dividir o armazém físico de grandes tabelas baseadas em uma regra definida. É comumente utilizado para melhorar a performance de grandes tabelas como dados antigos que são considerados históricos. agendamento permite que um código de banco de dados seja executado em horários definidos. o plug-in em apI pavimenta o caminho para acrescentar e remover a funcionalidade para o servidor MySQl sem reiniciá-lo. Replicações baseadas em fileiras copiam dados de um servidor para outro no nível da fileira. A atual produção lançada do MySQL é a versão 5.0x. MySQL 5.0 oferece uma performance comparável a de qualquer uma das mais caras empresas de bancos de dados, tais como Oracle, Informix, DB2 (IBM), e SQL Server (Microsoft). Os colaboradores atingiram este nível de performance alavancando os talentos de diversos colaboradores de open source, juntamente com testes das comunidades. Para tarefas gerais de bancos de dados guiados pela web, o motor MyISAM do banco de dados funciona perfeitamente bem. Os mais avançados atributos do MySQL 5.1 não são estáveis como atributos introduzidos em lançamentos anteriores. MySQL 5.0 é o atual lançamento estável geral. Baixe a mais nova versão reduzida (a maior da terceira porção do número da versão) para qualquer grande versão que você escolha. Tem a mais avançada contenção de bugs para esta versão inclusa. 6 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 7. Não se preocupe demais com os mais novos e avançados atributos, já que o volume do que você provavelmente vai precisar já foi incluído no MySQL há um bom tempo. Compatibilidade Navegadores da web, tais como Safari, Firefox, Netscape e Internet Explorer são feitos para processar HTML, portanto não importa qual sistema operacional atua no servidor web. Apache, PHP e MySQL sustentam uma vasta gama de Sistemas Operacionais (SO)m portanto você não está restringido a um SO específico em qualquer servidor ou cliente. Enquanto você não precisa se preocupar muito com a compatibilidade do software, a variedade completa de formatos de arquivos e diferentes linguagens que vem junto requerem um tempo para que se acostume a elas. Integrando Diversas Fontes de Informações Nos primórdios da web, a vida era simples. Havia arquivos que continham HTML, e arquivos binários, tais como imagens. Diversas tecnologias foram desde então desenvolvidas para organizar a visita a páginas da internet. Por exemplo, Cascading Style Sheets (CCS) pega informações de apresentações da sua HTML e em um único ponto para que você possa fazer as mudanças de formatação em torno de uma série de páginas de uma vez só; você não precisa mudar o markup de sua HTML manualmente, uma página HTML por vez. Você pode, potencialmente, ter informações vindas de arquivos HTML que façam referência aos moldes CCS, PHP e um banco de dados MySQL de uma vez só. Moldes PHP facilitam a mudança de HTML em uma página quando contiver campos habitados por query de bancos de dados. Daremos uma rápida olhada na maneira como estas peças se encaixam. Só para te proporcionar um gostinho de como seu código aparentará, o exemplo 1.1 mostra código MySQL chamado por PHP por inserir um comentário em um banco MySQL. Este exemplo contém código PHP que gera HTML a partir de um banco MySQL, e a própria HTML faz referência a um stylesheet de CCS. Integrando diversas fontes de informação | 7
  • 8. Exemplo 1.1. Uma função PHP para inserir um comentário em uma tabela de um banco de dados de comentários. <?php //A function to insert a comment into a comments table based on //the $comment parameter. //The database name is also a parameter function add_comment($comment,$database){ // Add a comment // As a security measure, escape any special characters in the user_name. $comment=mysql_real_escape_string($comment); // This is the SQL command $sql_insert = “INSERT INTO `comments` (body) VALUES (‘$comment’)”; // Select the database mysql_select_db($database); $success = mysql_query($sql_insert) or die(mysql_error( )); // print the page header print(‘ <html> <head> <title>Remove User</title> <link rel=”stylesheet” type=”text/css” href=”example.css” /> </head> <body> <div class=”comments”>’); // Check to see if the insert was successful if ($success){ // Tell the user it was successful print(“The comment $comment was inserted successfully.”); } else { // Tell the user it was not successful print(“The comment $comment could not be inserted. Please try again later.”); } // Print the page footer print(‘</div></body></html>’); } ?> Não se preocupe em entender precisamente o que está acontecendo no exemplo 1.1. A idéia é simplesmente perceber que existe código PHP, código do banco de dados e um link para um stylesheet. Para simplificar a manutenção de sites que contêm muitas páginas diferentes, mas que todas compartilham uma aparência semelhante, a cabeça e o pé da página podem ser colocados e incluídos em cada página PHP. Isso permite que mudanças sejam feitas na cabeça ou no pé em uma localidade que mude a aparência de cada página automaticamente. Isso libera o colaborador de ter que mudar cada página do website. Colaboradores PHP aprenderam que separar o código PHP do HTML pode facilitar a vida tanto de colaboradores quanto de usuários de negócios que saibam modificar HTML, mas que não conhecem PHP tão bem. Criando moldes de arquivos PHP separados que tenham placeholders como dados dinâmicos, você pode separar o markup HTML do código PHP. 8 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 9. O exemplo 1.2 mostra um exemplo de molde de arquivo utilizando o formato do motor de molde do Smarty. O motor do molde é requerido para substituir os valores no molde. Smarty é discutido no capítulo 10. Exemplo 1.2. Um molde Smarty PHP. <html> <head> <title>My Books</title> </head> <body> <p>Favorite Books:</p> <p> Title: {$title}<br /> Author: {$author} </p> </body> </html> When the template engine processes the page, the placeholders are replaced with their associated values, as shown in Example 1-3. Example 1-3. The resulting HTML code after template substitution and processing <html> <head> <title>My Books</title> </head> <body> <p>Favorite Books:</p> <p> Title: Java in a Nutshell<br /> Author: Flanagan </p> </body> </html> O resultado é que enquanto você soma outro arquivo ao mix, você tornou o markup de HTML mais fácil de ser lido, e o código PHP é menos desordenado com HTML estranho. Alguém que desenvolve a web que não é habilidosos com PHP pode modificar a aparência da página sem se preocupar com quebra do código PHP. O último tipo de informação mostrada aqui, CCS, também surgiu do desejo de separar os estilos de apresentação tais quais cor e espaçamento no conteúdo do núcleo. Cascading Style Sheets (CSS) suplementa HTML para oferecer a quem desenvolve a web e a seus usuários mais controle sobre a forma como suas páginas se apresentam. Designers e usuários podem criar stylesheets que definam como diferentes elementos, tais como cabeçalhos e links, apareçam no website. O termo cascading deriva do fato de que múltiplos stylesheets em diferentes níveis podem ser aplicadas a mesma página da web com definições herdando de um nível para o próximo. Para aplicar o código CSS, o código exemplo demonstrado é colocado na cabeça do seu arquivo HTML. Integrando diversas fontes de informação | 9
  • 10. <html> <head> <title>CSS Example</title> <style type=”text/css”> h4, b {color: #80D92F; font-family: arial; } p { text-indent: 2cm; background: yellow; font-family: courier;} </style> </head> <body> <h3>Learn how to use CSS on your web sites!</h3> <h4>It’s cool, it’s amazing, it even saves you time!</h4> <p>Isn’t this <b>nifty</b>?</p> </body> </html> No CSS, você pode ou designar uma cor nomeando-a, como fizemos aqui na designação do fundo, “fundo: amarelo”, ou você pode apontá-la através do código da cor, como fizemos aqui, “cor: #80D92F”. O código que começa com “estilo” é o código CSS. O documento rende como demonstrado na Figura 1.1. Apesar de incluirmos CCS no arquivo neste exemplo, poderia ter vindo de um arquivo separado, como ocorre no exemplo 1.1, no qual foi referido como user_admin.css. Para maiores informações sobre CSS, veja o Cascading Style Sheets: The definitive Guide (Cascading Style Sheets: o guia definitivo) de Eric Meyer (O’Reilly). Evidentemente, também possuímos os velhos arquivos HTML simples no mix. O markup HTML aplica etiquetas ao conteúdo para identificar informações que sejam de um tipo particular ou que necessitem de formatação especial. Etiquetas HTML são sempre postas entre os símbolos <> e não diferenciam maiúsculas de minúsculas; Figura 1-1. CSS e HTML exibiso no navegador 10 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 11. logo, não importa se você digita em caixa alta ou baixa (apesar de XHTML recomendar que se utilize caixa baixa). Mas na verdade, é uma questão de estilo. Nós usamos caixa alta em nossos websites para visualizarmos a HTML melhor e pormos um carro retorno entre cada linha de markup. Etiquetas geralmente ocorrem em pares de começo-e-fim. Estes pares se encontram na forma: <etiqueta> Isn´t this nifty?</etiqueta> A primeira <etiqueta> indica o começo de um par de etiquetas, e a última </etiqueta> indica o fim. Esse par completo de etiquetas é chamado de elemento. Qualquer conteúdo de um elemento tem as regras do elemento aplicadas a si. No exemplo anterior, o texto “learn how to use CSS on your web sites!” está contido em um elemento h3: <h3>Learn how to use CSS on your web sites!</h3> Também é um bom treino (e é exigido por XHTML) que suas etiquetas se aninharem de forma limpa para produzir elementos com limites claros. Sempre utilize etiquetas de finalização quando você atingir o final de um elemento, e evite ter pares de etiquetas que se sobreponham. (Ao invés de <b>bold<i>italic</i></b>, você deve fechar o código assim: </b></i>.) Em outras palavras, você deve abrir e fechar itens no mesmo nível. Portanto, se você abrir um bold e em seguida um itálico, você deve fechar primeiro o itálico, em seguida o bold. Requerendo Dados de uma página da Web Pode ser complicado entender como todas estas peças se integram. Quando um servidor web detecta um código PHP, ele vira a página para o intérprete de PHP. O servidor processa o arquivo PHP e envia o arquivo HTML resultante ao navegador. Se este resultado inclui um stylesheet de CSS externa, o navegador emite uma requisição separada para esse stylesheet antes de exibir a página. Processar PHP no servidor chama-se server-side processing (processamento do servidor por fora). Quando você requisita uma página, você desengatilha uma série de eventos. A Figura 1-2 ilustra essa interação entre seu computador e o servidor web, que é o anfitrião do web site. http://www.phone.com/directory.html 1 Your computer Web host 2 3 Request Request Web server process Internet Response Response 6 5 4 Word Hard disk Email Figura 1.2. Enquanto o usuário simplesmente digita uma URL e tecla Enter, existe uma série de passos que ocorrem por trás dos panos para atender a este requerimento. Requerendo dados de uma página da Web | 11
  • 12. Segue a avaria da Figura 1.2: 1. Você insere um endereço de uma página na barra de localização do seu navegador 2. Seu navegador divide este endereço e envia o nome da página ao servidor web. Por exemplo, http://www.phone.com/directory.html requer a página directory.html do endereço www.phone.com. 3. Um programa do servidor web, chamado web server process, leva o requerimento por directory.html e procura por este arquivo específico. 4. O servidor web lê o arquivo directory.html do HD do servidor web. 5. O servidor web devolve os conteúdos de directory.html ao seu navegador. 6. O seu navegador utiliza o markup de HTML que foi devolvido pelo servidor web para construir a capitulação da página da web na tela do seu computador. O arquivo HTML chamado directory.html (requisitado na figura 1.2) é chamado de página da web estática pois todos que requisitam a página directory.html acessam exatamente a mesma página. Para que o servidor web personalize a página devolvida, PHP e MySQL são adicionados ao mix. A figura 1.3 ilustra os passos extras que ocorrem na corrente de eventos do anfitrião da web. Cada passo da corrente é listado a seguir: http://www.plane.com/login.php 1 Your computer Web host 2 3 5 Request Request Web server 4 Hard disk Internet PHP 9 Response Response 6 interpreter 11 10 8 7 Word MySQL Email Figura 1.3. O intérprete PHP, MySQL e o servidor web cooperam no retorno da página. 1. Você insere um endereço de uma página na barra de localização do seu navegador. 2. Seu navegador divide este endereço e envia o nome da página para seu anfitrião. Por exemplo, http://www.phone.com/login.php requisita a página login.php do endereço www.phone.com. 3. O servidor web processa as respostas do anfitrião para login.php. 4. O servidor web lê o arquivo login.php no HD do anfitrião. 5. O servidor web detecta que o arquivo php não é simplesmente um arquivo HTML, 12 | Capítulo 1: Conteúdo Dinâmico e a Web
  • 13. portanto solicita um outro processador – o intérprete PHP – para processar o arquivo. 6. O intérprete de PHP executa o código PHP que ele encontra no texto que recebeu do processo do servidor web. Incluso neste código estão chamadas ao banco de dados MySQL. 7. PHP solicita que o banco de dados MySQL execute as chamadas do banco de dados. 8. O banco de dados MySQL processa respostas dos resultados da pesquisa do banco de dados. 9. O intérprete PHP completa a execução do código PHP com dados do banco e retorna os resultados ao processo do servidor web. 10. O servidor web retorna os resultados sob forma de texto HTML ao seu navegador 11. Seu navegador web utiliza os textos HTML para construir a página da web no seu monitor. Isso pode parecer uma série de passos, mas todo esse processo ocorre automaticamente cada vez que uma página da web com código php é solicitada. Aliás, este processo pode ocorrer diversas vezes em uma única página, já que uma página pode conter arquivos de imagem e a definição CSS, que devem ser todas recuperadas pelo servidor web. Ao desenvolver páginas da web dinâmicas, você trabalha com uma série de variáveis e componentes do servidor, que são todos importantes para que se tenha um site atraente, fácil de navegar e de se manter. No capítulo 2 nós demonstramos como instalar as três maiores rodas necessárias ao funcionamento disso tudo: Apache, PHP e MySQL. Requerendo dados de uma página da Web | 13
  • 14. Questões sobre o capítulo 1 Questão 1.1 Quais são os três elementos dos quais você precisa para construir uma página da web dinâmica? Questão 1.2 O que Apache utiliza para carregar extensões? Questão 1.3 O que significa SQL (em MySQL)? Questão 1.4 Para que os símbolos “<>” são utilizados? Questão 1.5 O que faz o Intérprete de PHP? Veja a seção do “Capítulo 1” no Apêndice para obter as respostas das perguntas. 14 | Capítulo 1: Conteúdo Dinâmico e a Web