PHP: Cookies e sessões
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula PHP+MySQL 08, 24-05-2012
Gestão de sessões (session handling) com PHP

surge com o PHP 4.0 e é fundamental para as aplicações Web 2.0

  • ambientes
     • multi-utilizador
     • interactivos, colaborativos
     • personalizáveis


É necessário ajustar a aplicação Web às acções e preferências (passadas,
presentes e futuras) de cada utilizador -> propagar estados/preferências
por várias páginas
Cookies

utilização de cookies

  • guardam a informação desses estados/preferências no cliente (browser)
  • existem algumas limitações ao uso de cookies (tamanho/capacidade,
    número, segurança)

definir a data em que o cookie expirará

  • $data_expira_cookie = mktime(0,0,0,12,25,2011);
  • mktime (hour, min, sec, month, day, year)

criar o cookie
  • setcookie('nome', 'valor', $data_expira_cookie);
Cookies

ler o valor armazenado no cookie

  • $_COOKIE['cookie_natal']

alterar o cookie
  • setcookie('nome', 'novo valor', time()+5*3600)
  • nova duração é de 5h!

apagar o cookie

  • se tempo = 0 o cookie é apagado no final da sessão
  • colocar um tempo passado para apagar um cookie

colocar qualquer setcookie sempre no início do código da página ->
antes de <HTML>!
Sessões

utilizador inicia na aplicação uma sessão de trabalho (normalmente após
efetuar um login) -> session_start()

é atribuído um identificador único (Session ID - SID) a essa sessão ->
gravado numa cookie

  • session_id() -> permite conhecer o SID (qofias54lqehctohipevl5cph3)
  • session_id(“novo sid”) -> também permite especificar um SID



associados a cada sessão existem diferentes parâmetros que definem o
ambiente de utilização da aplicação para o utilizador
  • SESSION ID
  • SESSION VARS
Sessões

sempre que necessário o SID é lido e os parâmetros associados
(armazenados em variáveis de sessão) são fornecidos pelo servidor

  • $_SESSION[‘nome_variavel_sessao’]


  • cookie com o SID pode manter-se no cliente, permitindo assim sessões
    persistentes -> que perduram entre utilizações sucessivas da aplicação
     • Exemplo: http://www.phpbuilder.com/tips/item.php?id=179
Sessões

funções importantes nas gestão de sessões:

  • session_start()
     • inicia uma nova sessão (atribuindo novo SID) ou continua uma sessão
       existente (usando um SID existente)
  • session_unset()
     • apaga todas as variáveis de sessão entretanto criadas
     • coloca a sessão no seu estado inicial (como quando foi criada)
  • session_destroy()
     • apaga as variáveis de sessão e destrói a sessão
     • não destrói a cookie
Sessões

criar e destruir variáveis de sessão

    // depois de um session_start();
    // criar uma variável de sessão:
    $_SESSION[‘fundo'] = “#000";
    // para destruir a variável de sessão
    unset($_SESSION[‘fundo']); !


como são guardados no servidor, os dados de uma sessão?
• num ficheiro de texto com todas as variáveis de sessão e respetivos valores
  serializados

	    nome_utilizador|s:6:"Manuel";perfil|s:1:"1";interface|s:1:"1"

PHP MySQL Aula 08

  • 1.
    PHP: Cookies esessões Carlos Santos LabMM 4 - NTC - DeCA - UA Aula PHP+MySQL 08, 24-05-2012
  • 2.
    Gestão de sessões(session handling) com PHP surge com o PHP 4.0 e é fundamental para as aplicações Web 2.0 • ambientes • multi-utilizador • interactivos, colaborativos • personalizáveis É necessário ajustar a aplicação Web às acções e preferências (passadas, presentes e futuras) de cada utilizador -> propagar estados/preferências por várias páginas
  • 3.
    Cookies utilização de cookies • guardam a informação desses estados/preferências no cliente (browser) • existem algumas limitações ao uso de cookies (tamanho/capacidade, número, segurança) definir a data em que o cookie expirará • $data_expira_cookie = mktime(0,0,0,12,25,2011); • mktime (hour, min, sec, month, day, year) criar o cookie • setcookie('nome', 'valor', $data_expira_cookie);
  • 4.
    Cookies ler o valorarmazenado no cookie • $_COOKIE['cookie_natal'] alterar o cookie • setcookie('nome', 'novo valor', time()+5*3600) • nova duração é de 5h! apagar o cookie • se tempo = 0 o cookie é apagado no final da sessão • colocar um tempo passado para apagar um cookie colocar qualquer setcookie sempre no início do código da página -> antes de <HTML>!
  • 5.
    Sessões utilizador inicia naaplicação uma sessão de trabalho (normalmente após efetuar um login) -> session_start() é atribuído um identificador único (Session ID - SID) a essa sessão -> gravado numa cookie • session_id() -> permite conhecer o SID (qofias54lqehctohipevl5cph3) • session_id(“novo sid”) -> também permite especificar um SID associados a cada sessão existem diferentes parâmetros que definem o ambiente de utilização da aplicação para o utilizador • SESSION ID • SESSION VARS
  • 6.
    Sessões sempre que necessárioo SID é lido e os parâmetros associados (armazenados em variáveis de sessão) são fornecidos pelo servidor • $_SESSION[‘nome_variavel_sessao’] • cookie com o SID pode manter-se no cliente, permitindo assim sessões persistentes -> que perduram entre utilizações sucessivas da aplicação • Exemplo: http://www.phpbuilder.com/tips/item.php?id=179
  • 7.
    Sessões funções importantes nasgestão de sessões: • session_start() • inicia uma nova sessão (atribuindo novo SID) ou continua uma sessão existente (usando um SID existente) • session_unset() • apaga todas as variáveis de sessão entretanto criadas • coloca a sessão no seu estado inicial (como quando foi criada) • session_destroy() • apaga as variáveis de sessão e destrói a sessão • não destrói a cookie
  • 8.
    Sessões criar e destruirvariáveis de sessão // depois de um session_start(); // criar uma variável de sessão: $_SESSION[‘fundo'] = “#000"; // para destruir a variável de sessão unset($_SESSION[‘fundo']); ! como são guardados no servidor, os dados de uma sessão? • num ficheiro de texto com todas as variáveis de sessão e respetivos valores serializados nome_utilizador|s:6:"Manuel";perfil|s:1:"1";interface|s:1:"1"