Chamá-se variáveis de sessões aquelas que guardam valores enquanto o navegador do usuário estiver aberto. Ao encerrar o navegador estas variáveis são perdidas. O interessante destas sessões é que elas podem ser acessadas por qualquer página de sua aplicação PHP.
Usamos sessões principalmente para realizar autenticações de acesso em telas de login, onde o usuário devidamente autenticado recebe uma sessão para o acesso à um determinado recurso do sistema. Bem como, podemos utilizar as sessões para personalizar ações do visitante, por exemplo, um carrinho de compras de um e-commerce pode ser programado usando sessões para guardar os itens adicionados pelo visitante, isso reduz o uso do banco de dados e torna a aplicação mais ágil.
Sintaxe
Sempre que necessitamos de uma variável de sessão definir o inicio da sessão logo no início do código da página com a função session_start();
<?php
session_start();
?>
Agora todos os valores que queremos guardar devem ser declarados dentro de um super arrays $_SESSION, exemplo;
<?php
session_start();
$_SESSION['nome'] = "Anderson";
?>
Exemplo de uso.
Neste exemplo, vamos usar a tela de identificação de um chat para que o usuário possa se identificar e ter seu nickname registrado em uma sessão. Dessa forma, o chat sempre saberá quem está logado.
Considere o seguinte formulário:
O nome do input text é nick e o input color é cor. Se quisermos gravar os valores destes campos em uma sessão, faríamos da seguinte forma;
<?php
session_start();
if ($_POST) //se o botão de submit for clicado
{
$_SESSION['nick'] = $_POST['nick'];
$_SESSION['cor'] = $_POST['cor'];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>SuperChat</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
</head>
<body style="font-family:Open Sans;">
<div class="container">
<br>
<div class="well" align="center"><h1><strong>Super Chat <strong>UOW</strong></h1></div>
<form method="post">
<div class="panel panel-success">
<div class="panel-heading">Digite seu nick</div>
<div class="panel-body">
<div class="col-md-4"></div>
<div class="col-md-4">
<input type="text" name="nick" class="form-control" size="10" required> <br/>
Escolha um cor:
<input type="color" name="cor">
<br><br>
<div align="center">
<button type="submit" class="btn btn-success"> Entrar <span class="glyphicon glyphicon-log-in"></span> </button>
</div>
</div>
<div class="col-md-4"></div>
</div>
</div>
</form>
</div>
</body>
</html>
Para ler os valores da sessão, basta executar a função echo(). Neste vamos exemplo vamos criar a página chat.php que irá ler os valores da sessão;
<?php
session_start();
echo $_SESSION['nick'] . "<br>";
echo $_SESSION['cor'];
?>
Destruindo a sessão
Uma ação de loggoff pode ser realizada destruindo os valores armazenados na sessão. Para isso, crie um arquivo sair.php com os seguintes comandos;
<?php
session_start();
// Apaga todas as variáveis da sessão
$_SESSION = array();
// Finalmente, destrói a sessão
session_destroy();
?>
Caso queira outros exemplos e explicações sobre sessões no PHP, leia este outro artigo – Como criar, acessar e destruir sessões em PHP