As sessões permitem gravar dados de forma persistente entre pedidos, como informações sobre o usuário ou estado da aplicação. Cada sessão é associada a um identificador único gerado por algoritmo. Esse ID pode ser armazenado em cookie ou parâmetros e é usado para recuperar os dados da sessão na próxima requisição. Funções como session_start() iniciam a sessão e $_SESSION contém as variáveis gravadas.
2. PHP Advanced
Conteúdo
• Conceito de sessão
• Formas de identificar
• Dados de sessão
• Projecto
• Resumo
Sessões 2
3. PHP Advanced
Sessão
• Permite gravar de uma forma persistente
informação entre pedidos
• Gravação pode ser feita em disco, base de
dados, ou outro meio persistente
• Podem ser gravados dados sobre o
utilizador, sobre o estado da aplicação ou
dados de navegação
Sessões 3
4. PHP Advanced
Sessão
• Cada sessão está associada a um
identificador único (UID)
• Os UIDs são gerados através de um
algoritmo que garante a unicidade
Sessões 4
5. PHP Advanced
Sessão
• O UID pode ser armazenado no browser
do utilizador através de um cookie, de um
parâmetro GET ou POST
• Tipicamente é utilizado um cookie
Sessões 5
6. PHP Advanced
Cookies
• Não confundir sessão com a gravação de
informação em cookies
• Deve-se evitar a utilização de cookies para
gravar informação arbitrária sobre o
utilizador ou a aplicação
• Porquê?
Sessões 6
7. PHP Advanced
Funções
• session_start(): inicia uma sessão, utilizando
configurações pré-definidas
• $_SESSION: superglobal que contém todas
as variáveis gravadas na sessão
Sessões 7
8. PHP Advanced
Funções
• session_destroy(): remove toda a
informação associada a uma sessão
• session_regenerate_id(): refaz o
identificador de sessão e grava-o no cookie
do browser
Sessões 8
9. PHP Advanced
Configurações
• Através de ini_set()
• session.save_path: directório onde são
gravados os ficheiros de sessão
• session.name: nome da sessão e do
cookie que é gravado no browser
Sessões 9
10. PHP Advanced
Configurações
• session.cache_expire: tempo de vida da
sessão
• session.cookie_lifetime: tempo de vida do
cookie onde fica gravado o ID de sessão
Sessões 10
11. PHP Advanced
Sessões
• Exemplo de utilização de sessão
Sessões 11
12. PHP Advanced
Sessões
• É possível gravar a sessão num directório
hashed, de modo a não atingir o máximo de
ficheiros por directório
número de sub-níveis
abaixo do directório
Sessões 12
13. PHP Advanced
Sessões
• É necessário criar todos os directórios antes de
gravar os ficheiros de sessão
Sessões 13
14. PHP Advanced
Aumentar a segurança
• Invocar session_regenerate_id(true)
• Remove a sessão antiga
• Utiliza um novo identificador
• Previne session hijacking através de
sucessivas tentativas de injectar um ID no
cookie
Sessões 14
15. PHP Advanced
Aumentar a segurança
• A cada novo pedido, a sessão é removida e
é gerado um novo identificador!
Sessões 15
16. PHP Advanced
Outras formas
• O PEAR::Auth utiliza sessões para gerir a
autenticação
• É possível, a qualquer momento, escrever
dados em $_SESSION, desde que a sessão
tenha sido iniciada
Sessões 16
17. PHP Advanced
Projecto
• Utilizar a sessão para gravar todas as
informações relativas ao utilizador, evitando
leituras consecutivas à base de dados
Sessões 17
18. PHP Advanced
Resumo
• Conceito de sessão
• Identificação da sessão
• Configurações
• Manipulação de dados
Sessões 18