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:
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:
- 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.
Escreva um comentário