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

8
Programação Web Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 11 – Controle de sessão de usuário Dalton Martins [email protected] São Paulo, Novembro, 2011

description

 

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

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

Programação Web

Fatec IpirangaAnálise e Desenvolvimento de Sistemas

Aula 11 – Controle de sessão de usuário

Dalton [email protected]

São Paulo, Novembro, 2011

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

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 par

Surge uma outra solução → gerenciamento de sessões!

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

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?

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

2 modos de atribuir SID

1. 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.

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

Trabalhando com gerenciamento de sessão

Alguns 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;

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

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>";

}?>

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

Exemplo – parte 2

<?phpsession_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!";}

?>

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

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>