+ All Categories
Home > Documents > PHP E MYSQL

PHP E MYSQL

Date post: 02-Jul-2015
Category:
Author: rod-deville
View: 1,466 times
Download: 5 times
Share this document with a friend
Embed Size (px)
Popular Tags:
of 28 /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

Dominando PHP e MySQLDo Iniciante ao Profissional

W. Jason Gilmore

Rio de Janeiro. 2008

Abertura.indd 1

07/01/2009 15:39:16

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 autorizao prvia por escrito da editora, poder ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrnico, mecnico, fotogrfico, gravao ou quaisquer outros. Todo o esforo foi feito para fornecer a mais completa e adequada informao, contudo a editora e o(s) autor(es) no assumem responsabilidade pelos resultados e usos da informao fornecida. Recomendamos aos leitores testar a informao, bem como tomar todos os cuidados necessrios (como o backup), antes da efetiva utilizao. Este livro no contm CD-ROM, disquete ou qualquer outra mdia. Erratas e atualizaes: Sempre nos esforamos para entregar a voc, leitor, um livro livre de erros tcnicos ou de contedo; porm, nem sempre isso conseguido, seja por motivo de alterao de software, interpretao ou mesmo quando alguns deslizes constam na verso original de alguns livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seo Erratas, onde relataremos, com a devida correo, qualquer erro encontrado em nossos livros. Avisos e Renncia de Direitos: Este livro vendido como est, sem garantia de qualquer tipo, seja expressa ou implcita. Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial so de responsabilidade de seus proprietrios. A Editora informa no 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, no visando ao lucro, favorecimento ou desmerecimento do produto/fabricante. Produo Editorial: Starlin Alta Con. Com. Ltda Coordenao Editorial: Marcelo Utrine Traduo: Raquel Marques e Lcia Kinoshita Reviso: Flvia Barreto Reviso Tcnica: Juliana Barbosa Diagramao: Rosane Abel Fechamento: Rafael Conde Impresso no Brasil O cdigo de propriedade intelectual de 1 de Julho de 1992 probe expressamente o uso coletivo sem autorizao dos detentores do direito autoral da obra, bem como a cpia ilegal do original. Esta prtica generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de criarem novas obras.

Rua Viva Cludio, 291 Jacar Rio de Janeiro RJ. CEP: 20970-031 Tel: 21 3278-8069/ Fax: 3277-1253 site: www.altabooks.com.br e-mail: [email protected]

Abertura.indd 2

07/01/2009 15:39:16

Este dedicado a voc, Ruby!

Abertura.indd 3

07/01/2009 15:39:16

Abertura.indd 4

07/01/2009 15:39:16

Resumo do contedo

Sobre o autor ........................................................................................................................xxiii Agradecimentos ......................................................................................................................xxv Introduo.............................................................................................................................xxvii

Captulo 1 Introduo ao PHP........................................................................................01 Captulo 2 Configurando seu Ambiente ..........................................................................09 Captulo 3 Fundamentos do PHP ...................................................................................41 Captulo 4 Funes ........................................................................................................89 Captulo 5 Arrays .........................................................................................................101 Captulo 6 PHP Orientado a Objeto .............................................................................131 Captulo 7 Caractersticas OOP Avanadas ..................................................................155 Captulo 8 Gerenciamento de Erro e Exceo ..............................................................171 Captulo 9 Strings e Expresses Regulares..................................................................185 Captulo 10 Trabalhando com Arquivo e Sistema Operacional......................................223 Captulo 11 PEAR ........................................................................................................249 Captulo 12 Data e Hora ...............................................................................................261 Captulo 13 Formulrios ...............................................................................................281 Captulo 14 Autenticando Seus Usurios .....................................................................295

Abertura.indd 5

07/01/2009 15:39:16

vi

Aprendendo PHP e MySQL

Captulo 15 Captulo 16 Captulo 17 Captulo 18 Captulo 19 Captulo 20 Captulo 21 Captulo 22 Captulo 23 Captulo 24 Captulo 25 Captulo 26 Captulo 27 Captulo 28 Captulo 29 Captulo 30 Captulo 31 Captulo 32 Captulo 33 Captulo 34 Captulo 35 Captulo 36 Captulo 37 Captulo 38

Gerenciamento de Uploads de Arquivo ....................................................313 Networking (Rede de Comunicaes) ....................................................325 PHP e LDAP ............................................................................................345 Gerenciadores de Sesso.........................................................................361 Modelando com Smarty .........................................................................381 Web Services ...........................................................................................405 Programao PHP segura .......................................................................431 SQLite .....................................................................................................453 Construindo Web sites para o mundo .....................................................473 MVC e o Zend Framework .......................................................................481 Introduo ao MySQL ..............................................................................497 Instalando e configurando o MySQL .......................................................507 Os vrios clientes MySQL ........................................................................529 Mecanismos de armazenamento e tipos de dados do MySQL.................553 Garantindo a segurana no MySQL .........................................................583 Usando PHP com MySQL .........................................................................611 Apresentando o PDO ...............................................................................631 Stored Routines (Rotinas armazenadas) ..................................................651 Triggers do MySQL...................................................................................675 Views do MySQL.......................................................................................685 Queries de banco de dados na prtica .....................................................699 ndices e buscas .......................................................................................725 Transaes ...............................................................................................741 Importando e exportando dados .............................................................751

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

Abertura.indd 6

07/01/2009 15:39:16

Sumrio

Sobre o autor ............................................................................................................................ xxiii Agradecimentos .......................................................................................................................... xxv Introduo ............................................................................................................................... .xxvii

Captulo 1 Introduo ao PHP...........................................................01

Histria............................................................................................................................. 02 PHP 4 ............................................................................................................................... 02 PHP 5 ............................................................................................................................... 04 PHP 6 ............................................................................................................................... 04 Caractersticas Gerais da Linguagem ............................................................................... 05 Praticidade ....................................................................................................................... 05 Poder ................................................................................................................................ 06 Possibilidade .................................................................................................................... 07 Preo ................................................................................................................................ 07 Resumo ............................................................................................................................ 08

Captulo 2 Configurando seu Ambiente...........................................09

Pr-Requisitos de Instalao ............................................................................................ 10 Fazendo download do Apache ......................................................................................... 10 Fazendo download do PHP............................................................................................... 11 Obtendo a Documentao................................................................................................ 11 Fazendo download do Manual do Apache ....................................................................... 11 Fazendo download do Manual do PHP............................................................................. 12 Instalando Apache e PHP no Linux ................................................................................... 12 Instalando Apache e PHP no Windows ............................................................................. 14 Instalando IIS e PHP no Windows..................................................................................... 15 Instalando IIS e PHP ......................................................................................................... 16

Abertura.indd 7

07/01/2009 15:39:17

viii

Aprendendo PHP e MySQL

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

Captulo 3 Fundamentos do PHP ......................................................41

Embutindo o Cdigo PHP nas Suas Pginas Web ............................................................. 41 Sintaxe Padro ................................................................................................................. 42 Short-Tags ........................................................................................................................ 42 Script ................................................................................................................................ 43 ASP Style .......................................................................................................................... 43 Embutindo Mltiplos Blocos de Cdigo ........................................................................... 44 Comentando Seu Cdigo.................................................................................................. 44 Sintaxe C++ de Linha nica............................................................................................. 44 Sintaxe Shell..................................................................................................................... 45 Sintaxe C de Linhas Mltiplas .......................................................................................... 45 Mostrando Dados no Navegador ..................................................................................... 46 A funo print () ............................................................................................................... 46 A funo printf() ............................................................................................................... 47 A frase sprintf() ................................................................................................................ 49 Tipos de Dados Suportados pelo PHP ............................................................................... 49 Tipos de Dados Escalares ................................................................................................. 49 Tipos de Dados Compostos .............................................................................................. 50 Converso Entre Tipo de Dados Usando Type Casting ...................................................... 52 Adaptando Tipos de Dados com o Tipo Juggling .............................................................. 53 Funes Relacionadas ao Tipo .......................................................................................... 54 Funes do Identificador de Tipo ...................................................................................... 54 Identificadores ................................................................................................................. 55 Variveis........................................................................................................................... 56 Declarao de Varivel ..................................................................................................... 56 Escopo da Varivel ........................................................................................................... 58 Variveis Superglobais do PHP ......................................................................................... 61 Variveis de Varivel ........................................................................................................ 66 Constantes ....................................................................................................................... 66 Expresses ....................................................................................................................... 67 Operandos........................................................................................................................ 67 Operadores....................................................................................................................... 67 Interpolao de String ...................................................................................................... 74

Abertura.indd 8

07/01/2009 15:39:17

SUMRIO

ix

Aspas Duplas.................................................................................................................... 74 Aspas nicas .................................................................................................................... 75 Heredoc ............................................................................................................................ 75 Estruturas de Controle ..................................................................................................... 76 Expresses Condicionais .................................................................................................. 76 Expresses de Looping ..................................................................................................... 79 Expresses de Incluso de Arquivo................................................................................... 85 Resumo ............................................................................................................................ 88

Captulo 4 Funes.............................................................................89

Chamando uma Funo ................................................................................................... 89 Criando uma Funo ........................................................................................................ 90 Passando Argumentos por Valor ....................................................................................... 91 Passando Argumentos Por Referncia .............................................................................. 92 Valores Padres de Argumento ........................................................................................ 92 Retornando Valores a partir de uma Funo .................................................................... 93 Funes Recursivas .......................................................................................................... 95 Bibliotecas de Funo ...................................................................................................... 98 Resumo ............................................................................................................................ 99

Captulo 5 Arrays .............................................................................101

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

Abertura.indd 9

07/01/2009 15:39:17

x

Aprendendo PHP e MySQL

Unindo, Dividindo, Combinando e Dissecando Arrays .................................................... 122 Unindo Arrays................................................................................................................. 122 Anexando Arrays Recursivamente .................................................................................. 122 Combinando Dois Arrays ................................................................................................ 123 Dividindo um Array ........................................................................................................ 123 Combinando um Array ................................................................................................... 124 Calculando uma Interseo de Array .............................................................................. 125 Calculando Intersees de Array Associativos ................................................................ 125 Calculando Diferenas de Array...................................................................................... 126 Calculando Diferenas de Array Associativos ................................................................. 126 Outras funes teis Array ............................................................................................. 127 Retornando um Conjunto Aleatrio de Chaves .............................................................. 127 Embaralhando Elementos Array ..................................................................................... 127 Resumo .......................................................................................................................... 129

Captulo 6 PHP Orientado a Objeto................................................131

Os Benefcios de OOP..................................................................................................... 131 Encapsulamento ............................................................................................................. 132 Herana .......................................................................................................................... 132 Polimorfismo .................................................................................................................. 133 Conceitos Chave de OOP................................................................................................ 133 Classes ........................................................................................................................... 133 Objetos........................................................................................................................... 134 Campos .......................................................................................................................... 135 Propriedades .................................................................................................................. 138 Constantes ..................................................................................................................... 141 Mtodos ......................................................................................................................... 142 Construtores e Destruidores ........................................................................................... 146 Construtores................................................................................................................... 146 Destruidores ................................................................................................................... 149 Membros de Classe Estticos ......................................................................................... 150 A instncia da Palavra-Chave ......................................................................................... 151 Funes Auxiliares.......................................................................................................... 151 Autoloading de Objetos ................................................................................................. 153 Resumo .......................................................................................................................... 154

Captulo 7 Caractersticas OOP Avanadas....................................155

Caractersticas OOP avanadas No Suportadas pelo PHP............................................. 156 Clonagem de Objeto ...................................................................................................... 156 Exemplo de Clonagem ................................................................................................... 156 O mtodo __clone() ....................................................................................................... 158 Herana .......................................................................................................................... 159 Herana de Classe .......................................................................................................... 159 Herana e Construtores .................................................................................................. 161 Interfaces ....................................................................................................................... 163 Implementando uma nica Interface ............................................................................. 164 Implementando Interfaces Mltiplas .............................................................................. 166 Classes Abstratas ........................................................................................................... 166 Introduzindo Namespaces .............................................................................................. 167 Resumo .......................................................................................................................... 169

Abertura.indd 10

07/01/2009 15:39:17

SUMRIO

xi

Captulo 8 Gerenciamento de Erro e Exceo ...............................171

Diretrizes de configurao ............................................................................................. 172 Logar Erros ..................................................................................................................... 174 Gerenciamento de exceo ............................................................................................ 177 Por que Gerenciamento de exceo til ...................................................................... 177 Implementao de Gerenciamento de Exceo do PHP ................................................. 179 Resumo .......................................................................................................................... 184

Captulo 9 Strings e Expresses Regulares ...................................185

Expresses Regulares ..................................................................................................... 185 Sintaxe das Expresses Regulares (POSIX) ..................................................................... 186 Funes de Expresso Regular do PHP (POSIX Estendido) ............................................. 188 Sintaxe de expresso Regular (Perl) ............................................................................... 192 Outras Funes Especficas do String ............................................................................. 199 Determinando o Comprimento de uma String ................................................................ 199 Comparando Duas Strings .............................................................................................. 199 Manipulando Cases de String......................................................................................... 202 Convertendo Strings para e a partir do HTML ................................................................ 203 Alternativas para as funes de expresso Regular ....................................................... 208 Preenchendo e Esvaziando uma String........................................................................... 215 Contando Caracteres e Palavras ..................................................................................... 216 Tirando Vantagem de PEAR: Validate_US ....................................................................... 219 Instalando Validate_US .................................................................................................. 219 Usando Validate_US ....................................................................................................... 220 Resumo .......................................................................................................................... 221

Captulo 10 Trabalhando com Arquivo e Sistema Operacional ...223

Aprendendo Sobre Arquivos e Diretrios........................................................................ 224 Analisando Caminhos de Diretrio ................................................................................. 224 Calculando Tamanhos de Arquivo, Diretrio e Disco....................................................... 226 Determinando Horrios de Acesso e Modificao .......................................................... 228 Trabalhando com Arquivos ............................................................................................. 230 O Conceito de um Recurso ............................................................................................. 230 Reconhecendo Caracteres Newline ................................................................................ 230 Reconhecendo o Caractere End-of-Line.......................................................................... 230 Abrindo e Fechando um Arquivo .................................................................................... 231 Lendo a partir de um Arquivo ......................................................................................... 232 Escrevendo uma String em um Arquivo .......................................................................... 239 Movendo o Ponteiro do Arquivo..................................................................................... 239 Lendo Contedos do Diretrio ....................................................................................... 240 Executando Comandos Shell .......................................................................................... 241 Execuo de Programa a Nvel do Sistema .................................................................... 243 Desinfetando o Input...................................................................................................... 243 Funes de Execuo de Programa do PHP .................................................................... 245 Resumo .......................................................................................................................... 247

Captulo 11 PEAR .............................................................................249

Pacotes PEAR Populares ................................................................................................. 249 Pacotes Pr-Instalados ................................................................................................... 249

Abertura.indd 11

07/01/2009 15:39:17

xii

Aprendendo PHP e MySQL

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

Captulo 12 Data e Hora ..................................................................261

O Timestamp Unix .......................................................................................................... 261 Biblioteca de Data e Hora do PHP .................................................................................. 262 Validando Datas ............................................................................................................. 262 Formatando Datas e Horas ............................................................................................. 263 Convertendo um Timestamp para Valores Amigveis ..................................................... 266 Trabalhando com Timestamps ........................................................................................ 268 Date Fu........................................................................................................................... 269 Exibindo a Data e Horrios Localizados ......................................................................... 269 Exibindo a Data Mais Recente de Modificao da Pgina Web ...................................... 273 Determinando o Nmero de Dias do Ms Atual ............................................................. 273 Determinando o Nmero de Dias em Qualquer Ms ...................................................... 274 Calculando Data X Dias a partir da Data Atual .............................................................. 274 Tirando Vantagem do PEAR: Criando um Calendrio ..................................................... 275 Melhorias de Data e Hora para Usurios do PHP 5.1+................................................... 278 Introduzindo o Construtor DateTime .............................................................................. 278 Formatando Datas .......................................................................................................... 279 Configurando a Data Depois da Instanciao ................................................................ 279 Configurando a Hora Depois da Instanciao ................................................................ 279 Modificando Datas e Horrios ........................................................................................ 280 Resumo .......................................................................................................................... 280

Captulo 13 Formulrios ..................................................................281

PHP e Formulrios Web .................................................................................................. 281 Um Exemplo Simples...................................................................................................... 282 Passando Dados de Formulrio a uma Funo ............................................................... 283 Trabalhando Com Componentes de Formulrio de Mltiplos Valores ............................ 285 Tirando Vantagem do PEAR: HTML_QuickForm .............................................................. 286 Installing HTML_QuickForm ........................................................................................... 287 Criando um Formulrio Simples ..................................................................................... 287 Usando Auto-Complete .................................................................................................. 292 Resumo .......................................................................................................................... 294

Abertura.indd 12

07/01/2009 15:39:17

SUMRIO

xiii

Captulo 14 Autenticando Seus Usurios .......................................295

Conceitos de Autenticao de HTTP ............................................................................... 295 Autenticao do PHP...................................................................................................... 296 Variveis de Autenticao .............................................................................................. 296 Funes teis ................................................................................................................. 297 Metodologias de Autenticao do PHP .......................................................................... 298 Autenticao Hard-Coded .............................................................................................. 299 Autenticao Baseada em Arquivo................................................................................. 299 Autenticao Baseada em Banco de Dados ................................................................... 301 Autenticao Baseada em IP .......................................................................................... 303 Tirando Vantagem do PEAR: Auth_HTTP ........................................................................ 304 Administrao de Login de Usurio................................................................................ 307 Testando a Guessability da Senha com a Biblioteca CrackLib ........................................ 307 URLs de Acesso nico e Recuperao de Senha ............................................................ 310 Resumo .......................................................................................................................... 312

Captulo 15 Gerenciamento de Uploads de Arquivo ....................313

Upload de Arquivos Atravs do HTTP ............................................................................. 313 Enviando Arquivos ao Servidor com PHP........................................................................ 314 Upload de Arquivo do PHP/ Diretrizes de Recurso .......................................................... 314 O array $_FILES .............................................................................................................. 316 Funes de Upload de Arquivo do PHP .......................................................................... 316 Mensagens de Erro de Upload ....................................................................................... 318 Um Exemplo Simples...................................................................................................... 318 Tirando Vantagem de PEAR: HTTP_Upload .................................................................... 320 Instalando HTTP_Upload................................................................................................ 320 Enviando um Arquivo ..................................................................................................... 320 Aprendendo Mais Sobre um Arquivo Enviado ................................................................ 321 Enviando Mltiplos Arquivos .......................................................................................... 322 Resumo .......................................................................................................................... 323

Captulo 16 Networking (Rede de Comunicaes) .......................325

DNS, Servios e Servidores ............................................................................................. 326 DNS ................................................................................................................................ 326 Servios .......................................................................................................................... 330 Estabelecendo Conexes Socket .................................................................................... 331 Mail ................................................................................................................................ 333 Diretrizes de Configurao ............................................................................................. 333 Enviando Email Usando um Script PHP .......................................................................... 334 Tarefas Comuns de Networking ..................................................................................... 339 Pingando em um Servidor .............................................................................................. 339 Criando um Scanner de Porta ......................................................................................... 340 Criando um Conversor de Subrede ................................................................................. 341 Testando a Largura da Banda do Usurio....................................................................... 342 Resumo .......................................................................................................................... 344

Captulo 17 PHP e LDAP...................................................................345

Usando LDAP a partir do PHP ........................................................................................ 346 Conectando-se a um servidor LDAP ............................................................................... 347

Abertura.indd 13

07/01/2009 15:39:17

xiv

Aprendendo PHP e MySQL

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

Captulo 18 Gerenciadores de Sesso ............................................361

O que Gerenciamento de Sesso? ............................................................................... 361 O Processo de Gerenciamento de Sesso ....................................................................... 362 Diretrizes de Configurao ............................................................................................. 363 Gerenciando a Mdia de Armazenamento da Sesso ..................................................... 363 Configurando o Caminho de Arquivos da Sesso ........................................................... 364 Ativando Sesses Automaticamente .............................................................................. 364 Configurando o Nome da sesso ................................................................................... 364 Escolhendo Cookies ou Reescrevendo URL .................................................................... 364 Automatizando a Reescrita de URL ................................................................................ 365 Configurando o Tempo de Vida do Cookie de Sesso ..................................................... 365 Configurando o Caminho de URL Vlido do Cookie de Sesso....................................... 365 Configurando Direes de Armazenamento Temporrio para Pginas Ativadas por Sesso .................................................................................................................. 366 Trabalhando com Sesses .............................................................................................. 367 Iniciando uma Sesso..................................................................................................... 367 Destruindo uma Sesso .................................................................................................. 367 Configurando e Recuperando o ID da Sesso................................................................. 368 Criando e Deletando Variveis de Sesso ....................................................................... 368 Codificando e Decodificando Dados de Sesso .............................................................. 369 Exemplos Prticos de Gerenciamento ............................................................................ 371 Fazendo Automaticamente o Login de Usurios que Retornam ..................................... 371 Gerando um ndice de Documento Visualizado Recentemente ...................................... 373 Criando Gerenciadores de Sesso Personalizados .......................................................... 374 Unindo as Funes de Sesso Personalizadas Lgica do PHP...................................... 375 Usando Gerenciadores Personalizados de Sesso Baseados em MySQL ........................ 376 Resumo .......................................................................................................................... 379

Captulo 19 Modelando com Smarty .............................................381

O que uma Ferramenta de Modelagem? ..................................................................... 381 Introduzindo Smarty ....................................................................................................... 383 Instalando Smarty .......................................................................................................... 384 Usando Smarty ............................................................................................................... 385 Lgica de Apresentao do Smarty ................................................................................ 387 Comentrios ................................................................................................................... 387 Modificadores de Varivel .............................................................................................. 388 Estruturas de Controle ................................................................................................... 390 Expresses ..................................................................................................................... 395 Criando Arquivos de Configurao ................................................................................. 397 config_load .................................................................................................................... 398

Abertura.indd 14

07/01/2009 15:39:17

SUMRIO

xv

Referenciando Variveis de Configurao ...................................................................... 398 Usando CSS em Conjunto com Smarty ........................................................................... 399 Caching .......................................................................................................................... 400 Trabalhando com o Tempo de Vida do Cache ................................................................. 401 Eliminando Problemas de Processamento com is_cached() ........................................... 402 Criando Mltiplos Caches por Modelo ........................................................................... 402 Algumas Palavras Finais Sobre Caching ......................................................................... 403 Resumo .......................................................................................................................... 403

Captulo 20 Web Services ................................................................405

Porque Web Services? .................................................................................................... 405 Really Simple Syndication .............................................................................................. 407 Entendendo a Sintaxe RSS ............................................................................................. 409 Introduzindo MagpieRSS ................................................................................................ 410 SimpleXML ..................................................................................................................... 417 Carregando XML ............................................................................................................ 418 Interpretando XML ......................................................................................................... 419 SOAP .............................................................................................................................. 422 Introduzindo Mensagens SOAP ...................................................................................... 423 Introduzindo a Extenso SOAP do PHP .......................................................................... 424 Resumo .......................................................................................................................... 430

Captulo 21 Programao PHP segura ...........................................431

Configurando o PHP de forma segura ............................................................................ 432 Modo seguro (Safe mode) .............................................................................................. 432 Outros parmetros de configurao relacionados com segurana ................................. 434 Ocultando os detalhes da configurao ......................................................................... 436 Ocultando o Apache ....................................................................................................... 436 Ocultando o PHP ............................................................................................................ 437 Ocultando dados confidenciais ...................................................................................... 438 Ocultando a raiz dos documentos .................................................................................. 439 Impedindo o acesso a determinadas extenses de arquivo............................................ 439 Fazendo uma limpeza nos dados de usurio .................................................................. 440 Apagando arquivos ........................................................................................................ 440 Cross-site scripting ......................................................................................................... 440 Fazer limpeza nos dados de entrada dos usurios: a soluo......................................... 442 Tirando vantagem de PEAR: Validate ............................................................................. 444 Criptografia dos dados ................................................................................................... 446 Funes de criptografia do PHP ..................................................................................... 446 O pacote MCrypt ............................................................................................................ 448 Resumo .......................................................................................................................... 450

Captulo 22 SQLite ...........................................................................453

Introduo ao SQLite...................................................................................................... 453 Instalando o SQLite ........................................................................................................ 454 Usando a interface de linha de comando do SQLite ....................................................... 454 A biblioteca SQLite do PHP ............................................................................................ 456 sqlite.assoc_case = 0 | 1 | 2 ........................................................................................... 456 Abrindo uma conexo .................................................................................................... 456

Abertura.indd 15

07/01/2009 15:39:17

xvi

Aprendendo PHP e MySQL

Criando uma tabela em memria ................................................................................... 457 Fechando uma conexo.................................................................................................. 458 Fazendo queries em um banco de dados........................................................................ 458 Fazendo anlise dos conjuntos de resultados................................................................. 460 Obtendo detalhes do conjunto de resultados ................................................................. 463 Manipulando o ponteiro do conjunto de resultados ...................................................... 465 Obtendo os tipos das colunas de uma tabela................................................................. 467 Trabalhando com dados binrios.................................................................................... 468 Criando e sobrescrevendo funes SQLite ...................................................................... 469 Criando funes de agregao ....................................................................................... 470 Resumo .......................................................................................................................... 472

Captulo 23 Construindo Web sites para o mundo .......................473

Traduzindo seus Web sites com Gettext ......................................................................... 473 Passo 1: Atualize os scripts do Web site ......................................................................... 474 Passo 2: Crie o repositrio de localizao....................................................................... 475 Passo 3: Crie os arquivos para traduo ......................................................................... 476 Passo 4: Traduza o texto ................................................................................................. 477 Passo 5: Gere os arquivos binrios ................................................................................. 477 Passo 6: Configure o idioma desejado dentro de seus scripts ........................................ 478 Localizando datas, nmeros e horas .............................................................................. 478 Resumo .......................................................................................................................... 480

Captulo 24 MVC e o Zend Framework ..........................................481

Apresentando o MVC ..................................................................................................... 481 Solues de framework do PHP...................................................................................... 483 O CakePHP Framework................................................................................................... 484 O Solar Framework ......................................................................................................... 484 O symfony Framework.................................................................................................... 484 O Zend Framework ......................................................................................................... 485 Apresentando o Zend Framework .................................................................................. 485 Fazendo download e instalando o Zend Framework ...................................................... 487 Criando seu primeiro Web site baseado em Zend Framework ........................................ 488 Fazendo buscas na Web com Zend_Service_Yahoo ........................................................ 493 Resumo .......................................................................................................................... 495

Captulo 25 Introduo ao MySQL..................................................497

O que torna o MySQL to popular? ................................................................................ 497 Flexibilidade ................................................................................................................... 498 Capacidade .................................................................................................................... 499 Opes flexveis para licena ......................................................................................... 500 Uma comunidade de usurios (hiper)ativa ..................................................................... 502 A evoluo do MySQL .................................................................................................... 502 MySQL 4 ......................................................................................................................... 502 MySQL 5.0 ...................................................................................................................... 503 MySQL 5.1 ...................................................................................................................... 504 Usurios famosos de MySQL .......................................................................................... 504 craigslist ......................................................................................................................... 504 Wikipedia ....................................................................................................................... 505 Yahoo! Finance............................................................................................................... 505 Resumo .......................................................................................................................... 505

Abertura.indd 16

07/01/2009 15:39:17

SUMRIO

xvii

Captulo 26 Instalando e configurando o MySQL .........................507

Fazendo download do MySQL ........................................................................................ 507 Fazendo download do MySQL para Windows ................................................................ 508 Instalando o MySQL ....................................................................................................... 508 Instalando MySQL no Linux ............................................................................................ 508 Instalando e configurando o MySQL no Windows .......................................................... 512 Configurando a senha de administrador do MySQL ....................................................... 515 Iniciando e terminando o MySQL ................................................................................... 515 Controlando o daemon manualmente............................................................................ 515 Iniciando e terminando o MySQL automaticamente ...................................................... 517 Configurando e otimizando o MySQL............................................................................. 520 O wrapper mysqld_safe ................................................................................................. 520 Os parmetros de configurao e de otimizao do MySQL .......................................... 520 O arquivo my.cnf ............................................................................................................ 524 Configurando o PHP para trabalhar com o MySQL......................................................... 527 Re-configurando o PHP no Linux .................................................................................... 527 Re-configurando o PHP no Windows .............................................................................. 527 Resumo .......................................................................................................................... 527

Captulo 27 Os vrios clientes MySQL............................................529

Apresentando os clientes do tipo linha de comando ...................................................... 529 O cliente mysql............................................................................................................... 529 O cliente mysqladmin ..................................................................................................... 540 Outros clientes teis....................................................................................................... 541 Opes dos clientes........................................................................................................ 545 Programas clientes do MySQL com GUI ......................................................................... 547 Instalando GUI Tools ...................................................................................................... 548 MySQL Administrator ..................................................................................................... 548 MySQL Query Browser ................................................................................................... 549 MySQL Migration Toolkit ................................................................................................ 550 phpMyAdmin ................................................................................................................. 550 Resumo .......................................................................................................................... 552

Captulo 28 Mecanismos de armazenamento e tipos de dados do

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

MySQL ...........................................................................553

Abertura.indd 17

07/01/2009 15:39:17

xviii

Aprendendo PHP e MySQL

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

Captulo 29 Garantindo a segurana no MySQL ...........................583

O que voc deve fazer primeiro...................................................................................... 584 Garantindo a segurana do daemon mysqld .................................................................. 585 O sistema de privilgio de acesso do MySQL ................................................................. 585 Como funciona o sistema de privilgios ......................................................................... 586 Onde esto armazenadas as informaes de acesso? .................................................... 587 Gerenciamento de usurios e de privilgios ................................................................... 596 Criando usurios ............................................................................................................ 597 Apagando usurios ........................................................................................................ 597 Renomeando usurios .................................................................................................... 598 Os comandos GRANT e REVOKE .................................................................................... 598 Visualizando os privilgios ............................................................................................. 603 Limitando recursos do usurio ....................................................................................... 604 Conexes MySQL seguras .............................................................................................. 605 Opes de concesso ..................................................................................................... 605 Opes de SSL ................................................................................................................ 606 Iniciando o servidor MySQL habilitado com SSL ............................................................. 607 Fazendo a conexo usando um cliente habilitado com SSL ............................................ 608 Armazenando opes de SSL no arquivo my.cnf ............................................................ 608 Resumo .......................................................................................................................... 609

Captulo 30 Usando PHP com MySQL .............................................611

Lidando com os pr-requisitos para instalao .............................................................. 612 Habilitando a extenso mysqli no Linux/Unix................................................................. 612 Habilitando a extenso mysqli no Windows ................................................................... 612 Administrando privilgios de usurios ........................................................................... 613 Trabalhando com uma amostra de dados ...................................................................... 613 Usando a extenso mysqli.............................................................................................. 613 Estabelecendo e terminando a conexo ......................................................................... 614 Lidando com erros de conexo....................................................................................... 615 Obtendo informaes sobre erros .................................................................................. 615 Armazenado informaes de conexo em um arquivo separado ................................... 617 Garantindo a segurana de suas informaes de conexo............................................. 617 Interagindo com o banco de dados ................................................................................ 618 Enviando uma query ao banco de dados........................................................................ 618 Fazendo anlise dos resultados da query ....................................................................... 621 Determinando as linhas selecionadas e as linhas afetadas ............................................ 623 Trabalhando com prepared statements (instrues preparadas) .................................... 624 Executando transaes em banco de dados ................................................................... 629 Habilitando o modo autocommit ................................................................................... 629 Fazendo commit de uma transao ................................................................................ 630 Fazendo rollback de uma transao ............................................................................... 630 Resumo .......................................................................................................................... 630

Abertura.indd 18

07/01/2009 15:39:17

SUMRIO

xix

Captulo 31 Apresentando o PDO ...................................................631

Outra camada de abstrao de banco de dados? .......................................................... 632 Usando PDO ................................................................................................................... 633 Instalando o PDO ........................................................................................................... 633 Opes de banco de dados do PDO ............................................................................... 634 Conectando-se a um servidor de banco de dados e selecionando um banco de dados . 635 Lidando com erros.......................................................................................................... 637 Lendo e configurando atributos ..................................................................................... 639 Executando queries ........................................................................................................ 640 Apresentando prepared statements (instrues preparadas) ......................................... 642 Lendo dados ................................................................................................................... 645 Configurando as colunas para ligao ........................................................................... 648 Trabalhando com transaes .......................................................................................... 649 Resumo .......................................................................................................................... 650

Captulo 32 Stored Routines (Rotinas armazenadas) ...................651

Voc deve usar stored routines? .................................................................................... 652 Vantagens de stored routines......................................................................................... 652 Desvantagens de stored routines ................................................................................... 652 Como o MySQL implementa stored routines .................................................................. 653 Tabela de privilgios de stored routine........................................................................... 653 Criando uma stored routine ........................................................................................... 655 Declarando e configurando variveis ............................................................................. 658 Executando uma stored routine ..................................................................................... 660 Criando e usando stored routines com mltiplas instrues .......................................... 660 Chamando uma rotina de dentro de outra rotina........................................................... 669 Modificando uma stored routine .................................................................................... 670 Apagando uma stored routine ....................................................................................... 670 Vendo o status de uma rotina ........................................................................................ 670 Vendo a sintaxe de criao de uma rotina ..................................................................... 671 Lidando com condies .................................................................................................. 672 Integrando rotinas em aplicaes Web .......................................................................... 672 Criando a interface do bnus do funcionrio ................................................................. 673 Lendo mltiplas linhas ................................................................................................... 674 Resumo .......................................................................................................................... 674

Captulo 33 Triggers do MySQL ......................................................675

Apresentando os triggers ............................................................................................... 675 Por que usar triggers? .................................................................................................... 676 Executando a ao antes de um evento ......................................................................... 676 Executando a ao depois de um evento ....................................................................... 676 Trigger antes vs. trigger depois....................................................................................... 678 Suporte a trigger no MySQL ........................................................................................... 678 Criando um trigger ......................................................................................................... 679 Visualizando os triggers existentes ................................................................................ 680 Modificando um trigger ................................................................................................. 682 Apagando um trigger ..................................................................................................... 683 Integrando triggers em aplicaes Web ......................................................................... 683 Resumo .......................................................................................................................... 684

Abertura.indd 19

07/01/2009 15:39:17

xx

Aprendendo PHP e MySQL

Captulo 34 Views do MySQL ..........................................................685

Apresentando as views .................................................................................................. 686 Suporte do MySQL s views ........................................................................................... 686 Criando e executando views .......................................................................................... 686 Visualizando informaes da view ................................................................................. 693 Modificando uma view................................................................................................... 695 Apagando uma view ...................................................................................................... 695 Atualizando views .......................................................................................................... 695 Incorporando views em aplicaes Web......................................................................... 696 Resumo .......................................................................................................................... 698

Captulo 35 Queries de banco de dados na prtica ......................699

Dados de exemplo.......................................................................................................... 700 Criando sada em forma de tabela com PEAR ................................................................ 700 Instalando HTML_Table.................................................................................................. 701 Criando uma tabela simples ........................................................................................... 701 Criando uma sada com linha mais legvel ..................................................................... 704 Criando uma tabela a partir de dados do banco de dados ............................................. 704 Tornando o processo de sada genrico ......................................................................... 706 Ordenando a sada ......................................................................................................... 709 Criando sada paginada ................................................................................................. 711 Listando nmeros de pginas......................................................................................... 714 Fazendo queries em mltiplas tabelas com subqueries .................................................. 716 Fazendo comparaes com subqueries .......................................................................... 717 Determinando a existncia com subqueries ................................................................... 717 Fazendo manuteno no banco de dados com subqueries............................................. 719 Usando subqueries com PHP .......................................................................................... 719 Fazendo iterao em conjuntos de resultados com cursores .......................................... 719 Bsico sobre cursor ........................................................................................................ 720 Criando um cursor .......................................................................................................... 721 Abrindo um cursor ......................................................................................................... 721 Usando um cursor .......................................................................................................... 721 Fechando um cursor ....................................................................................................... 723 Usando cursores com PHP .............................................................................................. 723 Resumo .......................................................................................................................... 723

Captulo 36 ndices e buscas ...........................................................725

Indexao de banco de dados ........................................................................................ 725 ndices de chave primria............................................................................................... 726 ndices nicos................................................................................................................. 727 ndices normais .............................................................................................................. 728 ndices full-text .............................................................................................................. 730 As melhores prticas para indexao ............................................................................. 734 Buscas baseadas em formulrios ................................................................................... 734 Executando uma busca simples...................................................................................... 734 Estendendo as capacidades de buscas ........................................................................... 736 Executando uma busca full-text ..................................................................................... 738 Resumo .......................................................................................................................... 739

Abertura.indd 20

07/01/2009 15:39:17

SUMRIO

xxi

Captulo 37 Transaes ....................................................................741

O que uma transao? ................................................................................................ 741 As capacidades transacionais do MySQL........................................................................ 742 Requisitos do sistema .................................................................................................... 742 Criao de tabela ........................................................................................................... 743 Um exemplo de projeto .................................................................................................. 743 Criando tabelas e adicionados uma amostra de dados .................................................. 744 Executando uma transao de exemplo ......................................................................... 745 Fazendo backup e recuperando tabelas InnoDB ............................................................. 746 Dicas de uso ................................................................................................................... 747 Construindo aplicaes transacionais com PHP ............................................................. 747 O mercado de trocas revisado ........................................................................................ 748 Resumo .......................................................................................................................... 750

Captulo 38 Importando e exportando dados...............................751

Tabela de exemplo ......................................................................................................... 751 Usando delimitao de dados ........................................................................................ 752 Importando dados .......................................................................................................... 752 Importando dados com LOAD DATA INFILE.................................................................... 753 Importando dados com mysqlimport.............................................................................. 756 Carregando dados de tabela com PHP ........................................................................... 759 Exportando dados .......................................................................................................... 760 SELECT INTO OUTFILE .................................................................................................... 761 Resumo .......................................................................................................................... 764

ndice ............................................................................................................................ 765

Abertura.indd 21

07/01/2009 15:39:17

Abertura.indd 22

07/01/2009 15:39:17

Sobre o autor

W. JASON GILMORE um desenvolvedor, consultor, escritor e editor de Columbus, Ohio. Ele co-fundador da IT Enlightenment (http://www.itenlightenment.com/) e da conferncia CodeMash (http://www.codemash.org), e um membro do conselho para seleo de palestrantes do 2008 MySQL Conference. Na sua funo anterior como editor de cdigo aberto da Apress, ele promoveu o desenvolvimento de mais de 60 livros, ajudando ao longo do caminho a transformar a linha de cdigo aberto da Apress em um dos programas de publicao mais respeitados do mundo.Jason possui mais de 100 artigos creditados a ele dentro de publicaes famosas, tais como Developer.com, Linux Magazine e TechTarget. Ele autor de vrios 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 histria militar. Entre em contato com Jason atravs de [email protected], e certifique-se de visitar seu Web site em http:// www.wjgilmore.com.

Abertura.indd 23

07/01/2009 15:39:18

Abertura.indd 24

07/01/2009 15:39:18

Agradecimentos

P

or volta do ano 2000, Gary Cornell, co-fundador de uma editora pequena, porm ambiciosa sobre computao chamada Apress, entrou em contato comigo e perguntou se eu estaria interessado em escrever


Recommended