Aula 11 - Controle de sessão em PHP - Programação Web
-
Upload
dalton-martins -
Category
Education
-
view
4.617 -
download
2
description
Transcript of 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
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!
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?
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.
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;
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>";
}?>
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!";}
?>
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>