+ All Categories
Home > Documents > PHP E MYSQL

PHP E MYSQL

Date post: 02-Jul-2015
Category:
Upload: rod-deville
View: 1,482 times
Download: 5 times
Share this document with a friend
Popular Tags:
28
Dominando PHP e MySQL Do Iniciante ao Profissional W. Jason Gilmore Rio de Janeiro. 2008 Abertura.indd 1 07/01/2009 15:39:16
Transcript
Page 1: PHP E MYSQL

Dominando PHP e MySQL

Do Iniciante ao Profissional

W. Jason Gilmore

Rio de Janeiro. 2008

Abertura.indd 1 07/01/2009 15:39:16

Page 2: PHP E MYSQL

Dominando PHP e MySQL: Do Iniciante ao Profissional

Do original Beginning PHP and MySQL: From Novice to Professional Copyright © 2008 da Starlin Alta Con. Com. Ltda. Authorized translation from English language edition, entitled Beginning PHP and MySQL: From Novice to Professional, by W. Jason Gilmore, published by Apress L.P. Copyright © 2008 by Apress L.P. PORTUGUESE language edition published by Starlin Alta Con. Com. Ltda, Copyright © 2008 Starlin Alta Con. Com. Ltda.

Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários (como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia.

Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro encontrado em nossos livros.

Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou implícita.

Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou desmerecimento do produto/fabricante.

Produção Editorial: Starlin Alta Con. Com. LtdaCoordenação Editorial: Marcelo Utrine

Tradução: Raquel Marques e Lúcia KinoshitaRevisão: Flávia Barreto

Revisão Técnica: Juliana BarbosaDiagramação: Rosane AbelFechamento: Rafael Conde

Impresso no Brasil

O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de criarem novas obras.

Rua Viúva Cláudio, 291 – Jacaré Rio de Janeiro – RJ. CEP: 20970-031Tel: 21 3278-8069/ Fax: 3277-1253

site: www.altabooks.com.bre-mail: [email protected]

Abertura.indd 2 07/01/2009 15:39:16

Page 3: PHP E MYSQL

Este é dedicado a você, Ruby!

Abertura.indd 3 07/01/2009 15:39:16

Page 4: PHP E MYSQL

Abertura.indd 4 07/01/2009 15:39:16

Page 5: PHP E MYSQL

Sobre o autor ....................................................................................................................... .xxiii

Agradecimentos .................................................................................................................... ..xxv

Introdução .............................................................................................................................xxvii

■Capítulo 1 Introdução ao PHP ...................................................................................... ..01

■Capítulo 2 Configurando seu Ambiente ........................................................................ ..09

■Capítulo 3 Fundamentos do PHP ................................................................................. ..41

■Capítulo 4 Funções ...................................................................................................... ..89

■Capítulo 5 Arrays .........................................................................................................101

■Capítulo 6 PHP Orientado a Objeto .............................................................................131

■Capítulo 7 Características OOP Avançadas ..................................................................155

■Capítulo 8 Gerenciamento de Erro e Exceção ..............................................................171

■Capítulo 9 Strings e Expressões Regulares ..................................................................185

■Capítulo 10 Trabalhando com Arquivo e Sistema Operacional......................................223

■Capítulo 11 PEAR ........................................................................................................249

■Capítulo 12 Data e Hora ...............................................................................................261

■Capítulo 13 Formulários ...............................................................................................281

■Capítulo 14 Autenticando Seus Usuários .....................................................................295

Resumo do conteúdo

Abertura.indd 5 07/01/2009 15:39:16

Page 6: PHP E MYSQL

Aprendendo PHP e MySQLvi

■Capítulo 15 Gerenciamento de Uploads de Arquivo ....................................................313

■Capítulo 16 Networking (Rede de Comunicações) ....................................................325

■Capítulo 17 PHP e LDAP ............................................................................................345

■Capítulo 18 Gerenciadores de Sessão .........................................................................361

■Capítulo 19 Modelando com Smarty .........................................................................381

■Capítulo 20 Web Services ...........................................................................................405

■Capítulo 21 Programação PHP segura .......................................................................431

■Capítulo 22 SQLite .....................................................................................................453

■Capítulo 23 Construindo Web sites para o mundo .....................................................473

■Capítulo 24 MVC e o Zend Framework .......................................................................481

■Capítulo 25 Introdução ao MySQL ..............................................................................497

■Capítulo 26 Instalando e configurando o MySQL .......................................................507

■Capítulo 27 Os vários clientes MySQL ........................................................................529

■Capítulo 28 Mecanismos de armazenamento e tipos de dados do MySQL .................553

■Capítulo 29 Garantindo a segurança no MySQL .........................................................583

■Capítulo 30 Usando PHP com MySQL .........................................................................611

■Capítulo 31 Apresentando o PDO ...............................................................................631

■Capítulo 32 Stored Routines (Rotinas armazenadas) ..................................................651

■Capítulo 33 Triggers do MySQL ...................................................................................675

■Capítulo 34 Views do MySQL .......................................................................................685

■Capítulo 35 Queries de banco de dados na prática .....................................................699

■Capítulo 36 Índices e buscas .......................................................................................725

■Capítulo 37 Transações ...............................................................................................741

■Capítulo 38 Importando e exportando dados .............................................................751

Indice ................................................................................................................................. 765

Abertura.indd 6 07/01/2009 15:39:16

Page 7: PHP E MYSQL

Sobre o autor ............................................................................................................................ xxiii

Agradecimentos .......................................................................................................................... xxv

Introdução ............................................................................................................................... .xxvii

■Capítulo 1 Introdução ao PHP ...........................................................01História ............................................................................................................................. 02PHP 4 ............................................................................................................................... 02PHP 5 ............................................................................................................................... 04PHP 6 ............................................................................................................................... 04Características Gerais da Linguagem ............................................................................... 05Praticidade ....................................................................................................................... 05Poder ................................................................................................................................ 06Possibilidade .................................................................................................................... 07Preço ................................................................................................................................ 07Resumo ............................................................................................................................ 08

■Capítulo 2 Configurando seu Ambiente ...........................................09Pré-Requisitos de Instalação ............................................................................................ 10Fazendo download do Apache ......................................................................................... 10Fazendo download do PHP ............................................................................................... 11Obtendo a Documentação................................................................................................ 11Fazendo download do Manual do Apache ....................................................................... 11Fazendo download do Manual do PHP............................................................................. 12 Instalando Apache e PHP no Linux ................................................................................... 12Instalando Apache e PHP no Windows ............................................................................. 14Instalando IIS e PHP no Windows ..................................................................................... 15Instalando IIS e PHP ......................................................................................................... 16

Sumário

Abertura.indd 7 07/01/2009 15:39:17

Page 8: PHP E MYSQL

Aprendendo PHP e MySQLviii

Configurando FastCGI para Gerenciar Processos PHP ...................................................... 17Testando sua Instalação ................................................................................................... 18Configurando o PHP ......................................................................................................... 19Configurando PHP em tempo de execução no Linux ........................................................ 19Personalizando o ambiente no Windows .......................................................................... 20Configuração do Tempo de Execução (Run-Time Configuration) ...................................... 20Gerenciando as Diretrizes de Configuração do PHP ......................................................... 20Diretrizes de Configuração do PHP ................................................................................... 23Escolhendo um Editor de Código ..................................................................................... 36Adobe Dreamweaver CS3 ................................................................................................ 36Notepad++ ...................................................................................................................... 37PDT (PHP Development Tools – Ferramentas de Desenvolvimento do PHP) ................................. 37Zend Studio ...................................................................................................................... 37Escolhendo um Provedor de Hospedagem Web ............................................................... 38Sete Perguntas para Qualquer Provedor de Hospedagem em Potencial ........................... 38Resumo ............................................................................................................................ 40

■Capítulo 3 Fundamentos do PHP ......................................................41Embutindo o Código PHP nas Suas Páginas Web ............................................................. 41Sintaxe Padrão ................................................................................................................. 42Short-Tags ........................................................................................................................ 42Script ................................................................................................................................ 43ASP Style .......................................................................................................................... 43Embutindo Múltiplos Blocos de Código ........................................................................... 44Comentando Seu Código.................................................................................................. 44Sintaxe C++ de Linha Única ............................................................................................. 44Sintaxe Shell ..................................................................................................................... 45Sintaxe C de Linhas Múltiplas .......................................................................................... 45Mostrando Dados no Navegador ..................................................................................... 46A função print () ............................................................................................................... 46A função printf() ............................................................................................................... 47A frase sprintf() ................................................................................................................ 49Tipos de Dados Suportados pelo PHP ............................................................................... 49Tipos de Dados Escalares ................................................................................................. 49Tipos de Dados Compostos .............................................................................................. 50Conversão Entre Tipo de Dados Usando Type Casting ...................................................... 52Adaptando Tipos de Dados com o Tipo Juggling .............................................................. 53Funções Relacionadas ao Tipo .......................................................................................... 54Funções do Identificador de Tipo ...................................................................................... 54Identificadores ................................................................................................................. 55Variáveis........................................................................................................................... 56Declaração de Variável ..................................................................................................... 56Escopo da Variável ........................................................................................................... 58Variáveis Superglobais do PHP ......................................................................................... 61Variáveis de Variável ........................................................................................................ 66Constantes ....................................................................................................................... 66Expressões ....................................................................................................................... 67Operandos ........................................................................................................................ 67Operadores....................................................................................................................... 67Interpolação de String ...................................................................................................... 74

Abertura.indd 8 07/01/2009 15:39:17

Page 9: PHP E MYSQL

SUMÁRIO ix

Aspas Duplas.................................................................................................................... 74Aspas Únicas .................................................................................................................... 75Heredoc ............................................................................................................................ 75Estruturas de Controle ..................................................................................................... 76Expressões Condicionais .................................................................................................. 76Expressões de Looping ..................................................................................................... 79Expressões de Inclusão de Arquivo ................................................................................... 85Resumo ............................................................................................................................ 88

■Capítulo 4 Funções .............................................................................89Chamando uma Função ................................................................................................... 89Criando uma Função ........................................................................................................ 90Passando Argumentos por Valor ....................................................................................... 91Passando Argumentos Por Referência .............................................................................. 92Valores Padrões de Argumento ........................................................................................ 92Retornando Valores a partir de uma Função .................................................................... 93Funções Recursivas .......................................................................................................... 95Bibliotecas de Função ...................................................................................................... 98Resumo ............................................................................................................................ 99

■Capítulo 5 Arrays .............................................................................101O Que É Um Array? ........................................................................................................ 101Criando Um Array ........................................................................................................... 103Criando Arrays com array() ............................................................................................. 103Extraindo Arrays com list() ............................................................................................. 104Populando Arrays com um Limite de Valor Pré-Definido ................................................ 105Testando se é um Array .................................................................................................. 106Adicionado e Removendo Elementos Array .................................................................... 107Adicionando Um Valor à Frente de Um Array ................................................................. 107Adicionando um Valor Ao Final de Um Array .................................................................. 107Removendo Um Valor da Frente de Um Array ................................................................ 107Removendo um Valor do Final de um Array.................................................................... 108Localizando Elementos Array ......................................................................................... 108Buscando um Array ........................................................................................................ 108Recuperando as Chaves de um Array ............................................................................. 109Recuperando os Valores de um Array ............................................................................. 110Percorrendo Arrays ......................................................................................................... 110Recuperando a Chave Atual no Array ............................................................................. 110Recuperando o Valor Atual no Array ............................................................................... 111Recuperando a Chave e o Valor Atual no Array .............................................................. 111Movendo o Ponteiro no Array ........................................................................................ 111Passando Valores de Array para uma Função ................................................................. 112Determinando Tamanho e Exclusividade do Array .......................................................... 114Determinando o Tamanho de um Array .......................................................................... 114Contando a Freqüência do Valor de Array ...................................................................... 115Determinando Valores Únicos no Array .......................................................................... 115Classificando Arrays ....................................................................................................... 115Revertendo a Ordem do Elemento Array ........................................................................ 116Invertendo Valores e Chaves de Array ............................................................................ 116Classificando um Array ................................................................................................... 117

Abertura.indd 9 07/01/2009 15:39:17

Page 10: PHP E MYSQL

Aprendendo PHP e MySQLx

Unindo, Dividindo, Combinando e Dissecando Arrays .................................................... 122Unindo Arrays................................................................................................................. 122Anexando Arrays Recursivamente .................................................................................. 122Combinando Dois Arrays ................................................................................................ 123Dividindo um Array ........................................................................................................ 123Combinando um Array ................................................................................................... 124Calculando uma Interseção de Array .............................................................................. 125Calculando Interseções de Array Associativos ................................................................ 125Calculando Diferenças de Array...................................................................................... 126Calculando Diferenças de Array Associativos ................................................................. 126Outras funções Úteis Array ............................................................................................. 127Retornando um Conjunto Aleatório de Chaves .............................................................. 127Embaralhando Elementos Array ..................................................................................... 127Resumo .......................................................................................................................... 129

■Capítulo 6 PHP Orientado a Objeto ................................................131Os Benefícios de OOP ..................................................................................................... 131Encapsulamento ............................................................................................................. 132Herança .......................................................................................................................... 132Polimorfismo .................................................................................................................. 133Conceitos Chave de OOP................................................................................................ 133Classes ........................................................................................................................... 133Objetos ........................................................................................................................... 134Campos .......................................................................................................................... 135Propriedades .................................................................................................................. 138Constantes ..................................................................................................................... 141Métodos ......................................................................................................................... 142Construtores e Destruidores ........................................................................................... 146Construtores ................................................................................................................... 146Destruidores ................................................................................................................... 149Membros de Classe Estáticos ......................................................................................... 150A instância da Palavra-Chave ......................................................................................... 151Funções Auxiliares .......................................................................................................... 151Autoloading de Objetos ................................................................................................. 153Resumo .......................................................................................................................... 154

■Capítulo 7 Características OOP Avançadas ....................................155Características OOP avançadas Não Suportadas pelo PHP ............................................. 156Clonagem de Objeto ...................................................................................................... 156Exemplo de Clonagem ................................................................................................... 156O método __clone() ....................................................................................................... 158Herança .......................................................................................................................... 159Herança de Classe .......................................................................................................... 159Herança e Construtores .................................................................................................. 161Interfaces ....................................................................................................................... 163Implementando uma Única Interface ............................................................................. 164Implementando Interfaces Múltiplas .............................................................................. 166Classes Abstratas ........................................................................................................... 166Introduzindo Namespaces .............................................................................................. 167Resumo .......................................................................................................................... 169

Abertura.indd 10 07/01/2009 15:39:17

Page 11: PHP E MYSQL

SUMÁRIO xi

■Capítulo 8 Gerenciamento de Erro e Exceção ...............................171 Diretrizes de configuração ............................................................................................. 172Logar Erros ..................................................................................................................... 174Gerenciamento de exceção ............................................................................................ 177Por que Gerenciamento de exceção é Útil ...................................................................... 177Implementação de Gerenciamento de Exceção do PHP ................................................. 179Resumo .......................................................................................................................... 184

■Capítulo 9 Strings e Expressões Regulares ...................................185Expressões Regulares ..................................................................................................... 185Sintaxe das Expressões Regulares (POSIX) ..................................................................... 186Funções de Expressão Regular do PHP (POSIX Estendido) ............................................. 188Sintaxe de expressão Regular (Perl) ............................................................................... 192Outras Funções Específicas do String ............................................................................. 199Determinando o Comprimento de uma String ................................................................ 199Comparando Duas Strings .............................................................................................. 199Manipulando Cases de String......................................................................................... 202Convertendo Strings para e a partir do HTML ................................................................ 203Alternativas para as funções de expressão Regular ....................................................... 208Preenchendo e Esvaziando uma String ........................................................................... 215Contando Caracteres e Palavras ..................................................................................... 216Tirando Vantagem de PEAR: Validate_US ....................................................................... 219Instalando Validate_US .................................................................................................. 219Usando Validate_US ....................................................................................................... 220Resumo .......................................................................................................................... 221

■Capítulo 10 Trabalhando com Arquivo e Sistema Operacional ...223Aprendendo Sobre Arquivos e Diretórios ........................................................................ 224Analisando Caminhos de Diretório ................................................................................. 224Calculando Tamanhos de Arquivo, Diretório e Disco ....................................................... 226Determinando Horários de Acesso e Modificação .......................................................... 228Trabalhando com Arquivos ............................................................................................. 230O Conceito de um Recurso ............................................................................................. 230Reconhecendo Caracteres Newline ................................................................................ 230Reconhecendo o Caractere End-of-Line .......................................................................... 230Abrindo e Fechando um Arquivo .................................................................................... 231Lendo a partir de um Arquivo ......................................................................................... 232Escrevendo uma String em um Arquivo .......................................................................... 239Movendo o Ponteiro do Arquivo ..................................................................................... 239Lendo Conteúdos do Diretório ....................................................................................... 240Executando Comandos Shell .......................................................................................... 241Execução de Programa a Nível do Sistema .................................................................... 243Desinfetando o Input ...................................................................................................... 243Funções de Execução de Programa do PHP .................................................................... 245Resumo .......................................................................................................................... 247

■Capítulo 11 PEAR .............................................................................249Pacotes PEAR Populares ................................................................................................. 249Pacotes Pré-Instalados ................................................................................................... 249

Abertura.indd 11 07/01/2009 15:39:17

Page 12: PHP E MYSQL

Aprendendo PHP e MySQLxii

Pacotes Sugeridos pelo Instalador .................................................................................. 250O poder de PEAR: Convertendo Formatos Numerais ...................................................... 251Instalando e Atualizando PEAR ...................................................................................... 252Instalando PEAR ............................................................................................................. 252PEAR e Empresas de Hospedagem ................................................................................. 253Atualizando PEAR .......................................................................................................... 253Usando o Pacote de Gerenciamento PEAR ..................................................................... 254Visualizando um Pacote PEAR Instalado ........................................................................ 254Aprendendo Mais Sobre um Pacote PEAR Instalado ...................................................... 254Instalando um Pacote PEAR ........................................................................................... 255Incluindo um Pacote Dentro dos Seus Scripts ................................................................. 257Atualizando Pacotes ....................................................................................................... 257Desinstalando um Pacote ............................................................................................... 258Diminuindo um Pacote ................................................................................................... 259Resumo .......................................................................................................................... 259

■Capítulo 12 Data e Hora ..................................................................261O Timestamp Unix .......................................................................................................... 261Biblioteca de Data e Hora do PHP .................................................................................. 262Validando Datas ............................................................................................................. 262Formatando Datas e Horas ............................................................................................. 263Convertendo um Timestamp para Valores Amigáveis ..................................................... 266Trabalhando com Timestamps ........................................................................................ 268Date Fu ........................................................................................................................... 269Exibindo a Data e Horários Localizados ......................................................................... 269Exibindo a Data Mais Recente de Modificação da Página Web ...................................... 273Determinando o Número de Dias do Mês Atual ............................................................. 273Determinando o Número de Dias em Qualquer Mês ...................................................... 274Calculando Data X Dias a partir da Data Atual .............................................................. 274Tirando Vantagem do PEAR: Criando um Calendário ..................................................... 275Melhorias de Data e Hora para Usuários do PHP 5.1+ ................................................... 278Introduzindo o Construtor DateTime .............................................................................. 278Formatando Datas .......................................................................................................... 279Configurando a Data Depois da Instanciação ................................................................ 279Configurando a Hora Depois da Instanciação ................................................................ 279Modificando Datas e Horários ........................................................................................ 280Resumo .......................................................................................................................... 280

■Capítulo 13 Formulários ..................................................................281PHP e Formulários Web .................................................................................................. 281Um Exemplo Simples ...................................................................................................... 282Passando Dados de Formulário a uma Função ............................................................... 283Trabalhando Com Componentes de Formulário de Múltiplos Valores ............................ 285Tirando Vantagem do PEAR: HTML_QuickForm .............................................................. 286Installing HTML_QuickForm ........................................................................................... 287Criando um Formulário Simples ..................................................................................... 287Usando Auto-Complete .................................................................................................. 292Resumo .......................................................................................................................... 294

Abertura.indd 12 07/01/2009 15:39:17

Page 13: PHP E MYSQL

SUMÁRIO xiii

■Capítulo 14 Autenticando Seus Usuários .......................................295Conceitos de Autenticação de HTTP ............................................................................... 295Autenticação do PHP ...................................................................................................... 296Variáveis de Autenticação .............................................................................................. 296Funções Úteis ................................................................................................................. 297Metodologias de Autenticação do PHP .......................................................................... 298Autenticação Hard-Coded .............................................................................................. 299Autenticação Baseada em Arquivo ................................................................................. 299Autenticação Baseada em Banco de Dados ................................................................... 301Autenticação Baseada em IP .......................................................................................... 303Tirando Vantagem do PEAR: Auth_HTTP ........................................................................ 304Administração de Login de Usuário................................................................................ 307Testando a Guessability da Senha com a Biblioteca CrackLib ........................................ 307 URLs de Acesso Único e Recuperação de Senha ............................................................ 310Resumo .......................................................................................................................... 312

■Capítulo 15 Gerenciamento de Uploads de Arquivo ....................313Upload de Arquivos Através do HTTP ............................................................................. 313Enviando Arquivos ao Servidor com PHP ........................................................................ 314Upload de Arquivo do PHP/ Diretrizes de Recurso .......................................................... 314O array $_FILES .............................................................................................................. 316Funções de Upload de Arquivo do PHP .......................................................................... 316Mensagens de Erro de Upload ....................................................................................... 318Um Exemplo Simples ...................................................................................................... 318Tirando Vantagem de PEAR: HTTP_Upload .................................................................... 320Instalando HTTP_Upload ................................................................................................ 320Enviando um Arquivo ..................................................................................................... 320Aprendendo Mais Sobre um Arquivo Enviado ................................................................ 321Enviando Múltiplos Arquivos .......................................................................................... 322Resumo .......................................................................................................................... 323

■Capítulo 16 Networking (Rede de Comunicações) .......................325DNS, Serviços e Servidores ............................................................................................. 326DNS ................................................................................................................................ 326Serviços .......................................................................................................................... 330Estabelecendo Conexões Socket .................................................................................... 331Mail ................................................................................................................................ 333Diretrizes de Configuração ............................................................................................. 333Enviando Email Usando um Script PHP .......................................................................... 334Tarefas Comuns de Networking ..................................................................................... 339Pingando em um Servidor .............................................................................................. 339Criando um Scanner de Porta ......................................................................................... 340Criando um Conversor de Subrede ................................................................................. 341Testando a Largura da Banda do Usuário ....................................................................... 342Resumo .......................................................................................................................... 344

■Capítulo 17 PHP e LDAP ...................................................................345Usando LDAP a partir do PHP ........................................................................................ 346Conectando-se a um servidor LDAP ............................................................................... 347

Abertura.indd 13 07/01/2009 15:39:17

Page 14: PHP E MYSQL

Aprendendo PHP e MySQLxiv

Recuperando Dados LDAP .............................................................................................. 349Contando Entradas Recuperadas ................................................................................... 353Classificando Registros LDAP ......................................................................................... 353Inserindo Dados LDAP .................................................................................................... 354Atualizando Dados LDAP ............................................................................................... 355Deletando Dados LDAP .................................................................................................. 356Trabalhando com o Nome Distinguido ........................................................................... 357Gerenciamento de Erro .................................................................................................. 358Resumo .......................................................................................................................... 359

■Capítulo 18 Gerenciadores de Sessão ............................................361O que é Gerenciamento de Sessão? ............................................................................... 361O Processo de Gerenciamento de Sessão ....................................................................... 362Diretrizes de Configuração ............................................................................................. 363Gerenciando a Mídia de Armazenamento da Sessão ..................................................... 363Configurando o Caminho de Arquivos da Sessão ........................................................... 364Ativando Sessões Automaticamente .............................................................................. 364Configurando o Nome da sessão ................................................................................... 364Escolhendo Cookies ou Reescrevendo URL .................................................................... 364Automatizando a Reescrita de URL ................................................................................ 365Configurando o Tempo de Vida do Cookie de Sessão ..................................................... 365Configurando o Caminho de URL Válido do Cookie de Sessão ....................................... 365Configurando Direções de Armazenamento Temporário para Páginas Ativadas

por Sessão .................................................................................................................. 366Trabalhando com Sessões .............................................................................................. 367Iniciando uma Sessão ..................................................................................................... 367Destruindo uma Sessão .................................................................................................. 367Configurando e Recuperando o ID da Sessão ................................................................. 368Criando e Deletando Variáveis de Sessão ....................................................................... 368Codificando e Decodificando Dados de Sessão .............................................................. 369Exemplos Práticos de Gerenciamento ............................................................................ 371Fazendo Automaticamente o Login de Usuários que Retornam ..................................... 371Gerando um Índice de Documento Visualizado Recentemente ...................................... 373Criando Gerenciadores de Sessão Personalizados .......................................................... 374Unindo as Funções de Sessão Personalizadas à Lógica do PHP ...................................... 375Usando Gerenciadores Personalizados de Sessão Baseados em MySQL ........................ 376Resumo .......................................................................................................................... 379

■Capítulo 19 Modelando com Smarty .............................................381O que é uma Ferramenta de Modelagem? ..................................................................... 381Introduzindo Smarty ....................................................................................................... 383Instalando Smarty .......................................................................................................... 384Usando Smarty ............................................................................................................... 385Lógica de Apresentação do Smarty ................................................................................ 387Comentários ................................................................................................................... 387Modificadores de Variável .............................................................................................. 388Estruturas de Controle ................................................................................................... 390Expressões ..................................................................................................................... 395Criando Arquivos de Configuração ................................................................................. 397config_load .................................................................................................................... 398

Abertura.indd 14 07/01/2009 15:39:17

Page 15: PHP E MYSQL

SUMÁRIO xv

Referenciando Variáveis de Configuração ...................................................................... 398Usando CSS em Conjunto com Smarty ........................................................................... 399Caching .......................................................................................................................... 400Trabalhando com o Tempo de Vida do Cache ................................................................. 401Eliminando Problemas de Processamento com is_cached() ........................................... 402Criando Múltiplos Caches por Modelo ........................................................................... 402Algumas Palavras Finais Sobre Caching ......................................................................... 403Resumo .......................................................................................................................... 403

■Capítulo 20 Web Services ................................................................405Porque Web Services? .................................................................................................... 405Really Simple Syndication .............................................................................................. 407Entendendo a Sintaxe RSS ............................................................................................. 409Introduzindo MagpieRSS ................................................................................................ 410SimpleXML ..................................................................................................................... 417Carregando XML ............................................................................................................ 418Interpretando XML ......................................................................................................... 419SOAP .............................................................................................................................. 422Introduzindo Mensagens SOAP ...................................................................................... 423Introduzindo a Extensão SOAP do PHP .......................................................................... 424Resumo .......................................................................................................................... 430

■Capítulo 21 Programação PHP segura ...........................................431Configurando o PHP de forma segura ............................................................................ 432Modo seguro (Safe mode) .............................................................................................. 432Outros parâmetros de configuração relacionados com segurança ................................. 434 Ocultando os detalhes da configuração ......................................................................... 436Ocultando o Apache ....................................................................................................... 436Ocultando o PHP ............................................................................................................ 437Ocultando dados confidenciais ...................................................................................... 438Ocultando a raiz dos documentos .................................................................................. 439Impedindo o acesso a determinadas extensões de arquivo ............................................ 439Fazendo uma limpeza nos dados de usuário .................................................................. 440Apagando arquivos ........................................................................................................ 440Cross-site scripting ......................................................................................................... 440Fazer limpeza nos dados de entrada dos usuários: a solução ......................................... 442Tirando vantagem de PEAR: Validate ............................................................................. 444Criptografia dos dados ................................................................................................... 446Funções de criptografia do PHP ..................................................................................... 446O pacote MCrypt ............................................................................................................ 448Resumo .......................................................................................................................... 450

■Capítulo 22 SQLite ...........................................................................453Introdução ao SQLite ...................................................................................................... 453Instalando o SQLite ........................................................................................................ 454Usando a interface de linha de comando do SQLite ....................................................... 454A biblioteca SQLite do PHP ............................................................................................ 456sqlite.assoc_case = 0 | 1 | 2 ........................................................................................... 456Abrindo uma conexão .................................................................................................... 456

Abertura.indd 15 07/01/2009 15:39:17

Page 16: PHP E MYSQL

Aprendendo PHP e MySQLxvi

Criando uma tabela em memória ................................................................................... 457Fechando uma conexão.................................................................................................. 458Fazendo queries em um banco de dados........................................................................ 458Fazendo análise dos conjuntos de resultados ................................................................. 460Obtendo detalhes do conjunto de resultados ................................................................. 463Manipulando o ponteiro do conjunto de resultados ...................................................... 465Obtendo os tipos das colunas de uma tabela ................................................................. 467Trabalhando com dados binários.................................................................................... 468Criando e sobrescrevendo funções SQLite ...................................................................... 469Criando funções de agregação ....................................................................................... 470Resumo .......................................................................................................................... 472

■Capítulo 23 Construindo Web sites para o mundo .......................473Traduzindo seus Web sites com Gettext ......................................................................... 473Passo 1: Atualize os scripts do Web site ......................................................................... 474Passo 2: Crie o repositório de localização ....................................................................... 475Passo 3: Crie os arquivos para tradução ......................................................................... 476Passo 4: Traduza o texto ................................................................................................. 477Passo 5: Gere os arquivos binários ................................................................................. 477Passo 6: Configure o idioma desejado dentro de seus scripts ........................................ 478Localizando datas, números e horas .............................................................................. 478Resumo .......................................................................................................................... 480

■Capítulo 24 MVC e o Zend Framework ..........................................481Apresentando o MVC ..................................................................................................... 481Soluções de framework do PHP...................................................................................... 483O CakePHP Framework................................................................................................... 484O Solar Framework ......................................................................................................... 484O symfony Framework.................................................................................................... 484O Zend Framework ......................................................................................................... 485Apresentando o Zend Framework .................................................................................. 485Fazendo download e instalando o Zend Framework ...................................................... 487Criando seu primeiro Web site baseado em Zend Framework ........................................ 488Fazendo buscas na Web com Zend_Service_Yahoo ........................................................ 493Resumo .......................................................................................................................... 495

■Capítulo 25 Introdução ao MySQL..................................................497O que torna o MySQL tão popular? ................................................................................ 497Flexibilidade ................................................................................................................... 498Capacidade .................................................................................................................... 499Opções flexíveis para licença ......................................................................................... 500Uma comunidade de usuários (hiper)ativa ..................................................................... 502A evolução do MySQL .................................................................................................... 502MySQL 4 ......................................................................................................................... 502MySQL 5.0 ...................................................................................................................... 503MySQL 5.1 ...................................................................................................................... 504Usuários famosos de MySQL .......................................................................................... 504craigslist ......................................................................................................................... 504Wikipedia ....................................................................................................................... 505Yahoo! Finance............................................................................................................... 505Resumo .......................................................................................................................... 505

Abertura.indd 16 07/01/2009 15:39:17

Page 17: PHP E MYSQL

SUMÁRIO xvii

■Capítulo 26 Instalando e configurando o MySQL .........................507Fazendo download do MySQL ........................................................................................ 507Fazendo download do MySQL para Windows ................................................................ 508Instalando o MySQL ....................................................................................................... 508Instalando MySQL no Linux ............................................................................................ 508Instalando e configurando o MySQL no Windows .......................................................... 512Configurando a senha de administrador do MySQL ....................................................... 515Iniciando e terminando o MySQL ................................................................................... 515Controlando o daemon manualmente ............................................................................ 515Iniciando e terminando o MySQL automaticamente ...................................................... 517Configurando e otimizando o MySQL ............................................................................. 520O wrapper mysqld_safe ................................................................................................. 520Os parâmetros de configuração e de otimização do MySQL .......................................... 520O arquivo my.cnf ............................................................................................................ 524Configurando o PHP para trabalhar com o MySQL ......................................................... 527Re-configurando o PHP no Linux .................................................................................... 527Re-configurando o PHP no Windows .............................................................................. 527Resumo .......................................................................................................................... 527

■Capítulo 27 Os vários clientes MySQL ............................................529Apresentando os clientes do tipo linha de comando ...................................................... 529O cliente mysql ............................................................................................................... 529O cliente mysqladmin ..................................................................................................... 540Outros clientes úteis ....................................................................................................... 541Opções dos clientes ........................................................................................................ 545Programas clientes do MySQL com GUI ......................................................................... 547Instalando GUI Tools ...................................................................................................... 548MySQL Administrator ..................................................................................................... 548MySQL Query Browser ................................................................................................... 549MySQL Migration Toolkit ................................................................................................ 550phpMyAdmin ................................................................................................................. 550Resumo .......................................................................................................................... 552

■Capítulo 28 Mecanismos de armazenamento e tipos de dados do MySQL ...........................................................................553

Mecanismos de armazenamento .................................................................................... 553MyISAM ......................................................................................................................... 554InnoDB ........................................................................................................................... 557MEMORY ........................................................................................................................ 557MERGE ........................................................................................................................... 559FEDERATED .................................................................................................................... 559ARCHIVE ........................................................................................................................ 560CSV ................................................................................................................................ 561EXAMPLE ....................................................................................................................... 561BLACKHOLE .................................................................................................................... 562FAQ sobre mecanismos de armazenamento ................................................................... 562Tipos de dados e atributos ............................................................................................. 563Tipos de dados ............................................................................................................... 564Atributos dos tipos de dados .......................................................................................... 570

Abertura.indd 17 07/01/2009 15:39:17

Page 18: PHP E MYSQL

Aprendendo PHP e MySQLxviii

Trabalhando com bancos de dados e tabelas ................................................................. 573Trabalhando com bancos de dados ................................................................................ 573Trabalhando com tabelas ............................................................................................... 575Alterando a estrutura de uma tabela ............................................................................. 579O INFORMATION_SCHEMA ............................................................................................ 579Resumo .......................................................................................................................... 582

■Capítulo 29 Garantindo a segurança no MySQL ...........................583O que você deve fazer primeiro ...................................................................................... 584Garantindo a segurança do daemon mysqld .................................................................. 585O sistema de privilégio de acesso do MySQL ................................................................. 585Como funciona o sistema de privilégios ......................................................................... 586Onde estão armazenadas as informações de acesso? .................................................... 587Gerenciamento de usuários e de privilégios ................................................................... 596Criando usuários ............................................................................................................ 597Apagando usuários ........................................................................................................ 597Renomeando usuários .................................................................................................... 598Os comandos GRANT e REVOKE .................................................................................... 598Visualizando os privilégios ............................................................................................. 603Limitando recursos do usuário ....................................................................................... 604Conexões MySQL seguras .............................................................................................. 605Opções de concessão ..................................................................................................... 605Opções de SSL ................................................................................................................ 606Iniciando o servidor MySQL habilitado com SSL ............................................................. 607Fazendo a conexão usando um cliente habilitado com SSL ............................................ 608Armazenando opções de SSL no arquivo my.cnf ............................................................ 608Resumo .......................................................................................................................... 609

■Capítulo 30 Usando PHP com MySQL .............................................611Lidando com os pré-requisitos para instalação .............................................................. 612Habilitando a extensão mysqli no Linux/Unix................................................................. 612Habilitando a extensão mysqli no Windows ................................................................... 612Administrando privilégios de usuários ........................................................................... 613Trabalhando com uma amostra de dados ...................................................................... 613Usando a extensão mysqli .............................................................................................. 613Estabelecendo e terminando a conexão ......................................................................... 614Lidando com erros de conexão ....................................................................................... 615Obtendo informações sobre erros .................................................................................. 615Armazenado informações de conexão em um arquivo separado ................................... 617Garantindo a segurança de suas informações de conexão ............................................. 617Interagindo com o banco de dados ................................................................................ 618Enviando uma query ao banco de dados ........................................................................ 618Fazendo análise dos resultados da query ....................................................................... 621Determinando as linhas selecionadas e as linhas afetadas ............................................ 623Trabalhando com prepared statements (instruções preparadas) .................................... 624Executando transações em banco de dados ................................................................... 629Habilitando o modo autocommit ................................................................................... 629Fazendo commit de uma transação ................................................................................ 630Fazendo rollback de uma transação ............................................................................... 630Resumo .......................................................................................................................... 630

Abertura.indd 18 07/01/2009 15:39:17

Page 19: PHP E MYSQL

SUMÁRIO xix

■Capítulo 31 Apresentando o PDO ...................................................631Outra camada de abstração de banco de dados? .......................................................... 632Usando PDO ................................................................................................................... 633Instalando o PDO ........................................................................................................... 633Opções de banco de dados do PDO ............................................................................... 634Conectando-se a um servidor de banco de dados e selecionando um banco de dados . 635Lidando com erros .......................................................................................................... 637Lendo e configurando atributos ..................................................................................... 639Executando queries ........................................................................................................ 640Apresentando prepared statements (instruções preparadas) ......................................... 642Lendo dados ................................................................................................................... 645Configurando as colunas para ligação ........................................................................... 648Trabalhando com transações .......................................................................................... 649Resumo .......................................................................................................................... 650

■Capítulo 32 Stored Routines (Rotinas armazenadas) ...................651Você deve usar stored routines? .................................................................................... 652Vantagens de stored routines ......................................................................................... 652Desvantagens de stored routines ................................................................................... 652Como o MySQL implementa stored routines .................................................................. 653Tabela de privilégios de stored routine ........................................................................... 653Criando uma stored routine ........................................................................................... 655Declarando e configurando variáveis ............................................................................. 658Executando uma stored routine ..................................................................................... 660Criando e usando stored routines com múltiplas instruções .......................................... 660Chamando uma rotina de dentro de outra rotina........................................................... 669Modificando uma stored routine .................................................................................... 670Apagando uma stored routine ....................................................................................... 670Vendo o status de uma rotina ........................................................................................ 670Vendo a sintaxe de criação de uma rotina ..................................................................... 671 Lidando com condições .................................................................................................. 672Integrando rotinas em aplicações Web .......................................................................... 672Criando a interface do bônus do funcionário ................................................................. 673Lendo múltiplas linhas ................................................................................................... 674Resumo .......................................................................................................................... 674

■Capítulo 33 Triggers do MySQL ......................................................675Apresentando os triggers ............................................................................................... 675Por que usar triggers? .................................................................................................... 676Executando a ação antes de um evento ......................................................................... 676Executando a ação depois de um evento ....................................................................... 676Trigger antes vs. trigger depois ....................................................................................... 678Suporte a trigger no MySQL ........................................................................................... 678Criando um trigger ......................................................................................................... 679Visualizando os triggers existentes ................................................................................ 680Modificando um trigger ................................................................................................. 682Apagando um trigger ..................................................................................................... 683Integrando triggers em aplicações Web ......................................................................... 683Resumo .......................................................................................................................... 684

Abertura.indd 19 07/01/2009 15:39:17

Page 20: PHP E MYSQL

Aprendendo PHP e MySQLxx

■Capítulo 34 Views do MySQL ..........................................................685Apresentando as views .................................................................................................. 686Suporte do MySQL às views ........................................................................................... 686Criando e executando views .......................................................................................... 686Visualizando informações da view ................................................................................. 693Modificando uma view ................................................................................................... 695Apagando uma view ...................................................................................................... 695Atualizando views .......................................................................................................... 695Incorporando views em aplicações Web ......................................................................... 696Resumo .......................................................................................................................... 698

■Capítulo 35 Queries de banco de dados na prática ......................699Dados de exemplo .......................................................................................................... 700Criando saída em forma de tabela com PEAR ................................................................ 700Instalando HTML_Table .................................................................................................. 701Criando uma tabela simples ........................................................................................... 701Criando uma saída com linha mais legível ..................................................................... 704Criando uma tabela a partir de dados do banco de dados ............................................. 704Tornando o processo de saída genérico ......................................................................... 706Ordenando a saída ......................................................................................................... 709Criando saída paginada ................................................................................................. 711Listando números de páginas......................................................................................... 714Fazendo queries em múltiplas tabelas com subqueries .................................................. 716Fazendo comparações com subqueries .......................................................................... 717Determinando a existência com subqueries ................................................................... 717Fazendo manutenção no banco de dados com subqueries ............................................. 719Usando subqueries com PHP .......................................................................................... 719Fazendo iteração em conjuntos de resultados com cursores .......................................... 719Básico sobre cursor ........................................................................................................ 720Criando um cursor .......................................................................................................... 721Abrindo um cursor ......................................................................................................... 721Usando um cursor .......................................................................................................... 721Fechando um cursor ....................................................................................................... 723Usando cursores com PHP .............................................................................................. 723Resumo .......................................................................................................................... 723

■Capítulo 36 Índices e buscas ...........................................................725Indexação de banco de dados ........................................................................................ 725Índices de chave primária ............................................................................................... 726Índices únicos ................................................................................................................. 727Índices normais .............................................................................................................. 728Índices full-text .............................................................................................................. 730As melhores práticas para indexação ............................................................................. 734Buscas baseadas em formulários ................................................................................... 734Executando uma busca simples...................................................................................... 734Estendendo as capacidades de buscas ........................................................................... 736Executando uma busca full-text ..................................................................................... 738Resumo .......................................................................................................................... 739

Abertura.indd 20 07/01/2009 15:39:17

Page 21: PHP E MYSQL

SUMÁRIO xxi

■Capítulo 37 Transações ....................................................................741O que é uma transação? ................................................................................................ 741As capacidades transacionais do MySQL ........................................................................ 742Requisitos do sistema .................................................................................................... 742Criação de tabela ........................................................................................................... 743Um exemplo de projeto .................................................................................................. 743Criando tabelas e adicionados uma amostra de dados .................................................. 744Executando uma transação de exemplo ......................................................................... 745Fazendo backup e recuperando tabelas InnoDB ............................................................. 746Dicas de uso ................................................................................................................... 747Construindo aplicações transacionais com PHP ............................................................. 747O mercado de trocas revisado ........................................................................................ 748Resumo .......................................................................................................................... 750

■Capítulo 38 Importando e exportando dados ...............................751Tabela de exemplo ......................................................................................................... 751Usando delimitação de dados ........................................................................................ 752Importando dados .......................................................................................................... 752Importando dados com LOAD DATA INFILE .................................................................... 753Importando dados com mysqlimport .............................................................................. 756Carregando dados de tabela com PHP ........................................................................... 759Exportando dados .......................................................................................................... 760SELECT INTO OUTFILE .................................................................................................... 761Resumo .......................................................................................................................... 764

Índice ............................................................................................................................ 765

Abertura.indd 21 07/01/2009 15:39:17

Page 22: PHP E MYSQL

Abertura.indd 22 07/01/2009 15:39:17

Page 23: PHP E MYSQL

■W. JASON GILMORE é um desenvolvedor, consultor, escritor e editor de Columbus, Ohio. Ele é co-fundador da IT Enlightenment (http://www.itenlightenment.com/) e da conferência CodeMash (http://www.codemash.org), e é um membro do conselho para seleção de palestrantes do 2008 MySQL Conference. Na sua função anterior como editor de código aberto da Apress, ele promoveu o desenvolvimento de mais de 60 livros, ajudando ao longo do caminho a transformar a linha de código aberto da Apress em um dos programas de publicação mais respeitados do mundo.

Jason possui mais de 100 artigos creditados a ele dentro de publicações famosas, tais como Developer.com, Linux Magazine e TechTarget. Ele é autor de vários livros, incluindo os best-sellers Dominando PHP e MySQL: Do Iniciante ao Profissional, Beginning PHP and PostgreSQL 8: From Novice to Professional (Aprendendo PHP e PostgreSQL 8: Do Iniciante ao Profissional) e Beginning PHP and Oracle: From Novice to Professional (Aprendendo PHP e Oracle: Do Iniciante ao Profissional).

Longe do laptop, você vai encontrar Jason iniciando mais projetos de reforma de casa do que ele poderia possivelmente terminar, tocando piano, jogando xadrez e lendo sobre história militar. Entre em contato com Jason através de [email protected], e certifique-se de visitar seu Web site em http://www.wjgilmore.com.

Sobre o autor

Abertura.indd 23 07/01/2009 15:39:18

Page 24: PHP E MYSQL

Abertura.indd 24 07/01/2009 15:39:18

Page 25: PHP E MYSQL

P or volta do ano 2000, Gary Cornell, co-fundador de uma editora pequena, porém ambiciosa sobre computação chamada Apress, entrou em contato comigo e perguntou se eu estaria interessado

em escrever um livro sobre PHP. Naquela época, como um desenvolvedor e um aspirante a escritor técnico, eu fiquei empolgado com a oportunidade, embora ficasse imaginando como eu seria capaz de terminar um projeto tão grande de escrita. Da mesma forma que correr uma primeira maratona, o sucesso foi medido simplesmente pelo mero fato de ter terminado, ao invés de qualquer outro meio de comparação.

Oito anos se passaram desde então, e aquele livro original continua vivo e atuante, sendo que sua encarnação atual é isto que você tem em mãos. Basta dizer que este projeto foi muito além de minhas maiores expectativas, e eu agradeço profundamente a Gary e a Apress (agora uma editora muito maior, mas ainda ambiciosa) pela oportunidade.

Gostaria de agradecer à minha gerente de projetos Tracy Brown Collins por sua infinita paciência e talentos organizacionais. Os revisores técnicos Jay Pipes e Matt Wade ofereceram idéias muito valiosas que melhoraram bastante o material. O copy editor Bill McManus mais uma vez provou sua habilidade aguçada ao transformar minhas escritas em inglês coerente. Todos os demais membros da equipe Apress também merecem um agradecimento por todo o trabalho duro por trás das cortinas.

Por último, mas não de forma menos importante, gostaria de agradecer à minha família e aos amigos por me lembrarem que ainda existe vida além do teclado.

Agradecimentos

Abertura.indd 25 07/01/2009 15:39:18

Page 26: PHP E MYSQL

Abertura.indd 26 07/01/2009 15:39:18

Page 27: PHP E MYSQL

Introdução

A maioria dos grandes livros sobre programação se desvia muito mais do mundo prático do que do acadêmico. Embora eu não tenha nenhuma ilusão em relação ao meu lugar entre os grandes

autores técnicos de nosso tempo, meu objetivo sempre foi escrever tendo este ponto em mente, produzindo material que você possa aplicar à sua própria situação. Dado o tamanho deste livro, provavelmente está claro que eu tentei espremer até a última gota desta praticidade em relação aos assuntos. Dito isto, se você estiver interessado em ter um aprendizado prático e abrangente sobre a linguagem de programação PHP e o servidor de banco de dados MySQL, e sobre como estas tecnologias proeminentes podem ser utilizadas em conjunto para criar aplicações Web dinâmicas, baseadas em banco de dados, este livro é para você.

O trabalho efervescente das respectivas comunidades de PHP e MySQL motivaram esta nova edição, e com ela, as mudanças consideráveis em relação à edição anterior. Além de atualizar o material para refletir os recursos que se encontram no PHP 6 e nas últimas versões de MySQL, dois novos capítulos foram adicionados. O Capítulo 23 mostra como criar Web sites para o mundo tirando vantagem de ferramentas de código aberto para internacionalização e localização. O Capítulo 24 apresenta o popular Zend Framework, uma ótima solução para construir aplicações Web poderosas. Além do mais, todos os capítulos existentes foram cuidadosamente revisados, e em alguns casos, profundamente modificados, tanto para atualizar como para fazer melhorias em relação ao material da edição anterior.

Se você é novo no PHP, eu recomendo começar pelo Capítulo 1 porque adquirir o conhecimento fundamental apresentado ali trará um benefício considerável quando você estiver lendo capítulos mais adiante. Se você conhece PHP, mas é novo no MySQL, considere começar pelo Capítulo 25. Leitores intermediários e avançados estão convidados a ficar pulando pelas partes conforme necessário; afinal de contas, este não é um romance. Independente de sua estratégia de leitura, eu tentei separar o material que se encontra em cada capítulo, de modo que você possa aprender rapidamente sobre cada tópico sem necessariamente ter que dominar outros capítulos além daqueles que se concentram nos fundamentos da tecnologia.

Além do mais, os desenvolvedores iniciantes e mais experientes de PHP e MySQL igualmente têm algo a ganhar com este livro, pois eu o organizei intencionalmente em um formato híbrido, de

Abertura.indd 27 07/01/2009 15:39:18

Page 28: PHP E MYSQL

tutorial e de referência. Eu aprecio o fato de você ter trocado seu dinheiro suado por este livro, e desta forma, me empenhei em apresentar o material de uma maneira que vai se provar ser útil não apenas das primeiras vezes que você consultá-lo, mas também lá no futuro.

Faça download do códigoFazer experiências com o código que se encontra neste livro é o meio mais eficiente para entender melhor os conceitos apresentados nele. Para sua conveniência, um arquivo zip contendo todos os exemplos pode ser baixado a partir de http://www.apress.com.

Entre em contato comigo!Eu adoro e-mail de leitores, e convido você a entrar em contato comigo para comentários, sugestões e perguntas. Sinta-se à vontade para mandar um e-mail para [email protected]. Certifique-se também de dar uma olhada regularmente em http://www.beginningphpandmysql.com para erratas, códigos e outras atualizações.

Abertura.indd 28 07/01/2009 15:39:18


Recommended