VII Índice Geral Nota prévia... XXI 1. PHP, Apache Server e MySQL... 1 1.1. Introdução... 1 1.2. Linguagem PHP... 1 1.2.1. Suporte a diferentes sistemas operativos... 2 1.2.2. Suporte a Sistemas de Gestão de Bases de Dados (SGBD)... 2 1.2.3. Suporte a PDF, XML e Flash... 2 1.2.4. Suporte de protocolos... 3 1.2.5. Programação orientada a objetos (POO)... 3 1.2.6. Ferramenta open source... 3 1.3. Apache Server... 3 1.4. MySQL... 6 1.4.1. SGBD (Sistemas de Gestão de Base de Dados)... 6 1.4.2. Storage Engine... 7 1.4.3. Arquitetura do MySQL... 7 1.4.4. Ferramentas gráficas do MySQL... 9 1.5. Funcionamento de uma página Web... 12 1.5.1. Páginas estáticas... 12 1.5.2. Páginas dinâmicas... 13 1.6. Conclusão... 16 2. Instalação de recursos... 17 2.1. Introdução... 17 2.2. Instalação do XAMPP... 17 2.2.1. Instalação em plataformas Windows... 18 2.2.2. Instalação em plataformas Linux... 19 2.2.3. Instalação em plataformas Mac OS X... 20 2.2.4. phpmyadmin... 21 2.3. Ambiente de desenvolvimento integrado... 21 2.3.1. Netbeans... 22 2.3.2. Eclipse... 23 2.3.3. Zend Studio... 23 2.3.4. Adobe Dreamweaver... 23 2.4. Editores de texto/código... 24 2.4.1. Notepad++... 25 VII
Desenvolvimento de Aplicações em PHP 2.4.2. Komodo Edit... 26 2.4.3. Bluefish... 26 2.5. Conclusão... 26 3. Iniciando o PHP e o MySQL... 27 3.1. Introdução... 27 3.2. Desenvolvimento em PHP... 27 3.2.1. Criando a primeira página... 27 3.2.2. Variáveis em PHP... 30 3.2.2.1. Variáveis dinâmicas... 30 3.2.2.2. Variáveis de ambiente... 33 3.2.2.3. Variáveis predefinidas... 34 3.2.3. Arrays... 34 3.2.4. Ciclos for, while e do while... 36 3.2.5. Controlos if, else e elseif... 38 3.2.6. Controlo switch... 41 3.2.7. Funções... 42 3.3. Utilizando o MySQL... 43 3.3.1. Breves noções sobre bases de dados... 44 3.3.2. Comandos SQL... 46 3.3.3. Criação da base de dados... 48 3.4. Ligação PHP/MySQL... 50 3.4.1. Funções PHP de suporte ao MySQL... 50 3.4.2. Ligação à base de dados... 51 3.4.3. Consulta à base de dados... 52 3.4.4. Organização dos resultados... 53 3.5. Formulários... 55 3.5.1. Construção do formulário... 56 3.5.2. Processamento do formulário... 57 3.5.3. Comando include e require... 57 3.6. Conclusão... 58 4. Gestão de utilizadores... 59 4.1. Introdução... 59 4.2. Planeamento da aplicação... 59 4.2.1. Organização de ficheiros... 59 4.2.2. Construção da base de dados... 61 4.3. Autenticação de utilizadores... 62 4.3.1. Formulário de autenticação (login)... 62 4.3.2. Processamento dos dados de autenticação... 64 4.3.3. Menu geral... 67 4.4. Gestão de utilizadores... 70 4.4.1. Registar utilizadores... 70 4.4.2. Processamento dos dados de registo... 72 4.4.3. Visualizar utilizadores... 77 VIII
Índice Geral 4.4.4. Eliminar utilizadores... 81 4.4.5. Alterar dados de utilizadores... 87 4.5. Segurança em formulários... 90 4.5.1. Início de sessão... 90 4.5.2. Ligação à base de dados... 91 4.5.3. Codificação de dados... 92 4.5.4. Codificação da palavra-passe... 93 4.5.5. Terminar sessão (logout)... 95 4.6. Conclusão... 96 5. Calendário online... 97 5.1. Introdução... 97 5.2. Planeamento da aplicação... 97 5.2.1. Organização de ficheiros... 98 5.2.2. Construção da base de dados... 99 5.2.3. Tags e atributos em HTML... 100 5.2.4. Folhas de estilo (CSS) e sua aplicação... 101 5.3. Calendário... 104 5.3.1. Aspeto gráfico... 104 5.3.2. Formulário de autenticação (login)... 108 5.3.3. Funções de data e hora... 112 5.3.4. Criação do calendário... 113 5.3.4.1. Criação da primeira linha do calendário... 116 5.3.4.2. Criação das restantes linhas do calendário... 119 5.4. Operações no calendário... 120 5.4.1. Inserção de eventos... 120 5.4.2. Visualização de todos os eventos... 125 5.4.3. Eliminação de eventos... 129 5.4.4. Seleção de meses e eventos recentes... 130 5.5. Utilização de Javascript no calendário online... 134 5.5.1. Janela de aviso... 134 5.5.2. Janela de confirmação... 136 5.6. Conclusão... 136 6. Fórum para a comunidade... 137 6.1. Introdução... 137 6.2. Planeamento da aplicação... 137 6.2.1. Organização de ficheiros... 138 6.2.2. Construção da base de dados... 140 6.2.2.1. Bases de dados em cascata... 140 6.2.2.2. Bases de dados forum... 142 6.2.3. Ligação à base de dados... 145 6.3. Gestão de utilizadores... 146 6.3.1. Registo de utilizador... 146 6.3.2. Formulário de autenticação (login)... 150 IX
Desenvolvimento de Aplicações em PHP 6.3.3. Acesso multinível de utilizadores... 151 6.3.4. Terminar sessão (logout)... 154 6.4. Funcionamento do fórum... 154 6.4.1. Estilo visual do fórum... 154 6.4.2. Cabeçalho da página... 158 6.4.3. Categorias e fóruns... 161 6.4.4. Fórum e tópicos... 164 6.4.5. Criar novo tópico... 169 6.4.6. Mensagens... 175 6.4.7. Responder/colocar nova mensagem... 178 6.5. Administração do fórum... 181 6.5.1. Menu de administração... 181 6.5.2. Criar nova categoria... 183 6.5.3. Eliminar categoria... 184 6.5.4. Criar novo fórum... 187 6.5.5. Eliminar fórum... 189 6.5.6. Validar utilizadores registados... 190 6.5.7. Ver utilizadores validados... 193 6.5.8. Ver todos os utilizadores... 193 6.6. Conclusão... 194 7. Mailing list... 195 7.1. Introdução... 195 7.2. Planeamento da aplicação... 195 7.2.1. Organização de ficheiros... 196 7.2.2. Construção da base de dados... 196 7.2.3. Criação da folha de estilo... 197 7.3. Mailing list... 200 7.3.1. Validação do endereço de correio eletrónico... 200 7.3.2. Registo de endereços de correio eletrónico... 202 7.3.3. CAPTCHA... 205 7.4. Funções de administração... 207 7.4.1. Menu de administração... 208 7.4.2. Gestão de endereços de correio eletrónico... 210 7.5. Paginação de resultados... 215 7.5.1. Funcionamento da paginação de resultados... 216 7.5.2. Aplicação prática da paginação de resultados... 218 7.6. Administradores... 222 7.6.1. Acesso de administradores... 222 7.6.2. Gestão dos administradores... 224 7.7. Criação da newsletter... 226 7.7.1. Formulário da criação da newsletter... 226 7.7.2. Criação da newsletter com editor de texto Tinymce... 228 7.8. Envio de correio eletrónico... 231 7.8.1. Classe mail... 231 X
Índice Geral 7.8.2. Envio de correio eletrónico com a classe mail... 232 7.8.3. Envio de correio eletrónico com a classe PHPMailer... 234 7.8.4. Envio da newsletter... 236 7.8.5. Remoção de subscrição da newsletter... 238 7.9. Conclusão... 242 8. Gráficos e relatórios... 243 8.1. Introdução... 243 8.2. Planeamento da aplicação... 243 8.2.1. Organização de ficheiros... 244 8.2.2. Construção da base de dados... 245 8.3. Desenhos com PHP... 247 8.3.1. Biblioteca Graphics Draw instalação... 247 8.3.2. Biblioteca Graphics Draw recursos... 248 8.3.3. Desenhos simples com Graphics Draw... 250 8.3.3.1. Quadrados e retângulos... 250 8.3.3.2. Circunferências/círculos... 252 8.3.3.3. Efeitos em imagens... 253 8.3.3.4. Textos em imagens... 255 8.3.4. Criação de gráficos estáticos... 257 8.4. Classes para produção de gráficos... 260 8.4.1. Classe PHPlot... 260 8.4.2. Classe jpgraph... 263 8.4.3. Classe pchart... 265 8.4.4. Ferramenta Sandbox... 270 8.4.5. Um caso particular: códigos de barras... 272 8.5. Criação de gráficos dinâmicos com bases de dados... 274 8.5.1. Resultados por aluno (formato tabela)... 275 8.5.2. Gráfico de resultados por aluno... 277 8.5.3. Gráfico de resultados por disciplina... 281 8.5.4. Gráfico de linhas... 281 8.6. Relatórios em PHP... 282 8.6.1. Classe FPDF... 282 8.6.2. Construção de relatório usando a classe FPDF... 283 8.7. Exportar dados para folha de cálculo... 288 8.8. Conclusão... 288 9. Loja virtual... 289 9.1. Introdução... 289 9.2. Planeamento da aplicação... 289 9.2.1. Organização de ficheiros... 290 9.2.2. Construção da base de dados... 292 9.3. Loja virtual parte I... 295 9.3.1. Página principal... 296 XI
Desenvolvimento de Aplicações em PHP 9.3.2. Categorias de artigos... 299 9.3.2.1. Visualizar artigos por categoria... 300 9.3.3. Registo e autenticação de utilizadores... 302 9.3.3.1. Registo de cliente... 302 9.3.3.2. Formulário de autenticação (login)... 305 9.3.3.3. Verificação de acesso... 306 9.3.3.4. Terminar sessão (logout)... 308 9.3.4. Pesquisa de artigos... 308 9.3.5. Idiomas... 310 9.4. Loja virtual parte II... 316 9.4.1. Criar uma sessão... 316 9.4.2. Adicionar artigos à lista de compras... 317 9.4.3. Atualizar dados da lista de compras... 320 9.4.4. Efetivar uma compra... 322 9.4.4.1. Lista de compras... 323 9.4.4.2. Confirmação de dados da compra... 326 9.4.4.3. Registo da compra... 329 9.4.5. Estado da encomenda... 333 9.5. Administração da loja virtual... 336 9.5.1. Menu de administração... 336 9.5.2. Adicionar categorias... 337 9.5.3. Adicionar artigos... 339 9.5.3.1. Envio de ficheiro (upload)... 339 9.5.3.2. Formulário para envio de ficheiros... 340 9.5.3.3. Função $ _ FILES()... 341 9.5.3.4. Formulário de dados do artigo... 341 9.5.3.5. Processamento dos dados do artigo... 343 9.5.4. Estado das encomendas... 346 9.5.5. Histórico de encomendas... 347 9.6. Pagamentos e segurança... 349 9.7. Conclusão... 350 10. Álbum de fotos... 351 10.1. Introdução... 351 10.2. Planeamento da aplicação... 351 10.2.1. Organização de ficheiros... 352 10.2.2. Construção da base de dados... 354 10.3. Aspeto gráfico... 356 10.3.1. Layout das páginas... 356 10.3.2. Elaboração da folha de estilo... 359 10.4. Álbum de fotos... 363 10.4.1. Página de entrada... 363 10.4.2. Categorias de imagens... 370 10.4.3. Ver imagens por categoria... 371 XII
Índice Geral 10.4.4. Imagens individuais (tamanho grande)... 374 10.4.5. Inserir/visualizar comentários... 376 10.4.6. Processamento dos dados do comentário... 377 10.4.7. Ampliação de imagens com Javascript... 378 10.5. Utilizadores registados... 379 10.5.1. Registo de utilizador... 379 10.5.2. Formulário de autenticação (login)... 382 10.5.3. Confirmação de autenticação com redirecionamento... 382 10.5.4. Terminar sessão (logout)... 383 10.6. Upload de ficheiros... 384 10.6.1. Selecionar ficheiros para upload... 384 10.6.2. Múltiplas transações em bases de dados... 386 10.6.3. Processamento do envio da imagem... 387 10.7. Ver e eliminar imagens (por utilizador)... 391 10.7.1. Ver imagens... 391 10.7.2. Eliminar imagens... 394 10.8. Administração do álbum de fotos... 395 10.8.1. Menu de administração... 395 10.8.2. Adicionar categorias... 397 10.8.3. Gerir utilizadores... 399 10.8.4. Gerir todos os comentários... 402 10.8.5. Gerir comentários associados a uma imagem... 405 10.9. Contador de visitas... 406 10.9.1. Cookies... 406 10.9.2. Implementação de cookies em PHP... 407 10.9.3. Leitura e escrita de ficheiros em PHP... 407 10.9.4. Contando visitas... 409 10.10. Integração com Facebook e Google+... 411 10.10.1. Like em páginas Web... 411 10.10.2. Ligação ao Google+... 412 10.11. Conclusão... 414 11. Projeto final... 415 11.1. Introdução... 415 11.2. Planeamento da aplicação... 415 11.2.1. Organização de módulos e ficheiros... 416 11.2.2. Construção da base de dados... 417 11.3. Aspeto gráfico... 423 11.3.1. Layout das páginas... 423 11.3.2. Elaboração da folha de estilo... 426 11.4. Página de entrada... 428 XIII
Desenvolvimento de Aplicações em PHP Lista de Siglas e Abreviaturas... 431 Glossário de termos Português Europeu / Português do Brasil... 433 Índice Remissivo... 435 XIV