sessões (in portuguese)

20
Sessões Bruno Pedro <[email protected] > PHP Advanced - 18 de Setembro de 2008

Upload: bruno-pedro

Post on 05-Dec-2014

2.837 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Sessões (in portuguese)

Sessões

Bruno Pedro <[email protected]>

PHP Advanced - 18 de Setembro de 2008

Page 2: Sessões (in portuguese)

Sessões

PHP Advanced

Conteúdo

• Conceito de sessão

• Formas de identificar

• Dados de sessão

• Projecto

• Resumo

2

Page 3: Sessões (in portuguese)

Sessões

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

3

Page 4: Sessões (in portuguese)

Sessões

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

4

Page 5: Sessões (in portuguese)

Sessões

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

5

Page 6: Sessões (in portuguese)

Sessões

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ê?

6

Page 7: Sessões (in portuguese)

Sessões

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

7

Page 8: Sessões (in portuguese)

Sessões

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

8

Page 9: Sessões (in portuguese)

Sessões

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

9

Page 10: Sessões (in portuguese)

Sessões

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

10

Page 11: Sessões (in portuguese)

Sessões

PHP Advanced

Sessões

• Exemplo de utilização de sessão

11

Page 12: Sessões (in portuguese)

Sessões

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

12

número de sub-níveisabaixo do directório

Page 13: Sessões (in portuguese)

Sessões

PHP Advanced

Sessões• É necessário criar todos os directórios antes de

gravar os ficheiros de sessão

13

Page 14: Sessões (in portuguese)

Sessões

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

14

Page 15: Sessões (in portuguese)

Sessões

PHP Advanced

Aumentar a segurança

15

• A cada novo pedido, a sessão é removida e é gerado um novo identificador!

Page 16: Sessões (in portuguese)

Sessões

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

16

Page 17: Sessões (in portuguese)

Sessões

PHP Advanced

Projecto

• Utilizar a sessão para gravar todas as informações relativas ao utilizador, evitando leituras consecutivas à base de dados

17

Page 18: Sessões (in portuguese)

Sessões

PHP Advanced

Resumo

• Conceito de sessão

• Identificação da sessão

• Configurações

• Manipulação de dados

18

Page 19: Sessões (in portuguese)

OOP em PHP

PHP Summer School

Questões?

19

Page 20: Sessões (in portuguese)

Sessões

PHP Advanced

Mais informação

20

• O meu blog: http://unfoldingtheweb.com/

• Manual de PHP: http://www.php.net/

• PEAR: http://pear.php.net/