Trabalhando com sessões em PHP e variável $_SESSION

Trabalhando com sessões em PHP

Trabalhar com o conceito de sessões permite que um conjunto de dados possam ser utilizados por um usuário durante todo o tempo em que acessa e navega dentro de uma aplicação Web, sendo persistidos. Desta forma, é possível, por exemplo, verificar se um usuário está logado no site, transportar o conteúdo de um carrinho de compras, controlar as permissões de execução do usuário, e muito mais. 

A variável superglobal $_SESSION é um array associativo que contém variáveis de sessão que ficam disponíveis para o script atual e para as próximas páginas acessadas por um usuário.

Criando uma sessão - função session_start()

A função session_start() permite iniciar uma nova sessão ou resumir (continuar) uma sessão já existente.

Sintaxe:

bool session_start([array $opções = array()])

Retorno da função:

  • TRUE se a sessão é iniciada com sucesso.
  • FALSE se a sessão falha em iniciar.

A sessão é iniciada ou resumida baseada em um identificador de sessão passado via requisição GET ou POST, ou ainda via um cookie.

Exemplo 01:

Vamos trabalhar com duas páginas php. Na primeira página vamos iniciar uma sessão e passar valores para duas variáveis de sessão criadas:

<?php
// Página 01

session_start();

echo 'Esta é a página 01, onde a sessão será criada';

$_SESSION['aula'] = 'PHP';
$_SESSION['hora'] = time();

// Link para a página 02:
echo '<br /><a href="pagina2.php">Clique para ir à página 02</a>';
?>

Após carregar a página 01, a sessão é criada e as variáveis de sessão 'aula' e 'hora' são declaradas e inicializadas. Elas poderão ser acessadas na página 02, clicando-se no link fornecido.
A seguir está o código do arquivo pagina2.php:

<?php
// E esta é a página 02, onde recuperaremos as variáveis de sessão

session_start();

date_default_timezone_set('America/Sao_Paulo');
echo 'Agora estamos na página 02<br />';
echo "Estamos na aula de " . $_SESSION['aula'] . "<br>";
echo "E agora são " . date('H:i:s', $_SESSION['hora']) . " horas";
?>

Veja o resultado obtido na página:

Sessions em PHP

Neste exemplo, a sessão é criada logo que o usuário carrega a página 01. Porém, é muito comum que se deseje criar uma nova sessão apenas quando algum evento específico ocorrer, como o clique em um botão de formulário. No próximo exemplo vamos criar um formulário que, ao ser enviado, inicia uma sessão com dados fornecidos pelo usuário.

Exemplo 02:

Também trabalharemos com dois arquivos: a primeira página conterá um formulário onde o usuário deverá digitar seu nome e clicar em um botão para envio dos dados ao servidor, criando uma nova sessão, e o segundo arquivo será um script PHP que irá receber os dados enviados e exibi-los na página, após retomar a sessão.

Vamos aos códigos:

Primeiramente, o código do arquivo pagina01.php, que exibirá um formulário e permitirá a criação de uma sessão:

<?php
// Testando sessões em PHP
if(isset($_REQUEST['valor']) and ($_REQUEST['valor'] == 'enviado')) { // cria sessão se usuário tiver clicado no botão enviar do formulário
 session_start();
// cria variáveis de sessão e as inicializa com os dados do formulário:
 $_SESSION['nome'] = $_POST['frm_nome'];
 $_SESSION['sobrenome'] = $_POST['frm_sobrenome'];
// exibe link para a página 02:
 echo "<a href='sessao2.php'>Ir para página 2</a>";
 }
else { // Se usuário ainda não clicou no botão de enviar, mostra o formulário na página:
?>
<form name="form1" action="pagina01.php?valor=enviado" method="POST">
 Digite seu nome:
 <input type="text" name="frm_nome"><br>
 Digite seu sobrenome:
 <input type="text" name="frm_sobrenome"><br>
 <input type="submit" value="Enviar">
</form>
<?php
 }
?>

Neste exemplo, preencherei os formulário com meus dados e clicarei em Enviar:

Sessões em PHP - formulário de envio

E agora o código do arquivo de destino, pagina02.php:

<?php
// retomando a sessão criada:
 session_start();
// ecoando os dados gravados na sessão:
 echo "Os dados recebidos foram:<br><br>";
 echo "Nome: " . $_SESSION['nome'] . "<br>";
 echo "Sobrenome: " . $_SESSION['sobrenome'];
?>

Neste exemplo, usamos o array associativo $_REQUEST para verificar se o usuário enviou o formulário com os dados, lendo o valor da variável valor (se ela tiver sido criada), que é enviada como parâmetro da action do formulário.

Se a variável não existir, o formulário é apresentado ao usuário para preenchimento e envio.

Ao clicar no botão enviar, é criada uma sessão e duas variáveis de sessão são definida: nome e sobrenome, as quais são recuperadas ao acessar a página 02, clicando-se no link exibido.

Abaixo o resultado obtido após enviar o formulário:

Sessions em PHP - resultado

Encerrando a sessão

Podemos encerrar a sessão aberta com a função session_destroy(). Esta função elimina todos os dados registrados na sessão atual.

Sintaxe:

bool session_destroy();

Retorno da função:

  • TRUE se a sessão é iniciada com sucesso.
  • FALSE se a sessão falha em iniciar.

Vamos usar variáveis de sessão para criar um CRUD em PHP com sistema de login a partir das próximas lições.

 

Sobre Fábio dos Reis (1250 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*