Buscar

PHP

Prévia do material em texto

ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 1 
Tópico 5: PHP – Parte 1 
 
1.	
   Introdução ............................................................................................................... 5	
  
2.	
   O que é necessário para utilização de PHP ............................................................. 8	
  
3.	
   Sintaxe básica de PHP .......................................................................................... 12	
  
4.	
   Variáveis ............................................................................................................... 15	
  
4.1.	
   Dados numéricos ............................................................................................ 17	
  
4.2.	
   Strings ............................................................................................................ 18	
  
Aspas Simples ......................................................................................................... 19	
  
Aspas Duplas .......................................................................................................... 20	
  
Aspas Invertidas ..................................................................................................... 22	
  
Operador de concatenação .................................................................................... 23	
  
Função strlen() ....................................................................................................... 24	
  
Função strpos(str1, str2) ........................................................................................ 25	
  
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 2 
Especificação completa das funções associadas a strings em PHP ...................... 25	
  
4.3.	
   Constantes ...................................................................................................... 26	
  
4.4.	
   Arrays ............................................................................................................. 28	
  
4.5.	
   Escopo das variáveis ...................................................................................... 32	
  
4.6.	
   Conversões de variáveis (casting) ................................................................. 35	
  
5.	
   Operadores ............................................................................................................ 37	
  
5.1.	
   Operadores Aritméticos ................................................................................. 37	
  
5.2.	
   Operadores de Atribuição .............................................................................. 38	
  
5.3.	
   Operadores de Incremento e Decremento ...................................................... 38	
  
5.4.	
   Operadores de Comparação ........................................................................... 39	
  
5.5.	
   Operador ternário (condicional) .................................................................... 39	
  
5.6.	
   Operadores Lógicos ....................................................................................... 40	
  
5.7.	
   Operadores de arrays ..................................................................................... 41	
  
5.8.	
   Operadores bit-a-bit ....................................................................................... 42	
  
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 3 
5.9.	
   Precedência de Operadores ............................................................................ 43	
  
6.	
   Estruturas de controle ........................................................................................... 44	
  
6.1.	
   if ..................................................................................................................... 45	
  
6.2.	
   switch ............................................................................................................. 46	
  
6.3.	
   for ................................................................................................................... 47	
  
6.4.	
   foreach ........................................................................................................... 48	
  
6.5.	
   while ............................................................................................................... 50	
  
6.6.	
   do ... while ...................................................................................................... 51	
  
6.7.	
   break .............................................................................................................. 51	
  
6.8.	
   continue .......................................................................................................... 53	
  
7.	
   Funções ................................................................................................................. 54	
  
7.1.	
   Passagem de parâmetros: valor e referência .................................................. 56	
  
7.2.	
   Parâmetros: definição de valor padrão ........................................................... 58	
  
8.	
   PHP e formulários HTML .................................................................................... 60	
  
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 4 
8.1.	
   Enviando informações para um programa PHP ............................................. 63	
  
8.2.	
   Tratando informações recebidas .................................................................... 69	
  
8.3.	
   Funções especiais para formatação de dados ................................................. 71	
  
9.	
   Exercício 1 ............................................................................................................ 77	
  
10.	
   Referências .......................................................................................................... 78	
  
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 5 
1. Introdução 
§ PHP à PHP: Hypertext Preprocessor; 
§ PHP é uma linguagem de programação que, como JavaScript, permite a criação de 
páginas dinâmicas; 
o No entanto, PHP é executado no servidor. 
§ O navegador exibe a página final resultante do processamento; 
§ Não permite que o cliente veja o código dos scripts em PHP. 
§ Os arquivos PHP podem conter texto, tags HTML e scripts; 
o Apenas HTML puro é enviado ao cliente em uma requisição; 
o Extensão padrão (depende da configuração do servidor): .php 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 6 
§ PHP oferece suporte para programação orientada a objetos; 
§ PHP oferece suporte a vários sistemas gerenciadores de banco de dados (SGBDs): 
o Oferece funções que permitem a interação e manipulação de dados 
armazenados em cada um deles; 
o MySQL, PostgreSQL, Sybase, Oracle, SQL Server... 
o Os bancos de dados não suportados diretamente podem ser acessados via 
ODBC (Open Data Base Connectivity): 
§ Padrão para acesso a diferentes SGBDs. 
§ Os arquivos de instalação de PHP podem ser obtidos gratuitamente: 
o http://www.php.net 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 7 
o Além de gratuito, PHP é um software com código aberto; 
§ PHP pode ser executado em diferentes plataformas: Windows, Linux, Unix, OSX... 
§ PHP é compatível com a maioria dos servidores web disponíveis. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 8 
2. O que é necessário para utilização de PHP§ Caso o website esteja armazenado em um provedor de hospedagem: 
o O servidor deve oferecer suporte a PHP e a algum sistema gerenciador de 
banco de dados compatível com PHP (caso você vá efetivamente usar o 
SGBD); 
§ Para montar o seu próprio servidor, que ofereça suporte a PHP, é necessário: 
o Um servidor web: 
§ Apache, IIS, nginx, ... 
o PHP: o suporte à linguagem de programação propriamente dita; 
o SGBD: de sua preferencia (MySQL, PostgreSQL ....); 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 9 
§ Após a instalação das três ferramentas, é necessário configurá-las para que 
consigam “conversar” adequadamente: 
o O link abaixo contém um tutorial sobre a instalação e configuração de 
Apache, PHP e MySQL: 
§ http://www.niederauer.com.br/livros/php/roteiro.html 
 
§ Também é possível obter gratuitamente na internet pacotes de software 
que realizam a instalação e configuração automática das três ferramentas: 
o XAMPP (http://www.apachefriends.org/en/xampp.html): 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 10 
§ Além de Apache, MySQL e PHP, o pacote XAMPP inclui 
também suporte a Perl; 
§ É gratuito; 
§ Possui distribuições para Linux, Windows, OSX e Solaris; 
§ É o pacote de software disponível nos laboratórios da 
FT/Unicamp; 
§ Os alunos devem salvar os arquivos relacionados aos sites 
desenvolvidos no subdiretório “htdocs” do diretório de 
instalação do XAMPP; 
• Os arquivos serão acessados através do endereço (ex.: 
arquivo.htm): http://localhost/arquivo.htm 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 11 
o Além do XAMPP, existe uma série de outros pacotes de instalação 
simplificada de Apache + PHP + MySQL: 
§ WampServer (Windows): http://www.wampserver.com/ 
§ MAMP (OSX): http://www.mamp.info/en/index.html 
§ EasyPHP (Windows): http://www.easyphp.org/ 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 12 
3. Sintaxe básica de PHP 
§ Como visto anteriormente, arquivos que contêm código em PHP geralmente 
misturam texto puro, tags HTML e scripts; 
§ Um script em PHP pode ser colocado em qualquer lugar no documento: 
o Extensão padrão dos arquivos com códigos PHP: .php 
o Os scripts devem estar entre “<?php” e “?>”. 
 
<html> 
 <body> 
 
 <?php 
echo "<p>Hello World</p>"; 
 ?> 
 
 </body> 
</html> 
<html> 
 <body> 
 
 <p>Hello World</p> 
 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 13 
§ Cada linha de um script em PHP deve terminar com um “;” 
§ Existem dois métodos básicos para gerar um texto na saída de um script PHP: 
o echo: exibe uma ou mais strings 
§ void echo ( string $arg1 [, string $... ] ); 
§ echo não é considerado uma função, então os parâmetros passados não 
precisam estar entre parênteses; 
 
o print: exibe uma string 
§ int print ( string $arg ) 
§ Também não é considerado uma função, então o parâmetro não precisa 
estar entre parênteses; 
§ Retorna sempre o valor 1; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 14 
§ Comentários em PHP podem ser inseridos de duas formas: 
o //: comentário de uma única linha; 
o /* e */: comentário de múltiplas linhas: 
 
<html> 
 <body> 
 
 <?php 
 // Comentário simples 
 
echo "Hello World"; 
 
/* Comentários de 
 múltiplas linhas */ 
 ?> 
 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 15 
4. Variáveis 
§ PHP não possui comandos para declaração de variáveis; 
o A variável é criada no momento em que um valor é atribuído a ela; 
o Se você desejar criar uma variável sem atribuir um valor, atribua o valor null; 
§ PHP é uma linguagem de programação de tipagem fraca: 
o Não é necessário associar o tipo de dado à variável; 
o Basta atribuir diretamente o valor à variável; 
§ Regras para os nomes de variáveis em PHP: 
o Deve começar com underscore ( _ ) ou com uma letra; 
o Deve ser formado apenas por caracteres alfanuméricos e underscores; 
o Não pode conter espaços; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 16 
§ Toda referência a uma variável deve começar com o caractere ‘$’: 
o Ex.: $nome = “Guilherme”; 
§ PHP é sensível à capitalização dos caracteres (diferencia letras maiúsculas de 
minúsculas): 
o “$x” e “$X” são referências a duas variáveis distintas; 
 
<html> 
 <body> 
 
 <?php 
 $frase = "Hello World!"; 
 echo $frase; 
 ?> 
 
 </body> 
</html> 
<html> 
 <body> 
 
 Hello World! 
 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 17 
4.1. Dados numéricos 
§ PHP é capaz de trabalhar com os tipos de dados numéricos mais comuns: 
o Valores inteiros na base decimal: 
§ Ex.: $var = 5; 
o Valores inteiros na base octal (todo valor inteiro iniciado com zero): 
§ Ex.: $var = 033; 
o Valores inteiros na base hexadecimal (valores iniciados com 0x): 
§ Ex.: $var = 0xBC; 
o Valores em ponto flutuante: 
§ Ex.: $var = 3.14; 
§ Ex.: $var = .15; (equivalente a $var = 0.15); 
§ Ex.: $var = 4.3E+7; (PHP aceita representação em notação científica). 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 18 
4.2. Strings 
§ Em PHP, o conteúdo de strings pode ser delimitado por: 
o Aspas duplas (“ ”); 
o Aspas simples (‘ ’); 
o Aspas invertidas (` `); 
o PHP dá interpretações diferentes para conteúdos de strings delimitados com 
cada tipo de aspas; 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 19 
Aspas Simples 
§ Podem ser usadas para delimitar qualquer sequência de caracteres; 
§ Deve-se ter cuidado quando a sequência de caracteres contém ‘: 
o PHP pode interpretar como o final daquela string; 
o Deve ser usado \’ no conteúdo da sequência de caracteres; 
§ O uso de aspas simples permite a quebra de linha sem a necessidade de se usar 
“\n”: 
o Ex.: 
echo ‘Era uma vez 
um gato xadrez’; 
o O exemplo acima gerará na saída um texto com a quebra de linha: 
§ Atenção: isto não será visível no modo de exibição HTML. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 20 
Aspas Duplas 
§ Strings com conteúdo delimitado por aspas duplas são muito parecidas com as de 
conteúdo delimitado por aspas simples; 
§ A principal diferença é que a delimitação por aspas duplas permite a chamada 
interpolação de variáveis: 
o Consiste em escrever o valor de uma ou mais variáveis dentro da string que 
será mostrada na tela ou atribuída a outra variável; 
o Ex.: 
 
<?php 
 $titulo = "Sr."; 
 $nome = "João"; 
 echo "Olá $titulo $nome"; 
?> 
Olá Sr. João 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 21 
o Na interpolação de variáveis, deve-se tomar cuidado quando o texto restante 
da string estiver “colado” ao nome da variável: 
§ Forma errada: 
$x = “tri”; 
echo “Eu não sou $xcolor”; (erro: não existe a variável $xcolor); 
§ Forma correta: echo “Eu não sou ${x}color”; 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 22 
Aspas Invertidas§ Strings com conteúdo delimitado por aspas invertidas são interpretadas pelo PHP 
como strings que contêm comandos a serem passados ao sistema operacional; 
§ Você deve ter permissão para executar os comandos passados através do conteúdo 
de uma string com aspas invertidas; 
§ Ex.: 
 
<html> 
 <body> 
 
 <?php 
 echo `ls -l`; 
 ?> 
 
 </body> 
</html> 
<html> 
 <body> 
total 16 
-rwxr-xr-x 1 
guilherme admin 248 Feb 
6 15:17 prog1.php 
-rwxr-xr-x@ 1 
guilherme admin 170 Apr 
15 17:50 teste.php 
</body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 23 
Operador de concatenação 
§ Além da interpolação de variáveis, outro operador muito útil de PHP, 
associado a strings, é o operador de concatenação: 
o Como o próprio nome diz, este operador concatena várias strings; 
o É representado por “.”; 
o Ex.: 
$x = “tri”; 
echo “Eu não sou ” . $x . “color”; 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 24 
Função strlen() 
§ A função strlen() retorna o número de caracteres (comprimento) da string 
passada como parâmetro; 
§ Ex.: 
 
 
 
<html> 
 <body> 
 <?php 
 $texto = "Olá mundo!"; 
 echo strlen($texto); 
 ?> 
 </body> 
</html> 
<html> 
 <body> 
 10 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 25 
Função strpos(str1, str2) 
§ A função strpos(str1, str2) retorna a posição da primeira ocorrência da 
string/caractere ‘str2’ na string ‘str1’; 
o Caso não encontre, retorna FALSE. 
§ Ex.: 
 
Especificação completa das funções associadas a strings em PHP 
§ Pode ser encontrada em: http://w3schools.com/php/php_ref_string.asp 
<html> 
 <body> 
 <?php 
 $t = "Olá mundo!"; 
 echo strpos($t,”mundo”); 
 ?> 
 </body> 
</html> 
<html> 
 <body> 
 4 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 26 
4.3. Constantes 
§ A definição de constantes em PHP é feita com o comando “define”, que 
tem a seguinte sintaxe: 
o bool define(string nome, tipo valor [, bool case_insensitive]); 
§ nome: nome da constante no código; 
§ valor: valor atribuído à constante (booleano, inteiro, ponto 
flutuante ou string); 
§ case_insensitive: valor lógico (opcional) que indica se PHP deve 
diferenciar maiúsculas de minúsculas em referências a esta 
constante (valor default = TRUE); 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 27 
§ Ex.: 
 
§ Algumas constantes pré-definidas em PHP: 
o TRUE: valor verdadeiro (usado para comparações); 
o FALSE: valor falso; 
o _ _FILE_ _: nome do script em execução; 
o PHP_VERSION: versão corrente do PHP; 
o PHP_OS: nome do sistema operacional no qual o PHP está rodando; 
<html> 
 <body> 
<?php 
define("meunome","Guilherme"); 
echo "Meu nome é " . meunome; 
?> 
 </body> 
</html> 
<html> 
 <body> 
 Meu nome é Guilherme 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 28 
4.4. Arrays 
§ Como em outras linguagens, arrays em PHP são estruturas de dados 
capazes de armazenar múltiplos valores (vetores) e cada um destes valores 
é acessado pelo nome do array seguido pelo índice do valor desejado 
entre “[ ]”; 
o Ex.: $vetor[0] = 10; 
 $vetor[1] = 30; 
§ Arrays em PHP permitem que cada posição armazene valores de tipos 
diferentes; 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 29 
§ Em PHP, arrays podem ser de três tipos diferentes: 
o Arrays Numéricos: são aqueles cujos índices são valores numéricos 
(inteiros) iniciados em ‘0’ (zero); 
o Arrays Associativos: são aqueles cujos índices são textos (chamados 
de chaves associativas); 
o Arrays Multidimensionais: são as matrizes. 
§ Ex.: $time[“SP”][“São Paulo”] = “Palmeiras”; 
 $time[“SP”][“Campinas”] = “Guarani”; 
 $time[“SC”][“Florianópolis”] = “Figueirense”; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 30 
§ Em arrays numéricos, caso atribua-se um dado valor ao array com índice 
vazio, o PHP procurará a última posição ocupada do vetor e tentará inserir 
o novo elemento na posição seguinte: 
o Ex.: $valor[ ] = 40; /* considerando o exemplo anterior, 40 será 
inserido na terceira posição ($valor[2]) */ 
§ Um mesmo array pode ter índices numéricos e associativos 
simultaneamente; 
 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 31 
§ Outra maneira de criar arrays em PHP é através da função array(): 
o Ex.: $vetor = array(1, 2, 3, “nome”=>”Guilherme”); 
 
 
<html> 
 <body> 
<?php 
$vetor = array(1, 2, 3, "nome"=>"Guilherme"); 
 echo $vetor[0] . "\n <br /> \n"; 
 echo $vetor["nome"]; 
?> 
 </body> 
</html> 
<html> 
 <body> 
1 
<br /> 
Guilherme 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 32 
4.5. Escopo das variáveis 
§ Da mesma maneira que outras linguagens de programação, o escopo de 
uma variável em PHP pode ser global ou local (definidas dentro de 
funções); 
§ No entanto, PHP apresenta algumas diferenças quanto a utilização de 
variáveis de escopo global: 
o Variáveis globais são aquelas declaradas fora de qualquer função; 
o Para acessar estas variáveis dentro de uma função, deve-se: 
§ Defini-las como global no início da função, através da palavra 
reservada “global”: 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 33 
• Ex.: global $x; 
 $x = $x + 1; 
§ Acessá-las através do array pré-definido $GLOBALS, que 
utiliza os nomes das variáveis como chaves associativas; 
• Ex.: $GLOBALS[“x”] = $GLOBALS[“x”] + 1; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 34 
 
 
<html> 
 <body> 
<?php 
 $x = 5; 
 $y = 10; 
 
 function testa_escopo() 
 { 
 global $x; 
 $x = $x + 1; 
 
 $GLOBALS["y"] = $GLOBALS["y"] + 1; 
 } 
 
 echo $x . "<br />"; 
 echo $y . "<br />"; 
 testa_escopo(); 
 echo $x . "<br />"; 
 echo $y . "<br />"; 
?> 
 </body> 
</html> 
<html> 
 <body> 
5<br />10<br />6<br />11<br /> 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 35 
4.6. Conversões de variáveis (casting) 
§ Se tivermos uma string contendo somente números, PHP é capaz de somar esta 
string a outras variáveis numéricas; 
§ No entanto, se uma dada string contiver texto e números, PHP utilizará somente a 
parte numérica (contida no início da string) para realizar as operações 
aritméticas: 
 
 
<html> 
 <body> 
 <?php 
$x = 5; $y = "7 bla 3 bla 4 bla 5"; 
 $z = $x + $y; 
 echo $z; 
 ?> 
 </body> 
</html> 
<html> 
 <body> 
12 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 36 
§ Diante disso, muitas vezes é necessário realizar uma conversão manual de tipos de 
variáveis, para que certas operações possam ser feitas; 
§ Isto é feito através de conversores de tipos (casting – muito parecido com C): 
Conversor Descrição(int), (integer) Converte para inteiro. 
(real), (float), (double) Converte para ponto flutuante. 
(string) Converte em string. 
(array) Converte em array. 
(object) Converte em objeto. 
 
 
<?php 
$x = 50; $y = 2.35; 
 $z = $x + (int) $y; 
 echo $z; 
?> 
52 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 37 
5. Operadores 
5.1. Operadores Aritméticos 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 38 
5.2. Operadores de Atribuição 
 
 
5.3. Operadores de Incremento e Decremento 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 39 
5.4. Operadores de Comparação 
 
5.5. Operador ternário (condicional) 
§ Semelhante ao de outras linguagens: 
o cond ? exp1 : exp2; 
§ Se a condição “cond” for verdadeira, a expressão “exp1” é executada. 
Caso contrário, “exp2” é executada. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 40 
5.6. Operadores Lógicos 
 
§ Na tabela acima, os operadores “&&” e “||” têm maior precedência sobre “and” e 
“or”; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 41 
5.7. Operadores de arrays 
§ PHP possui também uma série de operadores que podem ser aplicados diretamente 
em arrays 
 
§ O operador de união (“+”) adiciona os elementos do array da direita no array da 
esquerda, sem sobrescrever os elementos de mesmo índice (NÃO é append); 
 
$a = array("a" => "maçã", "b" => "banana"); 
$b = array("a" =>"pêra", "b" => "framboesa", "c" => "morango"); 
$c = $a + $b; // Uniao de $a e $b 
 
//c["a"] == "maçã"; c["b"] == "banana"; c["c"] == "morango" 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 42 
5.8. Operadores bit-a-bit 
§ São operadores que atuam em um nível mais baixo de abstração (diretamente nos 
bits); 
§ Podem ser usados para inverter bits de um operando, deslocar bits para a direita 
(divisões por 2) ou para a esquerda (multiplicações por 2) e realizar operações 
lógicas bit a bit; 
§ O resultado de operações bit-a-bit sempre será um número inteiro. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 43 
5.9. Precedência de Operadores 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 44 
6. Estruturas de controle 
§ Os comandos condicionais são: 
o if; 
o switch; 
§ Já os comandos de repetição são: 
o while; 
o do ... while; 
o for; 
o foreach. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 45 
6.1. if 
§ Sintaxes: 
 
 
// Forma 1: 
if (expr 1) 
{ 
bloco 1; 
} 
elseif (expr 2) 
{ 
bloco 2; 
} 
else 
{ 
bloco 3; 
} 
// Forma 2: 
if (expr 1): 
bloco 1; 
elseif (expr 2): 
bloco 2; 
else: 
bloco 3; 
endif; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 46 
6.2. switch 
§ Sintaxe: 
 
§ O uso do bloco default não é obrigatório no comando switch; 
switch (operador) 
{ 
case valor1: 
 <comandos> 
 break; 
case valor2: 
 <comandos> 
 break; 
.... 
case valorN: 
 <comandos> 
 break; 
default: 
 <comandos> 
 break; 
} 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 47 
6.3. for 
§ Sintaxes: 
 
 
§ “inicialização” pode ser qualquer comando que deve ser executado no 
início do loop (até mesmo múltiplos comandos separados por “,”); 
 
// Forma 1: 
for (inicialização; condição; operador) 
{ 
<comandos> 
} 
// Forma 2: 
for (inicialização; condição; operador): 
<comandos> 
endfor; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 48 
6.4. foreach 
§ É usado para percorrer todos os elementos de um array; 
§ Foi implementado a partir da versão 4 de PHP; 
§ Existem duas formas de utilização do comando foreach: 
 
 
// Forma 1: 
foreach ($nome_array as $valor) 
{ 
<comandos> 
} 
// Forma 2: 
foreach ($nome_array as $chave => $valor) 
{ 
<comandos> 
} 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 49 
§ No primeiro caso, todos os elementos do array são percorridos (do 
primeiro ao último) e, a cada iteração, o valor do elemento corrente do 
array é atribuído à variável $valor; 
§ Já o segundo caso faz a mesma coisa, com a diferença que a chave (ou 
índice) do elemento atual também é atribuída à variável $chave; 
o Útil principalmente quando se tem arrays associativos. 
 
// Exemplo: 
$vetor = array(5, 6, 7, 8); 
foreach ($vetor as $v) 
{ 
 echo "O valor atual é $v <br />"; 
} 
 
foreach($vetor as $chave => $v) 
{ 
 echo "\$vetor[$chave] => $v <br 
/>"; 
 
O valor atual é 5 <br /> 
O valor atual é 6 <br /> 
O valor atual é 7 <br /> 
O valor atual é 8 <br /> 
$vetor[0] => 5 <br /> 
$vetor[1] => 6 <br /> 
$vetor[2] => 7 <br /> 
$vetor[3] => 8 <br /> 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 50 
6.5. while 
§ Sintaxes: 
 
 
 
 
// Forma 1: 
while (expr) 
{ 
<comandos> 
} 
// Forma 2: 
while (expr): 
<comandos> 
endwhile; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 51 
6.6. do ... while 
§ Sintaxe: 
 
 
6.7. break 
§ O comando break encerra a execução do comando atual (if, for, while ou 
switch); 
o A execução passa para o primeiro comando após o término da 
estrutura que estava em execução; 
do 
{ 
<comandos> 
} while (expr) 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 52 
§ Pode ser usado para forçar a saída de um comando condicional ou de um 
loop em execução. 
§ break pode receber um parâmetro numérico (opcional) que indica o 
número de estruturas em execução que devem ser interrompidas; 
o Permite interromper, com um único comando, vários loops 
aninhados; 
o Ex.: “break 2;” pode interromper dois loops aninhados. 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 53 
6.8. continue 
§ O comando continue é utilizado dentro dos comandos de repetição; 
o Permite ignorar as instruções restantes no laço corrente, e ir para o 
início da próxima iteração. 
§ Como break, o comando continue também aceita um parâmetro numérico 
opcional, que indica o número de níveis que devem ser reiniciados; 
o Ex.: se tivermos um “continue 2” dentro de dois whiles aninhados, a 
execução saltará para o início da iteração seguinte do while mais 
externo. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 54 
7. Funções 
§ Funções em PHP permitem: 
o O agrupamento de trechos de códigos que realizam funções 
específicas (como em outras linguagens de programação); 
o O encapsulamento de trechos de códigos que não devem ser 
executados quando a página é carregada; 
§ PHP disponibiliza uma grande quantidade de funções pré-definidas, que 
permitem realizar as mais diferentes tarefas: 
o Uma lista com estas funções pode ser encontrada em: 
§ http://w3schools.com/php/default.asp 
§ http://www.php.net/manual/pt_BR/funcref.php 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho– FT/Unicamp – 2s2013 
Tópico 5: PHP 55 
§ Para criar suas próprias funções, a sintaxe é a seguinte: 
 
 
o Na sintaxe acima, o retorno de um valor é opcional; 
§ Pode ser retornado um array; 
 
function nome_funcao(arg1, arg2, arg3, ..., argN) 
{ 
<comandos> 
[return <expressao>] 
} 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 56 
7.1. Passagem de parâmetros: valor e referência 
§ Quando se passa uma determinada variável para uma função, por padrão 
esta passagem se dá por valor, ou seja, alterações internas na variável não 
se refletem externamente: 
 
 
 
function incrementa($x) 
{ 
$x = $x + 1; 
} 
$x = 1; 
incrementa($x); 
echo $x; // Será impresso o valor 1 
a ret 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 57 
§ No entanto, PHP também permite a passagem de variáveis por referência, 
ou seja, de forma que alterações nestas variáveis dentro de uma função se 
reflitam fora dela; 
o Para isso, deve-se colocar o símbolo “&” antes do nome da variável 
no cabeçalho da função. 
 
 
function incrementa(&$x) 
{ 
$x = $x + 1; 
} 
$x = 1; 
incrementa($x); 
echo $x; // Será impresso o valor 2 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 58 
7.2. Parâmetros: definição de valor padrão 
§ PHP também permite que sejam definidos valores padrão que os 
parâmetros de uma função devem ter: 
o Estes valores padrão são utilizados quando o parâmetro não é 
passado para a função no instante de sua chamada. 
o Para definir estes valores padrão, basta colocar um operador de 
atribuição após o parâmetro no cabeçalho da função, seguido pelo 
valor que deve ser considerado padrão. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 59 
 
 
§ Atenção: os parâmetros que terão valores padrão definidos devem ser os 
últimos parâmetros no cabeçalho da função. 
 
function teste($time, $titulo = “Campeão Mundial”) 
{ 
Echo “O $time é $titulo <br />”; 
} 
 
teste(“Internacional”, “Campeão Gaúcho”); 
teste(“Santos”, “Campeão Paulista”); 
teste(“Barcelona”); 
O Internacional é Campeão Gaúcho <br /> 
O Santos é Campeão Paulista <br /> 
O Barcelona é Campeão Mundial <br /> 
function errada($a = 10, $b, $c) 
{ 
... 
} 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 60 
8. PHP e formulários HTML 
§ A principal forma de interação entre programas PHP e usuários é através 
dos formulários HTML; 
o Estes formulários (criados com a tag <form>) podem conter diversos 
elementos de entrada de dados (definidos com a tag <input>); 
 
 
 
<form> 
 <p>Digite seu e-mail: <input type=”text” name=”eml” size=”20” /> </p> 
 <p><input type=”submit” value=”Enviar!” name=”enviar” /></p> 
</form> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 61 
§ No exemplo anterior, os dados são perdidos ao se clicar no botão 
“Enviar!”; 
o O navegador não sabe para onde enviar os dados do formulário; 
§ Para que o exemplo anterior se torne útil, é preciso indicar ao navegador o 
destino para o qual os dados de um formulário devem ser enviados: 
o No nosso caso, este destino será nossos programas em PHP. 
o Isto é feito através da atribuição do programa PHP (arquivo .php) ao 
atributo action do elemento <form>: 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 62 
 
o Neste novo exemplo, os dados do formulário (conteúdo do campo e-
mail) será enviado para o programa “recebe_dados.php”, que deverá 
trata-lo. 
 
 
<form action=”recebe_dados.php”> 
 <p>Digite seu e-mail: <input type=”text” name=”eml” size=”20” /> 
</p> 
 <p><input type=”submit” value=”Enviar!” name=”enviar” /></p> 
</form> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 63 
8.1. Enviando informações para um programa PHP 
§ Além de definir o programa PHP que receberá os dados no atributo action 
do formulário é preciso definir também como estes dados serão passados; 
§ Existem dois métodos de passagem de parâmetros: GET e POST 
o Estes métodos são definidos no atributo method do elemento form: 
§ <form action=”recebe_dados.php” method=”POST”> 
§ <form action=”recebe_dados.php” method=”GET”> 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 64 
8.1.1. Método GET 
§ O método GET é o método padrão para envio de dados; 
o Se nenhum método for especificado em method, GET é utilizado. 
§ Neste método, os dados são enviados juntamente com o nome da página 
(na URL) que processará os dados recebidos: 
§ Considere o exemplo abaixo: 
 
 
<form action="teste2.php"> 
 Nome: <input type="text" name="fname" /> 
 Idade: <input type="text" name="age" /> 
 <input type="submit" /> 
</form> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 65 
§ Se preenchermos os campos acima com “Maria” e “23”, a URL que será 
chamada ao pressionarmos o botão “Enviar” será: 
o http://localhost:8080/teste2.php?fname=Maria&age=23 
§ Ou seja, os campos do formulário serão passados como parâmetros após 
o endereço de destino; 
o O caractere “?” sinaliza o início de uma cadeia de variáveis; 
o O caractere “&” é um separador de variáveis; 
o As variáveis (nomes) e seus respectivos valores são separados por 
“=”; 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 66 
§ A utilização do método GET possui duas desvantagens principais: 
o Os valores de todos os campos são visíveis para o usuário, 
§ Isto pode ser um problema, no caso de passagem de senhas; 
o Existe um limite máximo de caracteres que podem ser enviados (cerca de 
2.000); 
§ Por outro lado, GET também tem vantagens: 
o Pode ser usado para passar parâmetros diretamente através do link; 
§ Ex.: identificar um produto em uma loja virtual 
• http://www.loja.com/produto.php?id_produto=23 
o Permite que o usuário salve, nos favoritos, links com os valores já 
preenchidos de um formulário. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 67 
8.1.2. Método POST 
§ Para utilização do método POST, deve-se obrigatoriamente utilizar o 
atributo method da tag <form>: 
 
§ Diferentemente do método GET, o método POST envia os dados do 
formulário por meio do corpo da mensagem HTTP enviada ao servidor; 
o O usuário não vê mais os valores dos parâmetros na URL, apenas o 
endereço do programa ativado. 
<form action="teste2.php" method=”POST”> 
 Nome: <input type="text" name="fname" /> 
 Idade: <input type="text" name="age" /> 
 <input type="submit" /> 
</form> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 68 
§ Além desta “ocultação” dos dados, outra vantagem do método POST é 
que não há limitação de tamanho de dados que estão sendo enviados. 
§ O método POST também permite o envio de outros tipos de dados que 
não podem ser enviados pelo GET, como, por exemplo, imagens ou 
outros arquivos; 
o Para isso, usa-se o valor file no atributo type do elemento <input>. 
o Mais informações sobre o envio de arquivos para scripts PHP: 
§ http://www.php.net/manual/en/features.file-upload.php 
 
 
ST670: Tópicos em Programação Web 
GuilhermePalermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 69 
8.2. Tratando informações recebidas 
§ Depois de especificar qual programa PHP receberá os dados de um 
formulário e como estes dados serão enviados, resta saber como trabalhar 
estes dados; 
§ Para acessar estes dados, basta utilizar dois arrays predefinidos pelo PHP: 
o O array $_GET (usado para valores passados pelo método GET); 
o O array $_POST (usado para valores passados pelo método POST); 
§ Em ambos os casos, os nomes dos campos no formulário HTML são 
usados como chaves associativas: 
o Os valores dos campos do formulário são armazenados como valores 
dos arrays; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 70 
 
§ Supondo o exemplo acima, no programa “teste2.php” poderíamos acessar 
os valores preenchidos nos campos do formulário através de: 
o $_POST[“fname”] (valor do campo “Nome”); 
o $_POST[“age”] (valor do campo “Idade”); 
§ Se o método de envio tivesse sido GET, bastaria acessarmos: 
o $_GET[“fname”] (valor do campo “Nome”); 
o $_GET[“age”] (valor do campo “Idade”); 
<form action="teste2.php" method=”POST”> 
 Nome: <input type="text" name="fname" /> 
 Idade: <input type="text" name="age" /> 
 <input type="submit" /> 
</form> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 71 
8.3. Funções especiais para formatação de dados 
§ Quando um programa em PHP recebe um conjunto de dados de um 
formulário, muitas vezes é necessário pré-processar estes dados antes de 
sua utilização; 
§ Para realizar este pré-processamento, PHP disponibiliza algumas funções 
especiais, que serão tratadas a seguir. 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 72 
8.3.1. Função htmlspecialchars(<string>) 
§ Esta função é útil para evitar que strings passadas pelo usuário, via 
formulários, contendo códigos HTML maliciosos sejam interpretadas pelo 
navegador como códigos HTML; 
o Por exemplo, inserção de imagens inapropriadas em um fórum de 
discussões. 
§ Esta função recebe uma string como entrada e substitui todas as tags 
HTML por caracteres especiais: 
o & é substituído por &amp; 
o “ é substituído por &quot; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 73 
o < é substituído por &lt; 
o > é substituído por &gt; 
§ Ao fazer estas substituições, o navegador não mais interpreta a string 
como código HTML, e sim como texto puro; 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 74 
8.3.2. Função stripslashes(<string>) 
§ Quando o usuário digita em um formulário dados que contêm caracteres 
especiais, o PHP insere nestes dados o caractere de controle \ antes de 
cada caractere especial: 
o Ex.: “Lula” da Silva seria recebido por um programa PHP como 
\”Lula\” da Silva; 
§ Para situações em que é necessário manipular estas strings sem os 
caracteres de controle, utiliza-se a função stripslashes; 
o Ex.: stripslashes(“\”Lula\” da Silva)” gera a string “Lula da Silva“. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 75 
8.3.3. Funções urldecode(<string>) e urlencode(<string>) 
§ Quando o método de envio dos dados é GET, todos os caracteres que não 
são alfanuméricos ou underscore ( _ ) são convertidos para um código 
hexadecimal precedido de %: 
o Ex.: “Maria da Silva” é enviada, via GET, pela seguinte URL: 
http://www.site.com/programa.php?nome=Maria%20da%20Silva 
§ Para converter estes caracteres de volta para texto normal, utiliza-se a 
função urldecode: 
o Ex.: $nome = urldecode(“Maria%20da%20Silva”); 
o Neste exemplo, os códigos hexadecimais são convertidos de volta 
para os caracteres que eles representam. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 76 
§ De maneira análoga, caso seja necessário enviar alguma string para outro 
programa PHP via URLs, os caracteres não alfanuméricos (ou 
underscore) precisariam ser codificados antes do envio; 
o Isso pode ser feito pela função urlencode(<string>); 
§ Esta função tem comportamento exatamente oposto a urlencode, 
ou seja, substitui os caracteres não alfanuméricos pela respectiva 
codificação hexadecimal precedida de %. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 77 
9. Exercício 1 
§ Crie um documento HTML com os seguintes campos para cadastro de 
uma pessoa: nome completo, CPF, RG, idade, sexo, estado civil, telefone 
fixo, telefone celular e endereço. Quando estes campos forem 
preenchidos e o usuário clicar no botão “Cadastrar”, os dados devem ser 
enviados para um script PHP que exibirá o cadastro feito pelo usuário em 
um novo documento HTML. Garanta que este novo documento gerado 
pelo script PHP siga a especificação XHTML 1.1 (faça a validação no site 
do W3C). 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 78 
10. Referências 
[1] Niederauer, J. “Desenvolvendo Websites com PHP”, 2ª ed. Novatec, 2011. 
[2] W3Schools PHP Tutorial: http://w3schools.com/php/default.asp 
[3] Manual do PHP: http://php.net/manual/pt_BR/index.php 
[4] Hudson, P. “Practical PHP Programming”: http://www.tuxradar.com/practicalphp 
[5] Gutmans, A., Bakken, S. S. & Rethans, D. “PHP5 Power Programming”: 
http://ptgmedia.pearsoncmg.com/images/013147149X/downloads/013147149X_book.pdf 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 1 
Tópico 5: PHP – Parte 2 
 
1.	
   Server Side Includes (SSI) ...................................................................................... 2	
  
2.	
   Tratamento de exceções .......................................................................................... 6	
  
3.	
   Acesso a Banco de Dados ..................................................................................... 11	
  
3.1.	
   Conectando-se com um banco de dados ........................................................ 12	
  
3.2.	
   Executando comandos SQL em programas PHP ........................................... 15	
  
3.3.	
   Exibindo o resultado de comandos SQL ........................................................ 19	
  
4.	
   Exercício 2 ............................................................................................................ 22	
  
5.	
   Cookies e sessões em PHP .................................................................................... 23	
  
5.1.	
   Cookies ........................................................................................................... 26	
  
5.2.	
   Sessões ........................................................................................................... 32	
  
6.	
   Referências ............................................................................................................ 39	
  
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 2 
 
1. Server Side Includes (SSI) 
§ É possível inserir o conteúdo de um arquivo PHP dentro de outro antes 
que o servidor execute o programa PHP; 
§ Esta possibilidade simplifica várias atividades relacionadas a programação 
web: 
o Facilita a manutenção de partes de documentos HTML que são 
comuns a todos os documentos de um site: 
§ Cabeçalhos e rodapés; 
§ Menus, ...; 
o Permite uma melhor organização de programas PHP e a reutilização 
de código.ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 3 
§ SSI pode ser feito em PHP com as funções include() e require(): 
o O funcionamento destas duas funções é idêntico, exceto pela forma 
com que cada uma trata erros: 
§ include apenas emite um warning e permite que a execução do 
programa continue; 
§ require emite um erro e a execução do programa é encerrada; 
o Sintaxe: 
§ include “caminho_e_nome_do_arquivo”; 
§ require “caminho_e_nome_do_arquivo”; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 4 
 
// Arquivo “menu.php” 
<a href="/default.php">Home</a> 
<a href="/tutorials.php">Tutorials</a> 
<a href="/references.php">References</a> 
<a href="/examples.php">Examples</a> 
<a href="/about.php">About Us</a> 
<a href="/contact.php">Contact Us</a> 
 
// Arquivo “teste.php“ 
<html> 
 <body> 
 <div class="sitemenu"> 
 <?php include("menu.php"); ?> 
 </div> 
 <h1>Bem vindo à página de teste!</h1> 
 <p>Bla bla bla.</p> 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 5 
 
§ No caso de utilização de SSI para reaproveitamento de código, recomenda-se a 
utilização da função require; 
o Um script não deve ser executado se todas as funções não estiverem 
devidamente carregadas. 
// Arquivo resultante para o navegador 
<html> 
 <body> 
 <div class="sitemenu"> 
 <a href="/default.php">Home</a> 
<a href="/tutorials.php">Tutorials</a> 
<a href="/references.php">References</a> 
<a href="/examples.php">Examples</a> 
<a href="/about.php">About Us</a> 
<a href="/contact.php">Contact Us</a> 
 </div> 
 <h1>Bem vindo à página de teste!</h1> 
 <p>Bla bla bla.</p> 
 </body> 
</html> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 6 
2. Tratamento de exceções 
§ A partir da versão 5, PHP também passou a oferecer novos mecanismos 
de tratamento de exceções; 
o Baseados em comandos try, catch e throw; 
o Muito semelhante ao de outras linguagens de programação OO. 
§ Como em outras linguagens, trechos de códigos sujeitos a erros 
específicos são monitorados (em blocos try); 
§ Exceções que ocorrem nestes blocos são lançadas (com o comando 
throw) e então capturadas (método catch) para receberem tratamento 
adequado. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 7 
 
 
// Código que lança uma exceção: 
<?php 
function checkNum($number) 
 { 
 if($number>1) 
 { 
 throw new Exception("Valor maior que 1"); 
 } 
 return true; 
 } 
 
//Lançamento explícito de uma exceçao 
checkNum(2); 
?> 
// Mensagem de erro de PHP: 
Fatal error: Uncaught exception 'Exception' with message 'Valor maior que 1' in 
/Applications/MAMP/htdocs/testException.php:14 Stack trace: #0 
/Applications/MAMP/htdocs/testException.php(20): checkNum(2) #1 {main} thrown 
in /Applications/MAMP/htdocs/testException.php on line 14 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 8 
§ No exemplo anterior, a mensagem de erro foi lançada mas não foi 
devidamente tratada pelo programa; 
o Isso deveria ter sido feito com os comandos try ... catch. 
 
 
// Código que lança uma exceção: 
<?php 
function checkNum($number) {...} 
 
try // O código dentro deste bloco é monitorado: 
 { 
 checkNum(2); 
 } 
catch(Exception $e) // Tratamento da exceção lançada” 
 { 
 echo 'Mensagem de erro: ' .$e->getMessage(); 
 } 
?> 
// Mensagem de PHP: 
Mensagem de erro: Valor maior que 1 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 9 
§ PHP permite que se defina uma função-padrão (criada pelo usuário) a ser 
chamada toda vez que for lançada uma exceção não capturada; 
o Top Level Exception Handler; 
o Sintaxe: set_exception_handler(‘nome_da_funcao’); 
 
 
// Lançamento de uma exceção personalizada: 
<?php 
function myException($exception) 
{ 
echo "<b>Exceção:</b> " . $exception->getMessage(); 
} 
 
set_exception_handler('myException'); 
 
throw new Exception('Exceção não capturada.'); 
?> 
Exceção: Exceção não capturada. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 10 
§ Regras gerais para exceções em PHP: 
o Cada bloco try ou comando throw deve estar acompanhado de uma 
bloco catch correspondente; 
o Múltiplos blocos catch podem ser usados para capturar exceções de 
classes diferentes; 
o Exceções podem ser relançadas de dentro de um bloco catch: 
§ Este bloco catch deve estar dentro de um bloco try. 
 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 11 
3. Acesso a Banco de Dados 
§ PHP possui uma série de funções nativas que permitem o acesso e a 
manipulação de dados em diferentes Sistemas Gerenciadores de Bancos 
de Dados (SGBDs); 
§ Aqui serão tratados apenas os mecanismos de interação entre PHP e 
MySQL; 
o Não serão discutidos detalhes sobre sistemas de bancos de dados e 
sobre a linguagem SQL (Structured Query Language) 
o Para maiores informações sobre o MySQL: http://dev.mysql.com/ 
o Para maiores informações sobre a linguagem SQL: 
http://www.w3schools.com/sql/default.asp 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 12 
3.1. Conectando-se com um banco de dados 
§ O primeiro passo que deve ser tomado antes de se acessar um banco de 
dados para realização de operações é abrir uma conexão com o banco; 
§ Em PHP, isto é feito com a função mysqli_connect(), que retorna um 
apontador para a conexão (ou false em caso de erro) e pode receber seis 
parâmetros (opcionais): 
o string servidor: endereço do servidor MySQL; 
o string usuario: nome do usuário para autenticação no MySQL; 
o string senha: senha do usuário para autenticação; 
o string nome_db: nome da base de dados a ser usada; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 13 
o int porta: número da porta a ser usada para conexão com o MySQL; 
o string socket: especifica o socket que deve ser usado para conexão. 
o Mais informações: 
http://w3schools.com/php/func_mysqli_connect.asp 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
 
/* Verifica Conexão */ 
if (!$con) { 
 echo "Erro: " . mysqli_connect_error(); 
} 
 
//... 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 14 
§ Por definição, a conexão com o banco de dados é automaticamente 
encerrada quando o script termina sua execução. 
o Caso seja necessário fechar a conexão antes, pode-se usar a função 
mysqli_close(), que recebe como parâmetro o ponteiro para a conexão 
retornado por mysqli_connect(). 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
 
/* Verifica Conexão */ 
if (!$con) { 
 echo "Erro: " . mysqli_connect_error(); 
} 
 
//... 
mysqli_close($con); 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 15 
3.2. Executando comandos SQL em programas PHP 
§ Depois de estabelecida a conexão com o BD, é possível executar 
quaisquer comandos SQL no banco de dados através do comando 
mysqli_query() do PHP; 
§ A sintaxe deste comando é: 
o recurso mysqli_query(recurso conexão, string cmd [, int modo]); 
§ O parâmetro conexão especifica a conexão com o BD a serutilizada; 
§ O parâmetro cmd é uma string que contém o comando SQL a ser 
enviado ao BD (não deve terminar em “;”); 
§ O parâmetro modo (opcional) indica o modo com que os 
resultados serão tratados. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 16 
§ Ex.: criação da tabela “produtos”: 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
 
$sql = “CREATE TABLE produtos ( 
 codigo_produto smallint NOT NULL, 
PRIMARY KEY(codigo_produto), 
 nome_produto varchar(80) NOT NULL, 
 descricao_produto text, 
 preco float NOT NULL, 
 peso float, 
 cod_categoria smallint NOT NULL, 
 cod_subcategoria smallint NOT NULL, 
 adicionais text)”; 
 
$res = mysqli_query($con, $sql); 
 
// Se $res == FALSE, a query não foi executada (erro). 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 17 
§ Ex.: inserção de um registro na tabela “produtos”: 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
 
$sql = “INSERT INTO produtos VALUES ( 
 1, 
 'Camiseta do Palmeiras', 
 'Camiseta nas cores verde e branco', 
 89.95, 
 1.5, 
 5, 
 2, 
 'Disponível nos tamanhos: 3, 5, 9 e 10')”; 
 
$res = mysqli_query($con, $sql); 
 
//… 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 18 
§ Ex.: obtenção de todos os registros armazenados em uma tabela chamada 
“produtos”, armazenada na base de dados “bdteste”; 
 
§ No exemplo acima, a variável $resultado conterá um ponteiro para o 
conjunto de registros retornado pelo comando SELECT; 
§ Nos exemplos anteriores, $res conterá um valor booleano (TRUE se a 
operação foi bem sucedida, FALSE caso contrário); 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
 
$resultado = mysqli_query($con, “SELECT * FROM produtos“); 
 
//… 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 19 
3.3. Exibindo o resultado de comandos SQL 
§ Para tratar as informações retornadas pelos comandos SQL executados, 
PHP disponibiliza uma série de funções: 
Função Descrição 
mysqli_affected_rows() Retorna o número de linhas afetadas por uma operação. 
mysqli_fetch_array() Retorna uma linha do resultado em um array de strings. 
- Por ser array associativo, numérico ou misto. 
mysqli_fetch_object() Retorna uma linha como um objeto. 
mysqli_fetch_row() Armazena a linha atual do resultado em um array. 
mysqli_num_rows() Retorna o número de linhas retornadas por uma consulta. 
 - Usada na operação SELECT. 
mysqli_num_fields() Retorna o número de colunas de uma consulta. 
§ Informações sobre parâmetros e outras funções: 
http://w3schools.com/php/php_ref_mysqli.asp 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 20 
§ Para ilustrar, vamos supor que queiramos exibir os resultados de uma 
consulta. 
§ Para isso, podemos usar a função mysqli_fetch_array(), que coloca as 
linhas retornadas em um array associativo (nome do campo na tabela é o 
índice do vetor); 
o A cada execução dessa função o ponteiro armazenado na variável de 
resultados do comando SQL é avançado para a próxima linha; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 21 
 
 
 
<?php 
$con = mysqli_connect("localhost","root","pwd","bdteste"); 
$resultado = mysqli_query($con, “SELECT * FROM produtos“); 
 
while($row = mysqli_fetch_array($resultado)) 
 { 
 echo “Nome do produto: ”.$row[“nome_produto”].“<br />“; 
echo “Descrição: ” . $row[“descricao_produto”]; 
 echo "<br />"; 
 } 
 
mysqli_close($con); 
?> 
Nome do produto: Camiseta do Palmeiras 
Descrição: Camiseta nas cores verde e branco 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 22 
4. Exercício 2 
§ Crie um site que contenha um menu lateral (exibido via SSI) que contenha 
opções de acesso a duas páginas: 
o A primeira delas deve conter um formulário de cadastro de produtos 
para uma loja de artigos esportivos. Este formulário deve permitir o 
cadastro do código do produto, do nome, da sua descrição, do seu 
preço e do seu peso. Ao clicar em no botão “Cadastrar”, o produto 
deve ser cadastrado em uma tabela de um banco de dados (use 
MySQL). 
o A segunda página, ao ser carregada, deve consultar e listar para o 
usuário todos os produtos cadastrados no banco de dados. 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 23 
5. Cookies e sessões em PHP 
§ Quando se acessa um website pelo protocolo HTTP, o servidor trata cada 
requisição a um documento (página) como um evento independente; 
o HTTP não permite o armazenamento de informações de estado (ex.: 
um mesmo usuário acessando dois documentos diferentes); 
§ Neste contexto, cookies e sessões são muito úteis, pois permitem que se 
mantenha informações sobre os usuários enquanto eles navegam pelo site; 
o Cookies: são arquivos texto que ficam armazenados no computador 
do usuário e podem ser recuperados posteriormente pelo servidor em 
que o site está hospedado; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 24 
o Sessões: são recursos que podem ser usados para manter uma 
conexão com o usuário enquanto ele estiver navegando pelo site: 
§ São variáveis que armazenam informações sobre cada usuário 
enquanto ele estiver acessando as páginas de um site. 
§ Entre as utilidades de cookies e sessões, pode-se citar: 
o Autenticação de usuários: criação de um sistema que permita 
operações de login, autenticação e logout, garantindo o acesso do 
conteúdo de um site apenas a usuários autorizados; 
o Carrinho de compras: usado por sites de comércio eletrônico; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 25 
o Exibição de anúncios e imagens: para não exibir o mesmo anúncio 
ou imagem repetidamente; 
o Personalização de páginas: por exemplo, uma livraria poderia exibir 
um anúncio de um livro de culinária se o mesmo usuário tiver feito 
buscas sobre este tópico em visitas anteriores ao site. 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 26 
5.1. Cookies 
§ São arquivos-texto armazenados no computador do cliente e recuperados 
posteriormente pelo servidor; 
§ Um cookie é formado por um par nome/valor (possui um nome pelo qual 
ele é referenciado e um valor a ele associado); 
§ Cookies podem ser utilizados em qualquer aplicação que: 
o Precise compartilhar dados entre diferentes páginas; 
o Precise compartilhar dados entre diferentes acessos (em dias e 
horários distintos); 
§ Cookies podem ser mantidos na máquina do usuário por vários dias; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 27 
§ Para criar e excluir cookies da máquina do usuário, PHP disponibiliza a 
função setcookie(); 
o Sintaxe: bool setcookie(string nome [, string valor [, int validade [, 
string caminho [, string domínio [, int seguro [, bool somente_http 
]]]]]]); 
§ nome: indica o nome do cookie sendo enviado ao cliente (é o 
único parâmetro obrigatório); 
§ valor: é o valor do cookie; 
§ validade: define o tempo de validade do cookie (em número de 
segundos a partir de 01/01/1970 – 0:00h). Caso não definido, 
expira quando o browser for fechado; 
ST670: Tópicosem Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 28 
§ caminho: caminho do servidor para o qual o cookie estará 
disponível; 
§ domínio: domínio para o qual o cookie estará disponível; 
§ seguro: indica se o cookie é seguro (‘1’ só permitirá a 
transmissão do cookie se a conexão for HTTPS); 
§ somente_http: se for TRUE, indica que o cookie só estará 
disponível via protocolo HTTP (não estará disponível para 
linguagens de script como JavaScript). 
o Ex.: criar um cookie 
§ setcookie(“nome”, “Guilherme”); 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 29 
o Ex.: excluir o cookie criado anteriormente (prazo de validade anterior 
ao tempo atual) 
§ setcookie(“nome”, “”, time()-3600); 
o Ex.: criar um cookie válido por 48h: 
§ setcookie(“nome”, “Guilherme”, time()+172800); 
§ Atenção: o envio de cookies para o cliente deve ser a primeira coisa na 
execução da página, ou seja, a função setcookie() deve ser utilizada antes 
de qualquer tag HTML; 
§ Para acessar um cookie enviado pelo navegador do cliente, PHP 
disponibiliza o array superglobal “$_COOKIE”; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 30 
o $_COOKIE é um array com índices associativos; 
o O nome do cookie é o índice no array; 
o Ex.: obter o valor do cookie “nome” criado no exemplo anterior: 
§ $valor = $_COOKIE[“nome”]; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 31 
 
 
 
<?php 
 if (isset($_COOKIE["nome"])) 
 { 
 $message = "Bem vindo de volta, " . $_COOKIE["nome"]; 
 setcookie("nome", "", time()-3600); //apaga 
 } 
 else 
 { 
 $message = "Seja bem vindo! <br />"; 
 setcookie("nome", "Guilherme"); 
 } 
 echo $message; 
?> 
// Primeira execução: 
Seja bem vindo! 
// Segunda execução: 
Bem vindo de volta, Guilherme! 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 32 
5.2. Sessões 
§ Uma sessão de PHP permite que sejam armazenados, no servidor, 
informações sobre o usuário que acessa um determinado website; 
o Estas informações de sessão ficarão armazenadas no servidor 
enquanto o usuário estiver navegando pelas páginas do site (enquanto 
a sessão estiver aberta); 
§ Cada sessão tem um número identificador único à “session id”; 
o No início de uma sessão, o PHP atribui o session id à constante 
“SID”; 
o Para uma página ter acesso aos dados da sessão, ela deve conhecer 
este identificador; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 33 
o É necessário transmitir o session id entre páginas; 
§ Isto pode ser feito de duas formas: 
• Via cookies (automaticamente, se estiver habilitado na 
diretiva session.use_cookies do arquivo php.ini); 
• Via propagação de variáveis na URL; 
o Neste caso, adiciona-se o valor de SID ao final da URL: 
§ echo ‘<a href=“pagina.php?’ . SID . ‘“>Clique 
</a>’; 
 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 34 
§ O primeiro passo para armazenar informações em uma sessão é iniciar 
uma sessão no servidor; 
o Isto pode ser feito através da função session_start(); 
§ A função session_start() serve tanto para criar uma sessão quanto para 
restaurar os dados de uma sessão com base no identificador corrente 
(session ID); 
o Sintaxe: bool session_start(); 
o Esta função deve aparecer antes de qualquer tag HTML; 
§ Após a criação de uma sessão, pode-se então registrar variáveis a esta 
sessão; 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 35 
§ Ao registrar uma variável a uma sessão, ela se torna disponível para todas 
as páginas que serão acessadas até o término da sessão; 
§ A maneira mais recomendada de registrar variáveis a uma sessão é 
através da adição direta de entradas ao array “$_SESSION”; 
 
 
<?php 
 session_start(); 
 if (!isset($_SESSION[‘contador’])) { 
 $_SESSION[‘contador’] = 1; 
 } else { 
 $_SESSION[‘contador‘]++; 
} 
?> 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 36 
§ Por fim, para apagar os dados de uma sessão, pode-se adotar duas 
abordagens: 
o Utilizar a função unset() do PHP, que permite a eliminação de 
variáveis específicas: 
§ <?php unset($_SESSION[‘contador’]); ?> 
o Utilizar a função session_destroy(), que encerra a sessão corrente e 
elimina todas as variáveis de sessão: 
§ <?php session_destroy(); ?> 
§ Maiores informações sobre sessões em PHP podem ser acessadas em: 
o http://www.php.net/manual/en/book.session.php 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 37 
§ Exemplo: acessando informações de uma página em outra, via variáveis 
de sessão (SID passado via cookie); 
 
 
?php 
 session_start(); 
 echo "Esta é a primeira página"; 
 $_SESSION['nome'] = "Guilherme"; 
 $_SESSION['sobrenome'] = "Coelho"; 
 $_SESSION['data'] = date('d/m/Y', time()); 
 echo '<br /><br /><a href="session2.php">Página 2</a>'; 
?> 
Esta é a primeira página 
 
Página 2 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 38 
 
 
 
?php 
 session_start(); 
 echo "Esta é a segunda página <br />"; 
 echo $_SESSION['nome'] . "<br />"; 
 echo $_SESSION['sobrenome'] . "<br />"; 
 echo $_SESSION['data'] . "<br />"; 
 echo '<br /><a href="session1.php?">Página 1</a>'; 
 session_destroy(); 
?> 
Esta é a segunda página 
Guilherme 
Coelho 
03/05/2012 
 
Página 1 
ST670: Tópicos em Programação Web 
Guilherme Palermo Coelho – FT/Unicamp – 2s2013 
Tópico 5: PHP 39 
6. Referências 
[1] Niederauer, J. “Desenvolvendo Websites com PHP”, 2ª ed. Novatec, 2011. 
[2] W3Schools PHP Tutorial: http://w3schools.com/php/default.asp 
[3] Manual do PHP: http://php.net/manual/pt_BR/index.php 
[4] Hudson, P. “Practical PHP Programming”: http://www.tuxradar.com/practicalphp 
[5] Gutmans, A., Bakken, S. S. & Rethans, D. “PHP5 Power Programming”: 
http://ptgmedia.pearsoncmg.com/images/013147149X/downloads/013147149X_book.pdf

Continue navegando