Bóson Treinamentos em Ciência e Tecnologia

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

Sessões em PHP e variável superglobal $_SESSION

Como trabalhar 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:

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:

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:

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:

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:

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

 

Sair da versão mobile