vários conceitos da programação para web usando PHP.
Agora dá até para brincar um pouco com o visual da aplicação usando umas
linhas de CSS. O meu ficou assim:
Figura 4.6: A lista usando um pouco de CSS
Se quiser pegar este CSS, basta baixar aqui: https://gist.github.com/InFog/
6860949
Agora faça duas experiências: abra outro navegador e acesse o endereço da lista
de tarefas em http://localhost/tarefas/tarefas.php, o que acontece? As tarefas apare-
cem? Não? Mas elas não estão na sessão?
40
Casa do Código
Capítulo 4. Entrada de dados com formulário
Como funcionam as sessões?
Se colocamos os dados na sessão, por que eles não aparecem quando
usamos outro navegador?
Para o PHP saber qual usuário é o dono de uma sessão, ele guarda
algumas informações nos Cookies do navegador. Na verdade, a infor-
mação mais importante fica em um cookie chamado PHPSESSID, que
guarda um código único de identificação da sessão daquele usuário que
está acessando a aplicação PHP.
Nós também podemos usar os Cookies para guardar informações que
serão mantidas entre as requisições. Para isso, basta usar uma outra super
global do PHP chamada $_COOKIE. Esta super global também é um
array, assim como a $_SESSION.
A outra experiência é atualizar a página após cadastrar uma tarefa. Faça isso
usando F5 ou outra opção de atualização do navegador. O que acontece? A última
tarefa cadastrada se repete! E continua se repetindo após as atualizações da página!
Veremos mais para frente como resolver estes dois problemas.
4.6
Resumo
Neste capítulo iniciamos o desenvolvimento de uma lista de tarefas. Ela ainda é bem
simples e contém poucos dados, mas já estamos trabalhando com formulários e en-
trada de dados na web utilizando a super global $_GET do PHP e também estamos
manipulando as sessões utilizado a super global $_SESSION.
Super globais são variáveis do PHP que estão disponíveis em qualquer ponto da
aplicação. No caso das super globais $_GET e $_SESSION, os valores são guardados
em arrays.
Importante: sempre que quiser usar sessões será necessário usar a função
session_start(), sem isso a sessão simplesmente não funciona. Fica a dica :D
4.7
Desafios
Muito bem, é hora de alguns desafios:
Usando os mesmos conceitos que vimos até agora, monte uma lista de contatos
na qual devem ser cadastrados o nome, o telefone e o e-mail de cada contato.
41
4.7. Desafios
Casa do Código
Continue usando as sessões para manter os dados.
Crie uma cópia do projeto até agora (pois vamos continuar nos próximos ca-
pítulos) e altere para usar a super global $_COOKIE em vez de usar as sessões.
Para adicionar um Cookie use a função setcookie() que recebe
o nome
do cookie e um texto com seu valor. Para pegar um cookie já definido use a
superglobal $_COOKIE.
Depois de alterar a aplicação para usar cookies no lugar de sessões, tente abrir
os cookies nas opções do navegador e veja se seus dados aparecem lá.
42
Capítulo 5
Tratamento de diferentes campos de
formulários
No capítulo anterior, construímos a base para a nossa lista de tarefas. Agora vamos
adicionar mais informações e funcionalidades ao projeto.
Antes de começar a adicionar mais informações e funcionalidade podemos parar
para analisar um pouco nosso cenário atual e então decidir se podemos continuar
com ele como está ou se podemos fazer algo para melhorar.
Esta pode ser uma etapa importante no desenvolvimento de uma aplicação, pois
pode tornar o trabalho à frente mais simples ou mais complicado. Às vezes é melhor
alterar a base da aplicação para poder evoluir de forma mais eficiente do que insistir
em um código não muito bom. Não se preocupe se não conseguir fazer isso logo no
começo, pois a experiência também ajuda bastante neste tipo de decisão.
5.1. Organizando o código em arquivos separados
Casa do Código
5.1
Organizando o código em arquivos separados
O que temos até o momento é uma lista de tarefas que tem apenas o nome da ta-
refa e só permite adicionar novas tarefas. Tudo isso foi feito em apenas um arquivo
que contém um pouco de HTML e um pouco de PHP. Podemos continuar com esta
estrutura, mas com o tempo o arquivo vai crescer e pode ficar complicado de ler e
entender um arquivo muito grande e dividido em mais de uma linguagem. Por isso,
aqui entra uma decisão importante, vamos separar nossa aplicação em dois arqui-
vos, um deles fará o processamento de entrada de dados e manipulação da sessão e
o outro irá exibir o formulário de cadastro de tarefas e a lista das tarefas cadastradas.
Não adicionaremos código novo, vamos apenas separar o código atual em dois
arquivos um arquivo será o tarefas.php com este conteúdo:
<?php
session_start();
if (isset($_GET['nome'])) {
$_SESSION['lista_tarefas'][] = $_GET['nome'];
}
if (isset($_SESSION['lista_tarefas'])) {
$lista_tarefas = $_SESSION['lista_tarefas'];
} else {
$lista_tarefas = array();
}
include "template.php";
Perceba que apenas juntamos os trechos de PHP que antes estavam separados
em apenas um arquivo que contém somente código PHP. Outro detalhe importante