Desenvolvimento web com PHP e MySQL
Evaldo Junior BentoIntrodução
Ganhando a web 2.0 com páginas dinâmicas
Imagine a internet na qual você pode apenas consumir conteúdos, como se fosse um jornal, uma revista, ou ainda, um programa na televisão.
Quando estudamos as linguagens da web, como HTML e CSS, é isso que aprendemos. Usando apenas HTML, podemos construir sites que são como revistas e servem apenas para leitura, sem permitir interação com os internautas.
O segredo da chamada **web 2.0** é a capacidade de interação entre as pessoas e os serviços online. E para que esta interação seja possível, é necessário que os sites sejam capazes de receber informações dos internautas e também de exibir conteúdos personalizados para cada pessoa, como em uma rede social, por exemplo, ou de mudar seu conteúdo automaticamente, como um site de notícias, sem que seja necessário criar manualmente um novo HTML para isso.
Estes dois tipos de sites são chamados de estático e dinâmico, respectivamente. Ambos são importantes para web como um todo, cada um com suas vantagens e desvantagens para diferentes usos.
O navegador e a exibição de páginas web estáticas
Você já parou para pensar em tudo o que acontece quando você digita um endereço em seu navegador web? Tanto para páginas estáticas quanto para páginas dinâmicas, a história toda é mais ou menos assim:
- O navegador pesquisa em qual servidor o site está hospedado usando um serviço chamado DNS (_Domain Name System_).
- O navegador vai até o servidor, que responde no endereço solicitado e requisita o conteúdo. Algo como "Olá, servidor, eu gostaria do conteúdo para o site www.casadocodigo.com.br".
- O servidor verifica se o endereço existe e se a página também existe em seu sistema de arquivos, e então retorna o arquivo para o navegador. Esse arquivo é, em geral, uma página em HTML.
- Após receber o arquivo HTML, o navegador começa o trabalho de renderização, que é desenhar os elementos da página nos locais corretos, para exibir a página. É neste momento que o navegador também requisita arquivos de estilos (CSS), imagens e outros arquivos necessários para a formatação e exibição da página.
Quando se desenvolve páginas estáticas, este é basicamente todo o processo necessário para que o navegador exiba a página. Chamamos de **estáticas** as páginas web que não mudam seu conteúdo, mesmo em uma nova requisição ao servidor. Mais uma vez, é como pegar aquela sua revista ou livro guardado na estante. O conteúdo continua sempre o mesmo.
E como funciona uma página dinâmica?
O processo para páginas dinâmicas é muito parecido com o das páginas estáticas. A diferença é que a página será processada no servidor antes de ser enviada para o navegador. Este processamento no servidor é usado para alterar dinamicamente o conteúdo de uma página, seja ele HTML, CSS, imagens ou outros formatos.
Pense, por exemplo, em um site de um jornal. Em geral, este tipo de site contém algumas áreas destinadas às notícias de destaque, outras para notícias gerais e ainda outras para outros fins, como publicidade.
Quando o navegador solicita a página para o servidor, este montará o conteúdo antes de enviar para o navegador. Este conteúdo pode ser conseguido de algumas fontes. A mais comum é um banco de dados, onde, neste caso, as notícias ficam armazenadas para serem exibidas nas páginas quando estas forem solicitadas.
O resultado ainda será uma página HTML, mas ela poderá ser diferente quando uma nova requisição ao servidor for feita pelo navegador. Isso porque, neste caso, podem existir novas notícias para serem exibidas.
E onde entra o PHP e o MySQL?
PHP é uma linguagem de programação que nasceu para possibilitar o pré-processamento de páginas HTML. Dessa forma, o PHP consegue alterar o conteúdo de uma página antes de enviá-la para o navegador, ou mesmo criar uma página nova a cada requisição. Além disso, ele também permite capturar entradas de dados usando formulários em páginas HTML e outras formas de interação que geram requisições ao servidor.
Já o MySQL é o banco de dados onde guardamos informações em estruturas chamadas tabelas, sendo que cada linha da tabela é um novo registro. É bem parecido com uma planilha, mas com mais capacidade de armazenamento, busca e relacionamento entre os dados.
É em bancos como o MySQL que os sites de notícias, redes sociais etc. guardam suas informações para que depois sejam recuperadas e exibidas nas páginas.
A dupla PHP e MySQL se conhece há muitos anos e trabalha bem em equipe, sendo a principal responsável pelo conteúdo dinâmico na web, desde portais de notícia e conteúdos a lojas online, blogs e redes sociais. Essa dupla também é muito famosa por conta da facilidade de se escrever código em PHP para conversar com o banco de dados. Outra vantagem é que as instalações de PHP em servidores e ambientes de desenvolvimento já contam com as bibliotecas de acesso ao MySQL por padrão, na maioria dos casos.
Mas, por que escolher PHP e MySQL?
Quando fui professor universitário, ao final de uma aula de introdução ao PHP, um aluno veio até mim e perguntou o motivo de as empresas escolherem PHP e MySQL para desenvolver seus sites e até mesmo seus sistemas mais web complexos. Ele me disse também que existem linguagens consideradas superiores ou mais modernas que o PHP e bancos de dados que são tidos como melhores e mais eficientes que o MySQL.
Responder a esta questão não é fácil, pois existem diversos motivos para escolher esta ou aquela tecnologia. No caso da dupla PHP e MySQL, alguns motivos são:
- PHP nasceu para a web, e sua integração com servidores web dos mais diversos é simples. Isso facilita a manutenção de servidores e diminui as barreiras de entradas no mercado para novos produtos e serviços.
- PHP tem uma curva de aprendizado suave, comparada a outras linguagens. Isso possibilita que muitas pessoas aprendam o básico e consigam com isso testar suas ideias em projetos simples, sem muitos custos. Esses projetos podem crescer e continuar usando PHP.
- PHP abstrai muitas das rotinas mais comuns da comunicação entre clientes (navegadores) e servidores, deixando o caminho livre para que quem está desenvolvendo possa se focar na lógica do que está construindo e não em como processar uma requisição HTTP.
- PHP e MySQL são tecnologias livres, abertas e gratuitas. Mais uma vez, derrubando as barreiras dos custos de entrada no mercado para novas empresas, pessoas e projetos, por exemplo.
- É fácil encontrar serviços de hospedagem que oferecem PHP e MySQL, dos mais simples e acessíveis aos mais complexos e caros.
- Serviços de hospedagem PHP e MySQL são mais baratos que serviços semelhantes para outras tecnologias, o que facilita bastante a entrada de novas pessoas e reduz custos até para as grandes empresas.
- MySQL é leve e rápido, mesmo para quantidades razoavelmente grandes de dados. Eu já trabalhei pessoalmente por alguns anos com uma base de dados MySQL com alguns Terabytes de tamanho.
- Como muitas pessoas começam a programar para web com PHP e MySQL, é natural que elas continuem com PHP e MySQL quando evoluem na área e em suas carreiras.
O que vou precisar para acompanhar este livro?
Para desenvolver softwares são necessárias algumas ferramentas instaladas em seu computador. Neste livro, farei uso e indicarei apenas ferramentas em software livre e/ou código aberto que você poderá instalar em seu computador sem custo adicional. Claro que as pessoas mais experientes em desenvolvimento de software lendo este livro podem usar as ferramentas que já conhecem e com as quais se sintam mais confortáveis, apenas se certificando de fazer as devidas adaptações quando necessário.
No geral, tudo o que será necessário é um computador com um ambiente de desenvolvimento WEB com PHP e MySQL instalados e configurados, um editor de arquivos de texto e um navegador WEB para testar as páginas que serão criadas. Mas não se preocupe, no próximo capítulo eu demonstro como instalar as ferramentas necessárias.
Uma dica importante para quem busca aprender uma nova linguagem de programação, ou mesmo a primeira linguagem de programação, é reservar tempo para estudar e praticar bastante. Se você conseguir separar um certo tempo por dia e realmente se dedicar à leitura e à prática dos exercícios propostos, rapidamente se sentirá mais confortável com PHP e com o ambiente WEB. Isso lhe dará conceitos gerais para desenvolvimento de páginas dinâmicas, até mesmo usando outras linguagens e bancos de dados.
Ou seja, um dos requisitos para o estudo será mesmo o tempo. E quanto mais tempo você conseguir dedicar aos estudos, mais conseguirá absorver novos conhecimentos e mais rápido conseguirá desenvolver suas aplicações.
Sobre este livro
A ideia central deste livro é oferecer oportunidade a qualquer pessoa interessada em começar a desenvolver suas primeiras páginas dinâmicas utilizando a linguagem PHP associada ao banco de dados MySQL. O livro apresenta uma experiência de aprendizado que pode (e deve) ser aplicada não somente ao PHP, mas também a quaisquer outras tecnologias para desenvolvimento de aplicações, sejam elas web ou não.
Durante os capítulos, os exemplos são construídos aos poucos e alguns erros são encorajados, além de haver algumas reescritas e melhorias em códigos que já funcionam. Porém, estes podem sofrer por não utilizarem técnicas que simplificam a lógica e garantem maior facilidade para futuras alterações.
Este livro não é um guia de referência para PHP e MySQL e, assim sendo, não apresenta listas de funções e bibliotecas disponíveis para estas tecnologias. O foco aqui é realmente um processo de aprendizado por meio da construção gradual de aplicações e assimilação dos conceitos.
Estudantes de cursos relacionados a desenvolvimento de sistemas, pessoas curiosas estudando programação para web e hobbistas podem se beneficiar grandemente do conteúdo deste livro. Porém, pessoas com conhecimento mais avançado em desenvolvimento de software para web (ou outras plataformas) que desejam apenas um guia de referência para tirar dúvidas sobre uma função ou outra da linguagem podem não encontrar benefícios nestas páginas.
Web designers e pessoas que trabalham com UX (User Experience, Experiência de Usuários) com experiência em HTML e CSS que desejam aprender a desenvolver para back-end também podem se beneficiar bastante do conteúdo deste livro. Mesmo sendo focado em iniciantes, o livro busca trazer conteúdo atualizado com as práticas mais recentes do PHP, seu ambiente e sua comunidade.
Sempre que estiver com alguma dúvida, não deixe de perguntar no fórum da Casa do Código. Ele está em http://forum.casadocodigo.com.br/. O fórum é um espaço aberto para todos os leitores e leitoras do livro trocarem ideias sobre os exercícios e até sobre outros tópicos relacionados ao PHP e às tecnologias contidas aqui.
O fórum também pode ser usado para discutir outros tópicos relacionados ao PHP em geral, não se limitando ao contexto do livro, além de outras tecnologias tratadas em outros livros da Casa do Código. No fórum, todos podem perguntar e responder, então não deixe de dar uma passadinha por lá para tirar as suas dúvidas e também para contribuir com seus conhecimentos e experiências.
Prefácio
Muita gente que pensa em Web lembra logo de HTML, CSS e JavaScript. Claro, são as linguagens fundamentais dos navegadores. Mas elas só contam metade da história. Muita coisa precisa acontecer do outro lado da conexão, nos servidores. E, se você quer programar seriamente na Web, vai precisar dominar uma linguagem de programação que rode no servidor.
Nesse cenário, o PHP é a melhor escolha se você quer evoluir suas páginas estáticas HTML para páginas dinâmicas e sistemas complexos. Há muitas opções de linguagens de programação e de bancos de dados. Entretanto, a dupla PHP e MySQL é uma das mais importantes no mercado Web atual, com aplicações em sites de conteúdo, comércio eletrônico e até sistemas grandes, como Facebook.
Este livro é obrigatório para quem quer começar com PHP e MySQL. O Evaldo é um excelente autor com grande experiência, e conseguiu chegar em um livro fácil de ler e acompanhar, com uma escrita dinâmica e vibrante. Segue o modelo de livros objetivos da Casa do Código, e fará você entrar nesse mercado rapidamente e com bastante conhecimento.
Uma boa leitura, bons estudos e bem-vindo ao imenso e importante mundo do PHP.
Sérgio Lopes — Instrutor e desenvolvedor na Caelum, autor do livro A Web Mobile, também da editora Casa do Código
Sumário
- 1 Introdução
- 1.1 Ganhando a web 2.0 com páginas dinâmicas
- 1.2 O navegador e a exibição de páginas web estáticas
- 1.3 E como funciona uma página dinâmica?
- 1.4 E onde entra o PHP e o MySQL?
- 1.5 Mas, por que escolher PHP e MySQL?
- 1.6 O que vou precisar para acompanhar este livro?
- 1.7 Sobre este livro
- 2 Instalando o PHP
- 2.1 PHP no Windows
- 2.2 PHP no GNU/Linux com XAMPP
- 2.3 PHP no GNU/Linux com pacotes nativos
- 2.4 PHP no Mac OS X com XAMPP
- 2.5 Após a instalação
- 2.6 Versões do PHP
- 3 O primeiro programa em PHP
- 3.1 Requisição, processamento e resposta
- 3.2 A minha página está mostrando a hora errada!
- 3.3 Resumo
- 3.4 Desafios
- 4 Construindo um calendário com PHP
- 4.1 Definindo nosso calendário
- 4.2 Começando o calendário
- 4.3 Usando funções
- 4.4 Pausa para os arrays
- 4.5 De volta ao calendário
- 4.6 Entendendo e se entendendo com os erros
- 4.7 Finalizando o calendário
- 4.8 Resumo
- 4.9 Desafios
- 5 Recebendo dados de formulários com PHP
- 5.1 O formulário de cadastro de tarefas
- 5.2 Entrada de dados
- 5.3 Acessando os dados da URL
- 5.4 Sessões no PHP
- 5.5 Resumo
- 5.6 Desafios
- 6 Tratamento de diferentes campos de formulários
- 6.1 Organizando o código em arquivos separados
- 6.2 Adicionando mais informações às tarefas
- 6.3 6.3 Reduzindo o uso de else
- 6.4 Resumo
- 6.5 Desafios
- 7 Acessando e usando um banco de dados
- 7.1 O banco de dados MySQL
- 7.2 PHPMyAdmin, administrando o banco de dados
- 7.3 Criando o banco de dados
- 7.4 Criando a tabela
- 7.5 Cadastrando e lendo os dados de uma tabela
- 7.6 Filtrando os resultados do SELECT
- 7.7 Resumo
- 7.8 Desafios
- 8 Integrando PHP com o banco de dados MySQL
- 8.1 PHP e MySQL
- 8.2 Conectando o PHP ao MySQL
- 8.3 Buscando dados no banco
- 8.4 Cadastrando as tarefas no banco
- 8.5 Cadastrando o prazo das atividades
- 8.6 Outra maneira de formatar as datas
- 8.7 Marcando uma tarefa como concluída
- 8.8 Resumo
- 8.9 Desafios
- 9 Edição e remoção de registros
- 9.1 Edição de tarefas
- 9.2 Operador ternário
- 9.3 Simplificando mais com o operador "??"
- 9.4 De volta à edição de tarefas
- 9.5 Remoção de tarefas
- 9.6 Evitando o problema com a atualização de página
- 9.7 Resumo
- 9.8 Desafios
- 10 Dados mais seguros com validação de formulários
- 10.1 Validação na lista de tarefas
- 10.2 Entrada de dados usando POST
- 10.3 Validando o nome da tarefa
- 10.4 Adicionando o aviso de erro
- 10.5 Validando a data digitada
- 10.6 Expressões regulares
- 10.7 Validando o formulário de edição de tarefas
- 10.8 Resumo
- 10.9 Desafios
- 11 Recebendo upload de arquivos
- 11.1 Anexos para a lista de tarefas
- 11.2 Mudanças no banco de dados
- 11.3 Página com os detalhes das tarefas
- 11.4 O formulário para cadastrar anexos
- 11.5 Recebendo arquivos pelo PHP
- 11.6 Gravando os dados do anexo no banco de dados
- 11.7 Exibindo os anexos
- 11.8 Removendo anexos
- 11.9 URLs inexistentes
- 11.10 Resumo
- 11.11 Desafios
- 12 Lembretes de tarefas por e-mail
- 12.1 Definindo o e-mail de aviso
- 12.2 Unificando a configuração da aplicação com constantes
- 12.3 Adicionando a opção de aviso por e-mail
- 12.4 A função enviar_email()
- 12.5 As funções e seus parâmetros opcionais
- 12.6 Escrevendo o corpo do e-mail usando um arquivo com o template
- 12.7 Instalando uma biblioteca para enviar e-mails
- 12.8 Finalizando a função enviar_email()
- 12.9 Gravando os erros do envio de e-mails
- 12.10 Resumo
- 12.11 Desafios
- 13 Programando com Orientação a Objetos
- 13.1 Como podemos definir o que é uma classe?
- 13.2 A classe Tarefa
- 13.3 O repositório de tarefas
- 13.4 Usando as novas classes na aplicação
- 13.5 Erro na exibição de tarefas
- 13.6 Usando as classes no envio do e-mail
- 13.7 Criando a classe para os anexos
- 13.8 Usando as classes na exibição e edição das tarefas
- 13.9 Atualizando a edição de tarefas
- 13.10 Resumo
- 13.11 Desafios
- 14 Protegendo a aplicação contra SQL Injection e XSS
- 14.1 Proteção contra SQL Injection
- 14.2 Protegendo-se contra SQL Injection usando MySQLi
- 14.3 Exibindo e editando campos com aspas
- 14.4 Proteção contra XSS
- 14.5 Resumo
- 14.6 Desafios
- 15 Conhecendo o PDO
- 15.1 Exceptions, try e catch
- 15.2 Substituindo o MySQLi pelo PDO
- 15.3 Prepared Statements
- 15.4 Usando o PDO no restante da aplicação
- 15.5 Tratando tarefas e anexos inexistentes
- 15.6 Resumo
- 15.7 Desafios
- 16 Introdução ao MVC
- 16.1 O front-controller e os controllers
- 16.2 Organizando as views
- 16.3 Organizando as models
- 16.4 Ligando as pontas
- 16.5 Organizando o restante dos arquivos
- 16.6 Frameworks
- 16.7 Resumo
- 16.8 Desafios
- 17 Carregamento automático de classes e Namespaces
- 17.1 Namespaces
- 17.2 Resumo
- 17.3 Desafios
- 18 Dependências com Composer
- 18.1 Mais comandos do Composer
- 18.2 Resumo
- 18.3 Desafios
- 19 Hospedagem de aplicações PHP
- 19.1 Sua aplicação para o mundo!
- 19.2 Escolhendo um servidor para hospedagem
- 19.3 Hospedagem com a Hostinger, agora 000webhost.com
- 19.4 Configurando a aplicação para a 000webhost
- 19.5 Enviando a aplicação para a 000webhost
- 19.6 Outras opções de hospedagem
- 19.7 Resumo
- 19.8 Desafios
- 20 Apenas o começo
- 20.1 Onde posso buscar mais informações?
Dados do produto
- Número de páginas:
- 419
- ISBN:
- 978-85-66250-30-5
- Data publicação:
- 10/2013. Atualizado em 07/2021.