Aula 11 - Controle de sessão em PHP - Programação Web

6,244 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Aula 11 - Controle de sessão em PHP - Programação Web

  1. 1. Programação Web Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 11 – Controle de sessão de usuário Dalton Martins dmartins@gmail.comSão Paulo, Novembro, 2011
  2. 2. Importância do controle de sessãoO protocolo HTTP, utilizado para trocar dados com um servidor web, não faz controle de estado de conexão;Ou seja, a cada nova requisição para um servidor, o protocolo não considera o que ocorreu anteriormente;Isso traz um problema quando queremos customizar o comportamento de aplicações ao perfil de determinados usuários.Umas das primeiras soluções para esse problema foi a utilização de cookies → informações que são gravadas na máquina do usuário e podem ser recuperadas por uma aplicação posteriormente;No entanto, os cookies possuem limitações e fragilidades em termos de segurança, não sendo o modo mais adequado parSurge uma outra solução → gerenciamento de sessões!
  3. 3. Gerenciamento de sessõesÉ um dispositivo utilizado por alguns servidores e linguagens de programação Web que: → cada visitante de um site recebe um identificador único, chamado de SID (session ID); → o SID pode ser correlacionado com qualquer outro conjunto de informações, como por exemplo, a cor de fundo do site, níveis de permissão de acesso, módulos disponíveis, etc... → em termos de um banco de dados relacional, o SID pode ser uma chave primária que correlaciona os dados de um usuário. No entanto, como o SID é mantido fixo relacionado a um usuário se o protocolo HTTP não guarda estado de conexão?
  4. 4. 2 modos de atribuir SID1. Cookies: Ao invés de guardar as preferências do usuário num cookie em sua máquina, o novo mecanismo de gerenciamento de sessão armazena apenas o SID do usuário em um cookie local, ficando todo o resto da informação a critério de controle da aplicação;2. Reescrita da URL: É um mecanismo que incorpora na URL o código SID de um usuário. É um modo mais frágil.
  5. 5. Trabalhando com gerenciamento de sessãoAlguns recursos fundamentais: → session_start() : inicializa uma sessão e, se já inicializada, recupera as variáveis de sessão atuais numa página; → session_destroy() : finaliza a sessão, destruindo todas as variáveis em utilização; → variáveis estilo $_SESSION[nome] : é o mecanismo que permite criarmos variáveis de sessão. Podemos utilizar quantas acharmos necessário; → session_encode() : codifica as variáveis de sessão é uma única linha string. Facilita gravar logs em banco de dados; → session_decode() : decodifica as variáveis, permitindo separá-las novamente;
  6. 6. Exemplo – parte 1<?php session_start(); if (! isset($_SESSION[usuario])) { if (isset($_POST[usuario])) { $_SESSION[usuario]=$_POST[usuario]; echo "Usuario registrado! Recarregue a página para ver o que ocorre!"; } else { require_once(login.html); } } else { echo "O seu identificador de sessão é ".session_id()."<br>"; $_SESSION[usuario]="pedro"; $_SESSION[datalogin]= date("M d Y H:i:s"); echo "<br>"; echo "Nome de usuario..: ".$_SESSION[usuario]."<br>"; echo "Data de login....: ".$_SESSION[datalogin]."<br><br>"; $codificasessao = session_encode(); echo $codificasessao."<br><br>"; echo "<a href="outroarquivo.php">Acessar outro arquivo para testar variaveis de sessao</a>"; }?>
  7. 7. Exemplo – parte 2<?php session_start(); if (isset($_SESSION[usuario])) { echo "Sessao previamente iniciada <br>"; echo "Usuario logado...: ".$_SESSION[usuario]."<br>"; echo "Finalizando a sessao...<br>"; session_destroy(); echo "<a href="controleteste.php">Acessar arquivo inicial para testar variaveis de sessao</a>"; } else { echo "A sessao nao foi previamente iniciada!"; }?>
  8. 8. Exemplo – parte 3<p> <form method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>"> Usuario:<br /><input type="text" name="usuario" size="10" /><br /> Senha:<br /><input type="password" name="senha" SIZE="10" /><br /> <input type="submit" value="Login" /> </form></p>

×