1 O PHP e a World Wide Web... XXXIII 1.1 Introdução... XXXIII 1.2 Breve apresentação do PHP... 1 1.3 Acesso a documentos na web... 1 1.4 HTML estático versus HTML dinâmico... 2 1.5 PHP, o que é?... 4 1.6 O PHP e o HTML... 6 2 Funcionamento do PHP... 15 2.1 Introdução... 15 2.2 História do PHP... 15 2.3 Arquitectura e funcionamento... 17 2.4 Características do PHP... 19 2.5 Potencialidades do PHP... 19 2.6 PHP, CGI, Perl e ASP... 20 3 O PHP4 / Zend... 25 3.1 Utilização do PHP... 25 3.2 A arquitectura do PHP4... 28 3.3 Optimização... 29 3.3.1 O PHP versus ASP... 30 3.4 Novas Funcionalidades... 30 3.4.1 Sessões... 31 3.4.2 Suporte de FTP... 32 3.4.3 Perl Compatible Regular Expressions... 33 3.4.4 Java... 33 3.4.5 Listagem das funcionalidades do PHP4... 34 3.5 Outras considerações sobre o PHP4... 37 4 Instalação e configuração do PHP... 39 4.1 Instalação do PHP... 39 4.2 Como obter o software PHP... 41 4.3 Instalação em sistemas Windows,,... 42 4.3.1 Instalação do PHP... 42 4.3.2 Apache web server 1.3.x... 44 4.3.3 OmniHTTPd Pro 2.0... 44 4.3.4 Microsoft IIS (4.x e 5) e PWS 4 (Personal Web Server)... 46 4.3.4.1 Windows e PWS 4... 46 FCA - EDITORA DE INFORMÁTICA I
Programação com PHP4 4.3.4.2 Windows NT/2000 and IIS 4/5... 47 4.4 Instalação em sistemas Unix... 50 4.4.1 Apache Web Server 1.3.x... 50 4.5 A configuração do PHP... 51 4.5.1 O ficheiro de configuração PHP.INI... 52 4.5.2 Directivas gerais de configuração... 63 4.5.2.1 auto_apend_file texto... 63 4.5.2.2 auto_prepend_file texto... 63 4.5.2.3 display_errors lógico... 63 4.5.2.4 doc_root texto... 63 4.5.2.5 error_log texto... 64 4.5.2.6 error_reporting número... 64 4.5.2.7 open_basedir texto... 64 4.5.2.8 gpc_order texto... 64 4.5.2.9 ignore_user_abort texto... 65 4.5.2.10 include_path texto... 65 4.5.2.11 max_execution_time número... 65 4.5.2.12 memory_limit número... 65 4.5.2.13 short_open_tag lógico... 65 4.5.2.14 track_errors lógico... 65 4.5.2.15 track_vars lógico... 65 4.5.2.16 upload_tmp_dir texto... 66 4.5.2.17 user_dir texto... 66 4.5.3 Directivas de configuração do e-mail... 66 4.5.3.1 SMTP texto... 66 4.5.3.2 sendmail_from texto... 66 4.5.3.3 sendmail_path texto... 66 4.5.4 Directivas de configuração em modo seguro... 66 4.5.4.1 safe_mode lógico... 66 4.5.4.2 safe_mode_exec_dir texto... 67 4.5.5 Outras directivas de configuração... 67 4.6 Verificar a actual instalação e configuração... 67 5 A estrutura e Sintaxe do PHP... 72 5.1 Semelhanças com outras linguagens... 72 5.2 Introduzir o código PHP no HTML... 72 5.3 Separação de instruções... 73 5.4 Utilização de comentários... 74 5.5 Tipos de dados... 75 5.5.1 Números inteiros... 75 II FCA - EDITORA DE INFORMÁTICA
Índice 5.5.2 Números de vírgula flutuante... 75 5.5.3 Cadeias de caracteres (Strings)... 76 5.5.3.1 Conversão de strings... 77 5.5.4 Arrays... 77 5.5.4.1 Arrays de uma só dimensão... 78 5.5.4.2 Arrays multidimensionais... 78 5.5.5 Objectos... 79 5.5.5.1 Inicialização de objectos... 79 5.6 Variáveis... 79 5.6.1 Escopo das variáveis... 79 5.6.2 Nomes de variáveis dinâmicos... 81 5.6.3 Variáveis externas ao PHP... 82 5.6.3.1 Formulários HTML (através de POST e GET)... 82 5.6.4 Variáveis através de cookies... 83 5.6.5 Variáveis de ambiente... 83 5.7 Constantes... 84 5.8 Operadores... 85 5.8.1 Operadores aritméticos... 85 5.8.2 Operadores de cadeias de caracteres... 86 5.8.3 Operadores de atribuição... 86 5.8.4 Operadores de operações com bits... 86 5.8.5 Operadores Lógicos... 87 5.8.6 Operadores de comparação... 87 5.8.7 Precedência dos operadores... 88 5.9 Estruturas de Controlo... 89 5.9.1 if... 89 5.9.2 else... 90 5.9.3 elseif... 91 5.9.4 while... 92 5.9.5 do while... 93 5.9.6 for... 93 5.9.7 break... 94 5.9.8 continue... 95 5.9.9 switch... 95 5.9.10 require... 96 5.9.11 include... 96 5.9.12 class... 97 5.10 Funções... 99 5.10.1 Funções definidas pelo utilizador... 99 5.10.2 Retorno de valores... 99 FCA - EDITORA DE INFORMÁTICA III
Programação com PHP4 5.10.3 Argumentos de funções... 99 5.10.4 Passagem de argumentos por referência... 100 5.10.5 Valor por defeito de argumentos... 101 6 Funcionalidades Básicas do PHP... 103 6.1 Algumas funcionalidades do PHP... 103 6.2 Primeiros exemplos... 104 6.3 Imprimir dados no ecrã... 108 6.3.1 A função echo()... 108 6.3.2 A função print()... 109 6.3.3 A função printf()... 109 6.4 Conclusão... 110 7 O PHP e os formulários em HTML... 111 7.1 Usar o PHP para ler valores de um formulário... 111 7.1.1 Formulários simples... 112 7.1.1.1 Imprimir o formulário... 113 7.1.1.2 O processamento do formulário... 114 7.1.1.3 Juntar ambas as partes... 115 7.1.2 Mais um exemplo simples... 118 7.1.3 Um formulário com páginas múltiplas... 121 8 O PHP e as bases de dados... 135 8.1 Interactividade das aplicações web... 135 8.2 MySQL breve introdução... 136 8.3 Utilitários de administração do MySQL... 141 8.4 Ligação a bases de dados em PHP... 146 8.4.1 Principais funções com suporte ao MySQL... 146 8.4.2 Funções PHP de ligação a bases de dados MySQL... 148 8.5 Aplicação de gestão de contactos... 155 8.5.1 Selecção e visualização de registos... 156 8.5.2 Adição de registos... 158 8.5.3 Edição de registo... 161 8.5.4 Eliminação de registo... 165 8.5.5 Definição da condição de selecção... 169 8.5.5.1 Navegação entre páginas contendo registos... 176 8.5.6 Envio de e-mails e realização de uploads de ficheiros... 181 8.5.6.1 Envio de e-mail... 182 8.5.6.2 Upload de ficheiros e armazenamento em bases de dados... 187 IV FCA - EDITORA DE INFORMÁTICA
Índice 8.5.7 Redireccionamento de páginas... 192 8.6 Autenticação de utilizadores... 195 8.7 Ligação a bases de dados em PHP via ODBC... 204 8.7.1 Funções PHP para ligação a bases de dados via ODBC... 204 8.7.2 Exemplo de aplicação das funções PHP-ODBC... 206 8.8 O phpdb... 212 8.8.1 Objectos do phpdb... 215 8.9 ADO Active Data Objects... 217 9 O PHP e o correio electrónico... 221 9.1 A importância do correio electrónico... 221 9.2 Mais alguns detalhes sobre o correio electrónico... 222 9.3 Envio de correio electrónico... 223 9.3.1 Programa para enviar correio electrónico... 224 9.3.2 Classe para enviar correio electrónico simples... 228 9.3.3 Classe para enviar correio electrónico composto... 232 9.3.4 Outra forma de enviar correio electrónico no PHP... 242 9.4 Formas de validação de endereços de correio electrónico... 243 9.4.1 Validação simples... 244 9.4.2 Validação complexa... 244 10 Autenticação de utilizadores com PHP... 251 10.1 Introdução... 251 10.2 Autenticação HTTP... 252 10.3 Autenticação com PHP... 253 10.3.1 Validação com ficheiro texto... 257 10.3.2 Validação baseada no.htaccess... 258 10.3.3 Validação com bases de dados... 260 10.4 Vantagens da autenticação com PHP... 262 11 Manipulação de datas e horas com PHP... 263 11.1 Introdução... 263 11.2 Alguns exemplos úteis de utilização... 268 11.2.1 Tempo decorrido... 268 11.2.2 Datas em português... 274 12 O PHP e os cookies... 277 12.1 Os cookies e a WWW... 277 FCA - EDITORA DE INFORMÁTICA V
Programação com PHP4 13 Criação de gráficos utilizando o PHP... 283 13.1 Os gráficos e o PHP... 283 13.2 Criação dinâmica de gráficos... 283 13.2.1 Gráficos simples quadrados e rectângulos... 284 13.2.2 Gráficos simples círculos... 288 13.2.3 Utilização de texto em gráficos... 291 13.2.4 Biblioteca de gráficos de barras... 294 13.2.5 Criação de imagens a partir de outras... 299 14 A gestão de sessões com o PHP... 304 14.1 A importância da gestão de sessões... 304 14.2 A utilidade das sessões... 305 14.3 Informação complementar... 306 14.4 A configuração das sessões... 306 14.5 Propagação de identificadores de sessão... 307 14.6 Funções para gestão de sessões em PHP... 308 14.7 Inicialização de sessões... 309 14.8 Destruição de sessões... 309 14.9 Nome de sessões... 309 14.10 Informação acerca da path de sessões... 310 14.11 Identificação de sessões... 310 14.12 Associação de dados a uma sessão... 310 14.13 Desassociação de dados a uma sessão... 310 14.14 Verificação de informação de sessão... 311 14.15 Codificação de informação de sessões... 311 14.16 Descodificação de informação de sessões... 311 14.17 Exemplos da utilização da gestão de sessões... 311 14.18 Registo de variáveis... 312 14.19 Contador de acessos... 312 14.20 Cores persistentes... 314 15 O PHP e o sistema de ficheiros... 321 15.1 Manipulação do sistema de ficheiros... 321 15.2 Trabalhar com ficheiros... 321 15.3 Testes sobre os ficheiros... 324 15.4 Navegação nos ficheiros... 324 15.5 A função file()... 331 15.6 A função fpassthru()... 332 15.7 Copiar, apagar e renomear ficheiros... 335 VI FCA - EDITORA DE INFORMÁTICA
Índice 15.8 Trabalhar com directorias... 337 15.9 Upload de ficheiros... 340 15.10 Validação de ficheiros de upload... 343 16 O PHP e a execução de programas externos... 346 16.1 Execução externa de programas... 346 16.2 Funções PHP de execução de programas externos... 346 16.2.1 exec... 347 16.2.2 system... 347 16.3 Exemplos de utilização... 348 17 O PHP e o XML... 354 17.1 XML e a WWW... 354 17.2 XML... 354 17.3 Documentos XML... 356 17.4 DTD Document Type Definitions... 358 17.5 Interpretadores de XML... 359 17.6 Tipos de interpretadores XML... 359 17.7 Integração do interpretador XML Expat... 360 17.8 Funções do PHP para XML... 360 17.9 xml_parser_create... 361 17.10 xml_set_object... 362 17.11 xml_set_element_handler... 363 17.12 xml_set_character_data_handler... 364 17.13 xml_parse... 365 17.14 xml_get_error_code... 366 17.15 xml_error_string... 366 17.16 xml_get_current_line_number... 366 17.17 xml_parser_free... 366 17.18 PHP e XML em funcionamento... 367 18 Desenvolvimento de aplicações WAP com o PHP... 375 18.1 Introdução... 375 18.2 Arquitectura PHP-WML... 376 18.3 A linguagem WML... 377 18.3.1 Exemplo de uma aplicação WML... 378 18.4 PHP nos documentos de WML... 381 18.4.1 Enviar correio electrónico através do dispositivos WAP... 386 18.4.2 Listar dados de uma base de dados via WAP... 388 FCA - EDITORA DE INFORMÁTICA VII
Programação com PHP4 19 Zend e a tecnologia PHP... 391 19.1 Introdução... 391 19.2 Zend Produtos e serviços... 392 19.2.1 Zend Engine... 392 19.2.2 Zend Cache... 393 19.2.2.1 Vantagens... 393 19.2.2.2 Requisitos... 394 19.2.3 Zend Encoder Unlimited... 394 19.2.3.1 Vantagens:... 394 19.2.3.2 Requisitos:... 395 19.2.4 Zend IDE... 395 19.2.4.1 Como funciona o IDE... 396 19.2.4.2 Vantagens:... 396 19.2.4.3 Requisitos... 397 19.2.4.4 Concorrentes... 397 19.2.5 Zend LaunchPad... 399 19.2.5.1 Como funciona o Zend LaunchPad... 400 19.2.5.2 Vantagens... 400 19.2.5.3 Requisitos... 401 19.2.6 Zend Optimizer... 401 19.2.6.1 Funcionamento do Zend Optimizer... 401 19.2.6.2 Vantagens... 401 19.2.6.3 Requisitos... 401 19.2.7 Zend Developer s Server Suite... 401 19.2.8 Zend Support Online... 402 19.3 Zend Technologies... 403 20 Recursos PHP na Internet... 405 20.1 O PHP na WWW... 405 20.2 Recursos PHP na WWW... 405 20.2.1 Php.net... 406 20.2.2 phpwizard.net... 407 20.2.3 PHPBuilder... 408 20.2.4 Developer Shed... 409 20.2.5 PHP Code Exchange... 411 20.2.6 The PHP resource Index... 412 20.2.7 PHP Base Library... 413 20.2.8 PHP Classes Repository... 414 20.2.9 e-ginner... 415 20.2.10 Hotscripts... 417 VIII FCA - EDITORA DE INFORMÁTICA
Índice 20.3 Grupos de discussão e /ou canais de IRC... 418 20.3.1 Canal #php no IRC... 418 20.3.2 Listas de distribuição... 418 20.3.3 Grupos de discussão... 420 20.3.4 Lista de perguntas mais frequentes (FAQ)... 421 20.3.5 Lista de problemas e erros (bugs)... 421 21 Desenvolvimento de um site completo na WWW... 423 21.1 Introdução... 423 21.2 O sistema a desenvolver... 424 21.2.1 A infraestrutura técnica do site... 425 21.2.2 A estrutura do site... 425 21.2.3 A base de dados... 426 21.2.4 Concepção da base de dados... 427 21.2.5 Scripts que geram as páginas do site... 431 22 Referências bibliográficas... 467 23 Índice remissivo... 471 FCA - EDITORA DE INFORMÁTICA IX