Professional Documents
Culture Documents
1
O PHP e a World Wide Web
1.1. Introduo
Ler um livro sobre uma determinada linguagem de programao e colocar os conhecimentos a adquiridos logo em prtica no faz com que a aprendizagem dessa nova linguagem seja imediata e isenta de erros. Ler e pensar so o incio de um longo processo para quem se quer iniciar com uma nova ferramenta de trabalho. Mas dada a variedade de ferramentas com que se tem de trabalhar na web, nem sempre os resultados so rapidamente visveis. Para que se sinta mais confortvel na leitura deste trabalho, convm possuir alguns conhecimentos de HTML, bases de dados e, se possvel, alguns conhecimentos de uma linguagem estruturada, como o C/C++ ou o Perl. Neste livro, iremos adoptar os sistemas de gesto de bases de dados Microsoft Access e o MySQL como suporte para os exemplos aqui apresentados. Por isso, entende-se que, para tirar o mximo proveito desta ferramenta, o leitor dever ter os conhecimentos mnimos de utilizao destes sistemas. Obviamente que sendo um dos aspectos mais importantes do PHP o manuseamento de informao armazenada em bases de dados, convm, como no podia deixar de ser, ter conhecimentos na rea de desenho de bases de dados e da linguagem SQL. Neste captulo, iremos fazer uma breve apresentao das principais caractersticas do PHP, dando algumas indicaes do modo como interactua com o HTML e com os sistemas de gesto de bases de dados e apresentando alguns exemplos iniciais sobre os mesmos.
1
Programao com PHP 5.3
As principais razes sero indicadas adiante, mas pode-se adiantar que o PHP uma combinao de uma linguagem de programao e de um servidor aplicacional. Este tipo de tecnologia est actualmente em crescente expanso, sendo um bom indicador do interesse que desperta perante a grande parte dos programadores da web na criao dinmica de pginas. Funciona em praticamente todos os ambientes conhecidos, sendo suportada por uma enorme comunidade na Internet que contribui para a sua difuso e aceitao a nvel mundial. Por outro lado, existe uma empresa, a Zend, que desenvolve e explora produtos relacionados com o PHP e que actua no mercado como grande impulsionadora desta excelente ferramenta, sendo a empresa estandarte no mundo PHP. Como linguagem de programao, semelhante a muitas outras, no sentido em que possui variveis para armazenar valores e operadores capazes de manipular essas variveis. Igualmente de referir o suporte para objectos, que uma das suas mais-valias, e que a coloca em posio de ombrear com outras linguagens rivais. Mas o seu maior valor reside no papel que desempenha como servidor aplicacional. Adiante veremos com mais pormenor as suas potencialidades.
1) 2) 3) 4) 5) 6)
O browser descodifica a primeira parte do URL e contacta o servidor. O browser fornece o restante do URL ao servidor. O servidor transforma o URL num caminho e nome de ficheiro. O servidor envia o documento ao browser. O servidor corta a ligao. O browser mostra o documento.
Caso o documento possua ligaes para outros documentos (por exemplo, imagens), o browser volta a executar toda a rotina e, sempre que se contacta o servidor, como se nunca o tivesse feito, sendo produzido um novo documento a cada pedido efectuado. Independentemente de outros mecanismos mais complexos (por exemplo, proxies), afortunadamente, os browsers modernos tambm permitem manter uma cpia local dos documentos recentemente acedidos (cache) permitindo aliviar o trfego existente, assim como
1
O PHP e a World Wide Web
possuem os necessrios mecanismos que permitem acelerar o rendering dos prprios documentos de web. Sendo isto excelente para aceder a texto esttico ou visualizar imagens, tal deixa de ser vlido quando se acede a informao que muda constantemente ou solicitada pelo utilizador interactivamente consoante o momento, como, por exemplo, quando um utilizador pretende saber informao sobre um livro de uma biblioteca. O browser pouco ou nada sabe acerca dos documentos solicitados ao servidor. Aquilo que faz , consoante a informao obtida do servidor, de acordo com as especificaes MIME (Multipurpose Internet Mail Extensions), executar um conjunto de operaes que permitem saber o que fazer com o documento. Deste modo, o browser sabe que, se o documento for em HTML, para visualizar, mas se for um ficheiro do tipo ZIP, sabe que ter de permitir a gravao do mesmo para o disco.
1
Programao com PHP 5.3
ESTTICO NA CRIAO DE
UMA PGINA SIMPLES
DINMICO
Requer em primeiro lugar a criao de um mdulo/modelo (template) e ento gera o contedo da pgina Com o mdulo construdo, somente o contedo instantneo necessita de ser gerado O site da web dinmico a soluo adequada
EM PROJECTOS DE
GRANDES DIMENSES
EM PROJECTOS
ESPECIAIS
Projectos, com interaco com bases de dados em tempo real, inviabilizam a criao de documentos estticos Novo contedo significa a criao de novas pginas; qualquer alterao na estrutura propaga-se a todas as pginas, obrigando a constantes alteraes O servidor tem um processamento reduzido limitando-se a ler os ficheiros HTML
NA MANUTENO
O novo contedo pode ser inserido na estrutura do mdulo previamente construdo, facilitando qualquer actualizao As pginas so criadas instantaneamente sendo necessria a utilizao de software adicional. Tal implica um maior processamento, sendo este tanto maior quanto maior for a estrutura do site Lenta e faseada pois requer conhecimentos de programao, desenvolvimento em bases de dados, manuteno de sites, etc.
NO
PROCESSAMENTO NO SERVIDOR WEB
NA
APRENDIZAGEM
No caso de criao de pginas dinmicas, e dada a necessidade de utilizao de software adicional, possvel imaginar o investimento requerido para concretizar este tipo de aproximao. Apesar de existir uma enorme variedade de solues comerciais, existe, felizmente, software que vai de encontro necessidade de cada um consoante o fim em vista. O PHP uma destas solues e destaca-se de outras congneres, na medida em que uma soluo capaz de satisfazer os requisitos mais exigentes, pois, alm de ter um custo praticamente nulo, possui uma curva de aprendizagem reduzida, associada a um conjunto de funcionalidades que o torna mpar entre a concorrncia. actualmente, de facto, uma referncia no mundo do desenvolvimento das aplicaes da web.
1
O PHP e a World Wide Web
Wide Web. Contudo, e de um ponto de vista funcional, existe uma explicao mais completa se considerarmos que na web existem essencialmente dois tipos de linguagem:
As diferenas entre estes dois tipos dificultam a deciso a tomar relativamente a um dado projecto da web. O primeiro tipo utiliza os recursos existentes no sistema do utilizador (no sendo por isso de estranhar que o nosso computador fique mais lento quando se puxa uma pgina com cdigo deste tipo). So exemplos de algumas linguagens de programao deste gnero o JavaScript, ActiveX, Java Applets, entre outras. A lentido no carregamento destas pginas pode ser atenuada, tentando-se construir pginas em que o cdigo seja o mais pequeno possvel. Por outro lado, temos a situao em que o processamento totalmente efectuado no servidor. Se este no estiver preparado para responder a pedidos em simultneo de vrios browsers, notar-se- uma acentuada quebra nas performances de resposta, no s no envio de documentos de web ao browser cliente, como tambm de outras tarefas que o servidor tem a correr em simultneo. As pessoas que criaram a World Wide Web foram as responsveis pelo desenvolvimento desta tcnica a que deram o nome de CGI (Common Gateway Interface), e graas a tal pode-se, com o tipo de aplicaes que fazem recurso desta tcnica, executar praticamente todas as tarefas que a nossa imaginao nos permita. Por exemplo, aceder a bases de dados, executar sesses Telnet, gerar grficos e efectuar estatsticas no so tarefas desconhecidas para quem trabalha com CGI. Contudo, e apesar de o conceito bsico por detrs do CGI ser bastante simples, a sua aplicabilidade no imediata, pois exige conhecimentos de programao algo avanados (embora seja igualmente possvel fazer CGI em Visual Basic, por exemplo), sendo, por isso, um contratempo a ultrapassar. Por esse motivo, o PHP aparece como uma ferramenta poderosa capaz de resolver alguns dos problemas associados ao CGI, j que a sua simplicidade enorme quando comparada, e permite contornar a maioria dos problemas que o CGI por vezes soluciona mas com o recurso a tcnicas complexas. No ambiente PHP, o cdigo embebido directamente no documento HTML, dando assim origem a um script contendo instrues especficas. Deste modo, o servidor da web, a que foi acrescentado um mdulo PHP, consegue interpretar os comandos a inseridos, e transforma o resultado em cdigo HTML facilmente interpretvel pelo browser cliente. Repare-se que, diferentemente da programao em CGI com o recurso a linguagens clssicas, como o C ou o Pascal, em que o cdigo-fonte compilado num ficheiro executvel para se tornar utilizvel, no PHP, tal j no necessrio pois, sendo esta linguagem integrada no servidor da web, passa ento a ser interpretada por esse mesmo servidor. Assim, pode-se intercalar ou embeber cdigo PHP com cdigo HTML, havendo somente necessidade de indicar onde este se inicia e termina usando delimitadores especficos e criados para o efeito.
1
Programao com PHP 5.3
Por seu lado, os formulrios em HTML permitem que se recolham os inputs dos utilizadores, deixando-os preencher campos apropriados para o efeito. Estes formulrios podem ser compostos por vrios elementos, como botes, radio buttons, selection lists, input boxes, e muitos outros, capazes de permitirem um grau de interaco com o utilizador final suficientemente satisfatrio. Todos estes elementos so indicados usando etiquetas HTML (tags), sendo possvel haver mais de um formulrio por cada documento HTML. Algumas das etiquetas HTML indicadoras do tipo de elementos utilizados num formulrio podem ser visualizadas a seguir:
< input type = Text > Password Checkbox Radio Hidden Submit Reset
No querendo entrar em detalhes sobre o HTML, convm por fim referir que as opes mais importantes a especificar nos formulrios so method e action, pois permitem definir o modo de transmisso e o tipo de processamento a ser realizado sobre a informao introduzida:
Method Especifica o modo como a informao do formulrio transmitida ao script PHP. Pode ser do tipo GET ou POST;
1
O PHP e a World Wide Web
Action Indica o nome e a localizao do script PHP que ir processar a informao que foi introduzida no formulrio.
Estas duas opes permitem que o utilizador, atravs de um formulrio, consiga interagir com a aplicao residente no servidor da web atravs de variveis de sistema especficas. Mas, o curioso que, ao trabalhar com PHP, no necessrio saber nada sobre essas variveis (nomeadamente, o seu tipo ou a sua dimenso), pois estas so muito simples de criar, bastando acrescentar o sinal $ antes do seu nome ou, no caso de uma varivel correspondente a um campo de um formulrio, ser o nome a definido com o sinal $ antes do seu nome. O que acabmos de descrever funciona se uma directiva de nome register_globals no ficheiro geral de configurao do PHP tiver o valor On. Caso contrrio, o acesso s variveis do PHP realizado atravs de um conjunto de arrays superglobais que o PHP possui. Por predefinio, o valor desta directiva Off, por motivos de segurana, o que implica que os utilizadores tenham que recorrer a estes arrays superglobais do PHP para processar as variveis que so enviadas pelo formulrio em HTML. Na Figura 1.1, temos um exemplo simples de um script que permite somar o valor de 2 variveis:
<?php /*php_1.php*/ ?> <html> <head> <title> Resultado </title> </head> <body> <?php $X=5; $Y=3; $Z=$X + $Y; echo "Total"; echo "= $Z"; ?> </body> </html>
Mas o leitor estar a pensar que, sendo este ficheiro colocado no servidor da web, poder visualizar as instrues que fazem parte do script PHP. Engana-se pois se visualizar o cdigo FCA Editora de Informtica
1
Programao com PHP 5.3
-fonte no seu browser, ter uma surpresa agradvel, j que ter acesso nica e exclusivamente ao cdigo HTML gerado resultante do processamento do script de PHP. Uma outra situao interessante em que o leitor estar a pensar ser o da transmisso de variveis entre scripts. Um exemplo simples de utilizao de formulrios no PHP consiste na utilizao de dois ficheiros; o ficheiro form.html (onde o utilizador efectuar os inputs) e o ficheiro php_2.php que contm os comandos PHP que iro processar os dados inseridos no formulrio. Os dados inseridos no formulrio (Figura 1.2) pelo utilizador so transmitidos ao servidor de web, recorrendo opo de envio indicada em method e ento processados atravs do script indicado em action. Exemplo de form.html:
<html> <head> <title> formulrio PHP </title> </head> <form enctype="multipart/form-data" method="POST" action="php_2.php"> <p>Nome <input type="text" name=nome size="30"></p> <p>Idade <input type="text" name=idade size="2"></p> <p>Qual o carro que mais gostas? <select name=marca> <option>Ferrari</option> <option>Mercedes</option> <option>BMW</option> </select></p> <p><input type="Submit" value="OK"></p> </form> <p> </html>
1
O PHP e a World Wide Web
Isto decorre do que acabmos de explicar anteriormente, e que est em vigor desde a verso 4.2.0 do PHP em que a varivel register_globals do ficheiro de configurao do PHP (php.ini) passou a ter o valor predefinido igual a Off. Isto tem a ver com questes de segurana, mas esta alterao vem afectar um conjunto de variveis definidas num mbito global. Por exemplo, as variveis nome, idade e marca sero capturadas no script php_2.php referenciando-se com o nome da varivel global que foi transmitida; $_post (nome), $_post (idade), $_post (marca). Anteriormente (quando a varivel register_globals do php.ini era Off), estas variveis eram transmitidas e capturadas bastando colocar o smbolo $ antes da varivel: $nome, $idade, $marca. O leitor poder testar estas alteraes criando os scripts adequados e reiniciando o servidor da web. Repare no operador .; este permite unir a cadeia de palavras iniciada por echo. O resultado o da Figura 1.3.
No poderamos, contudo, deixar de realar um dos pontos mais fortes do PHP e que reside na possibilidade de este poder efectuar ligaes a bases de dados de uma forma fcil, muito simples e intuitiva. A interaco com bases de dados vai permitir uma maior funcionalidade por parte de quem utiliza as aplicaes da web, pois, consoante os inputs dos utilizadores, obter-se-o respostas imediatas sob a forma de pginas HTML. Os principais motivos tcnicos que justificam a utilizao de bases de dados para interaco/acesso atravs da web podem ser resumidos nos seguintes aspectos:
1
Programao com PHP 5.3
Qualquer utilizador pode aceder base de dados (BD) utilizando uma interface standard (browser); possvel efectuar interrogaes BD via SQL e gerar pginas instantaneamente consoante o pedido; Os utilizadores no necessitam de possuir software cliente especial para aceder s bases de dados; As alteraes efectuadas na BD so realizadas no servidor, no havendo por isso necessidade de distribuir actualizaes do software cliente; A base de dados pode conter ligaes a outros recursos disponveis na web.
Pelo exposto, apercebemo-nos de que, sendo possvel efectuar ligaes a bases de dados, poderemos interactuar com estas de modo a criar pginas HTML instantneas e dinmicas de acordo com as solicitaes dos utilizadores. Deste modo, o dinamismo requerido na criao deste tipo de pginas poder ser assim conseguido com o recurso a um cliente da web (browser), servidor da web (ex.: Apache), servidor de bases de dados (ex.: MySQL), e uma ferramenta que permita ligar estes servidores (ex.: PHP). O diagrama da Figura 1.4 exemplificativo da arquitectura PHP.
Para que o script armazenado no servidor da web consiga aceder e processar os dados armazenados numa base de dados, o processo de certo modo bastante simples:
1) O utilizador introduz os dados atravs de um formulrio que aparece no browser. 2) O servidor da web verifica se existem ligaes a bases de dados disponveis e estabelece a
ligao em caso afirmativo. 3) Os dados so processados de acordo com as instrues existentes no script. 4) O servidor da web envia o documento HTML ao browser, devidamente formatado. 5) O browser interpreta o HTML permitindo a visualizao do documento.
Em PHP, se quisermos trabalhar com uma base de dados, torna-se necessrio, em primeiro lugar, efectuar a ligao a essa mesma base de dados (e correspondente servidor no qual a base de dados se encontra alojada). Consoante o tipo de sistema de gesto de base de dados (MySQL, Oracle, SQLite,...) que se pretenda trabalhar, ou o sistema operativo, as instrues tambm sero variveis para nos ligar BD.
10
1
O PHP e a World Wide Web
Por exemplo, a instruo em MySQL para efectuar a ligao efectuada atravs do seguinte comando:
mysql_connect (nome servidor, utilizador, password)
Estando efectuada essa ligao entre o PHP e a base de dados, possvel posteriormente efectuar um variado e complexo conjunto de operaes sobre os dados que se encontram armazenados na mesma, apresentando-os sob diversas formas no browser web. Especificar qual a informao que vamos obter e como a vamos apresentar pode ser por vezes bastante confuso, mas a versatilidade de linguagens de manuseamento de dados, como o SQL, pode facilitar tarefas aparentemente morosas e bastante complexas. A sua integrao com o PHP de facto excelente e esse um dos aspectos que o fortalecem, pois a possibilidade de embeber cdigo SQL permite aumentar a utilidade do PHP at nveis anteriormente conseguidos somente com solues proprietrias. Para alm disso, o SQL pode conferir alguns aspectos de portabilidade s aplicaes desenvolvidas. Foi ento possvel, ao longo deste primeiro captulo introdutrio, verificar alguns dos aspectos mais relevantes da linguagem de programao PHP. Houve um cuidado por parte dos autores em no progredir para tpicos muito avanados que sero abordados nas prximas seces deste mesmo livro.
11
1
Programao com PHP 5.3
12