4a Edição Novatec Copyright © 2008, 2013 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Editoração eletrônica: Carolina Kuwabata Revisão gramatical: Patrizia Zagni Capa: Edinei Gonçalves Histórico de impressões: Quarta edição ISBN 978-85-7522-386-4 Terceira edição: ISBN: 978-85-7522-165-5 Primeira/segunda edição:ISBN: 85-7522-044-6 Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 Email: [email protected] Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec VC20131106 Sumário Agradecimentos.........................................................................................15 Sobre o autor.............................................................................................17 Introdução.................................................................................................19 Quem deve ler este livro....................................................................................20 Como este livro está organizado........................................................................20 Download do código-fonte do livro....................................................................22 Capítulo 1 Revisão de PHP........................................................................23 Iniciando em PHP.............................................................................................23 Embutindo PHP na HTML...............................................................................25 Exibindo a página no navegador........................................................................26 Constantes........................................................................................................27 Variáveis ..........................................................................................................29 Escopo das variáveis....................................................................................30 Variáveis geradas dinamicamente ................................................................30 Arrays.............................................................................................................. 31 Objetos.............................................................................................................33 Operadores.......................................................................................................34 Aritméticos.................................................................................................34 Binários...................................................................................................... 35 Comparação...............................................................................................36 Atribuição.................................................................................................. 37 Lógicos.......................................................................................................38 Precedência de operadores................................................................................. 41 Estruturas de controle em PHP..........................................................................42 if................................................................................................................43 switch.........................................................................................................44 while..........................................................................................................45 do...while....................................................................................................46 for.............................................................................................................. 47 foreach.......................................................................................................48 Integração com bancos de dados........................................................................49 7 8 PHP para quem conhece PHP Capítulo 2 Melhorando o processamento de formulários...........................53 Criação do formulário ......................................................................................53 Enviando as informações para um programa PHP..............................................56 Método GET..............................................................................................57 Método POST.............................................................................................58 Os arrays superglobais $_GET e $_POST...........................................................58 Funções especiais para formatação de dados......................................................59 Validação no cliente com JavaScript...................................................................62 Validação no servidor com PHP.........................................................................64 Espaços em branco.....................................................................................64 Número mínimo de caracteres.....................................................................65 Campos de e-mail.......................................................................................65 Numéricos................................................................................................. 67 CPF............................................................................................................68 CNPJ.........................................................................................................69 Exemplo de validação de dados......................................................................... 71 Capítulo 3 Mantendo informações com cookies e sessões..........................77 Por que usar cookies e sessões?..........................................................................77 Utilizando cookies............................................................................................78 Invasão de privacidade?...............................................................................79 Enviando cookies pelo PHP.........................................................................80 O array superglobal $_COOKIE.................................................................. 81 Autenticação de usuários.............................................................................82 Criando um sistema de username/senha para seu site..................................83 Utilizando sessões.............................................................................................89 O que é uma sessão?...................................................................................89 Propagando o identificador entre as páginas.................................................90 Criando uma sessão no PHP.......................................................................90 Registrando variáveis em uma sessão........................................................... 91 Parâmetros de configuração.........................................................................93 Usando sessões no sistema de username/senha............................................94 Funções do PHP para manipulação de sessões....................................................98 Capítulo 4 Arquivos-texto: praticidade e rapidez .................................... 101 Por que utilizar arquivos no PHP?.....................................................................101 Operando sobre arquivos................................................................................ 102 Abertura .................................................................................................. 102 Fechamento.............................................................................................. 104 Leitura..................................................................................................... 104 Escrita...................................................................................................... 108 Sumário Criando um contador de acessos..................................................................... 109 Funções do PHP para manipulação de arquivos.................................................110 Capítulo 5 A página envia o e‑mail......................................................... 119 Por que enviar e-mails com o PHP?...................................................................119 Quem envia o e-mail?...................................................................................... 120 Utilizando a função mail..................................................................................121 Diretivas de configuração no php.ini.................................................................121 Composição de uma mensagem....................................................................... 122 Adicionando informações ao cabeçalho do e-mail............................................ 123 Enviando e-mails em formato HTML............................................................... 124 Exemplos de envio de e-mails com o PHP........................................................ 125 Coletando as sugestões de seus visitantes................................................... 125 Mensagens para diferentes áreas da empresa.............................................. 128 Lista dos cabeçalhos de e-mail (mail headers)................................................... 131 Capítulo 6 Enviar arquivos? Faça Upload!................................................ 133 Por que fazer upload de arquivos?.................................................................... 133 Diferenças entre os protocolos HTTP e FTP..................................................... 134 Upload utilizando PHP e HTTP...................................................................... 135 Definindo o formulário HTML.................................................................. 136 Parâmetros de configuração do upload ..................................................... 138 Recebendo e gravando o arquivo............................................................... 139 Upload utilizando PHP e FTP.......................................................................... 143 Definindo o formulário HTML.................................................................. 143 Configuração do servidor e do upload....................................................... 144 Conectando ao servidor e enviando o arquivo............................................ 145 Enviando múltiplos arquivos........................................................................... 148 Utilizando variáveis em sequência............................................................. 148 Utilizando um array.................................................................................. 152 Problemas comuns.......................................................................................... 154 Mensagens de erro.................................................................................... 155 Funções de FTP disponíveis no PHP................................................................ 155 Capítulo 7 A arte de gerar imagens no PHP............................................. 161 Por que manipular imagens?.............................................................................161 Introdução à biblioteca gráfica GD.................................................................. 163 Tipos de imagens suportados.................................................................... 163 Criando uma imagem............................................................................... 164 Definindo as cores.................................................................................... 165 Definindo o conteúdo............................................................................... 166 9 10 PHP para quem conhece PHP Exibindo a imagem................................................................................... 167 Liberando a memória utilizada.................................................................. 169 Desenhando elementos gráficos básicos........................................................... 169 Linhas...................................................................................................... 169 Retângulos................................................................................................ 171 Polígonos.................................................................................................. 173 Arcos........................................................................................................ 176 Círculos e elipses...................................................................................... 177 Escrevendo em uma imagem............................................................................181 Usando a fonte-padrão...............................................................................181 Usando fontes TrueType............................................................................ 183 Exemplos de aplicações................................................................................... 185 Contador de visitas gráfico........................................................................ 185 Marcador de imagens para websites........................................................... 192 Miniaturas (thumbnails) de imagens......................................................... 197 Gráficos em formato de pizza....................................................................206 Gráficos de colunas....................................................................................218 Gráficos de linhas......................................................................................231 Funções do PHP para manipulação de imagens................................................ 237 Capítulo 8 A versatilidade dos documentos PDF...................................... 251 Por que criar documentos PDF?........................................................................251 Introdução à biblioteca PDFlib........................................................................ 253 Formas alternativas: Haru e FPDF............................................................. 253 Criando um arquivo PDF.......................................................................... 254 As propriedades do documento................................................................. 255 Adicionando páginas ao documento.......................................................... 255 Escolhendo o tipo e o tamanho da fonte.................................................... 257 Inserindo o conteúdo................................................................................ 258 Fechando o documento e liberando a memória.......................................... 259 Definindo o destino do documento gerado................................................ 259 Sistema de coordenadas................................................................................... 261 Inserindo caixas de texto no documento.......................................................... 262 Formatando o texto......................................................................................... 265 Inserindo imagens no documento....................................................................268 Desenhando em um documento...................................................................... 270 Linhas e curvas......................................................................................... 270 Retângulos e quadrados............................................................................ 272 Círculos e arcos........................................................................................ 274 Definindo um modelo (template) para as páginas............................................. 276 Inserindo referências no documento................................................................ 278 Bookmarks............................................................................................... 278 Weblinks.................................................................................................. 279 Programa-exemplo com referências............................................................280 Sumário Exemplos de aplicações com a PDFlib..............................................................282 Conversor TXT para PDF.......................................................................... 283 Relatórios PDF a partir de consultas SQL...................................................286 Exemplos utilizando a FPDF........................................................................... 293 Funções do PHP para manipulação de documentos PDF..................................296 Capítulo 9 Utilizando modelos: seja “Smarty”......................................... 313 Por que utilizar modelos (templates)?................................................................313 As ferramentas existentes.................................................................................314 Smarty – A ferramenta de modelos...................................................................314 O que é Smarty?........................................................................................315 Download e instalação...............................................................................316 Incluindo uma chamada para a classe.........................................................317 Estrutura da aplicação...............................................................................317 Testando a ferramenta................................................................................319 Informações sobre o layout.............................................................................. 320 Delimitadores........................................................................................... 320 Comentários............................................................................................. 320 Funções.....................................................................................................321 Atributos...................................................................................................321 Variáveis................................................................................................... 322 Modificadores de variáveis........................................................................ 323 Arquivos de configuração.......................................................................... 328 Informações sobre a programação PHP...................................................... 330 A constante SMARTY_DIR....................................................................... 330 Variáveis de configuração...........................................................................331 Métodos................................................................................................... 334 Exemplos de aplicações com Smarty................................................................ 335 Catálogo de livros..................................................................................... 335 Sistema de notícias....................................................................................340 Funções da Smarty para a criação de templates................................................ 347 Embutidas................................................................................................ 347 Personalizadas.......................................................................................... 354 Métodos da classe Smarty para o PHP..............................................................371 Capítulo 10 Acesse um banco de dados! Não importa qual....................... 377 Por que usar abstração de banco de dados?...................................................... 377 Bibliotecas disponíveis.................................................................................... 379 Extensão dbx............................................................................................ 379 Extensão PDO..........................................................................................380 Utilizando a extensão dbx...............................................................................380 Instalação.................................................................................................380 Conectando ao banco de dados................................................................. 381 11 12 PHP para quem conhece PHP Executando consultas SQL........................................................................382 Manipulando os resultados da consulta.....................................................383 Encerrando a conexão............................................................................... 385 Exemplos utilizando dbx.......................................................................... 385 Utilizando a extensão PDO............................................................................. 397 Instalação da PDO.................................................................................... 397 Conectando ao banco de dados................................................................. 398 Executando comandos SQL....................................................................... 399 Encerrando a conexão...............................................................................400 Exemplos utilizando PDO......................................................................... 401 Funções do PHP para a extensão DBX.............................................................. 407 Métodos da extensão PDO..............................................................................408 Classe PDO..............................................................................................408 Classe PDOStatement............................................................................... 410 Capítulo 11 Estudo de caso: controle de finanças..................................... 415 Definição do sistema....................................................................................... 415 Criando a base de dados..................................................................................418 Include de acesso ao banco de dados................................................................419 Autenticação do usuário com cookies.............................................................. 420 Login........................................................................................................421 Autenticação............................................................................................. 422 Logout..................................................................................................... 423 Opções do menu principal.............................................................................. 423 Inclusão de receitas e despesas......................................................................... 426 A planilha de receitas e despesas...................................................................... 430 Escolhendo o período de visualização........................................................ 430 Exibindo a planilha.................................................................................. 433 Gerando um gráfico de despesas............................................................... 441 Gerando um relatório PDF para o mês....................................................... 445 Enviando os dados por e-mail ..................................................................449 Exclusão dos dados cadastrados...................................................................... 452 Apêndice A Comandos gerais do PHP...................................................... 457 Arrays............................................................................................................ 457 Classes e objetos.............................................................................................460 ClibPDF.........................................................................................................460 Data e hora.....................................................................................................463 dbx................................................................................................................464 Diretórios.......................................................................................................465 FTP................................................................................................................465 Funções..........................................................................................................466 HTTP............................................................................................................. 467 Sumário Imagens.......................................................................................................... 467 IMAP, POP3 e NNTP...................................................................................... 470 InterBase........................................................................................................ 473 Matemática......................................................................................................474 Microsoft SQL Server...................................................................................... 476 mSQL............................................................................................................. 477 MySQL........................................................................................................... 478 MySQLi..........................................................................................................480 OCI8..............................................................................................................482 ODBC............................................................................................................484 Opções e informações do PHP.........................................................................485 Oracle............................................................................................................487 PDF................................................................................................................488 PostgreSQL......................................................................................................491 Sessões........................................................................................................... 494 Sistema de arquivos (Filesystem)...................................................................... 495 Strings............................................................................................................ 497 Sybase............................................................................................................500 URL................................................................................................................501 Variáveis..........................................................................................................501 Apêndice B Novidades do PHP 5 e PHP 6................................................. 503 O que mudou a partir do PHP 5?..................................................................... 503 PHP será uma linguagem orientada a objetos?................................................. 503 Compatibilidade entre as versões 4, 5 e 6..........................................................504 As principais novidades ..................................................................................505 Orientação a objetos.................................................................................505 SQLite.......................................................................................................513 Suporte XML.............................................................................................514 Outras mudanças......................................................................................514 Apêndice C Links interessantes............................................................... 519 Site oficial do PHP............................................................................................519 Scripts, programas e tutoriais PHP....................................................................519 Catálogos de links PHP................................................................................... 520 Outros links.................................................................................................... 520 Índice remissivo....................................................................................... 521 13