1-PHP Introdução
Exercícios
Curso Banco Dados
IntroducaoBD.php

Cap. 2 - PHP Intermediário

Sessões

Objetivo: Estudar como passar parâmetros entre páginas.

Conteúdo da Aula:


Introdução

No PHP Existem diferentes formas de passar dados entre páginas:
  • usando cookies
  • usando formulários (e mais especificamente o tipo hidden)
  • usando o comando header() e o método GET (enviando via um link)
  • usando session
Nas seções seguintes veremos essas alternativas. De todas elas dedicaremos mais atenção à utilização das sessões.

Sessões

Uma forma bastante elegante de se trabalhar a passagem de parâmetros entre páginas é a definição de sessões.

Uma sessão é um mecanismo para persistir informações nas diferentes páginas da web.

Como explicado no site php.net, "O suporte a sessões no PHP consiste em uma maneira de preservar certos dados atráves dos acessos subsequentes.".

Entender como funcionam e saber manipular sessões é fundamental para o desenvolvimento de sites em php mais elaborados. As sessões possibilitam que as informações do usuário sejam mantidas em todas as páginas de um site ou aplicativo.

Para entender porque as sessões são necessárias, vamos rever como se dá o processo de acesso às páginas web, via protocolo HTTP.

O protocolo HTTP é um protocolo estático, o que significa que não há como um servidor lembrar um usuário específico entre várias solicitações.

Por exemplo, ao acessar uma página da web, o servidor é apenas responsável por fornecer o conteúdo da página solicitada. Assim, quando você acessa outras páginas do mesmo site, o servidor web interpreta cada uma das solicitações separadamente, como se não estivessem relacionadas entre si. Não há como o servidor saber que cada solicitação se originou do mesmo usuário.

O diagrama da figura 1 representa a conexão HTTP. Nela o cliente faz a requisição (acessa a página no servidor) e o servidor responde, enviando as informações, ou seja, a página, que é apresentada no navegador do lado do cliente. Nessa transação "padrão" não há "memória". Ou seja, a página é mostrada no navegador simplesmente. Se outra página for acessada os dados da primeira não são preservados.



fig1
Figura 1: Representação de uma conexão "padrão" HTTP. O cliente faz a solicitação e o servidor envia a página, que é apresentada no navegador. Não existe relação entre as diversas páginas do site.

No diagrama da figura 2 temos uma conexão HTTP com uma "memória". A primeira página acessada envia um identificador (variáveis) que são armazenadas no servidor e podem ser utilizadas em outras páginas do site. Esse é o fundamento do uso das sessões em PHP. Uma vez iniciada uma sessão, é possível preservar dados entre as páginas.

Uma sessão permite que informações sejam compartilhadas entre as diferentes páginas de um único site ou aplicativo. Isso permite que o servidor saiba que todas as solicitações são originadas do mesmo usuário, permitindo que o site exiba informações e preferências específicas do usuário.



fig2
Figura 2: Exemplo de uma conexão HTTP em que as páginas trocam informações. Dados podem ser preservador entre as páginas.

Formalizando o Conceito de Sessão em PHP

Uma sessão em PHP é um processo que se inicia ao se carregar uma página com o comando session_start(). Durante esse processo, os dados definidos em uma página podem ser recuperados em outra página (desde que o browser não seja fechado).

Dessa forma, fazendo-se uso de uma sessão é possível armazenar informações importantes do usuário do site para acessá-las em outras páginas. É possível também enviar dados de uma página para outra.

No contexto do PHP, uma "sessão" é o tempo que um usuário gasta num site.

Uma sessão PHP permite que os dados sejam preservados a partir da atribuição de uma identificação única chamada "Session ID", a cada visitante do site. Esse ID de sessão pode ser armazenada como um cookie.

Após a sessão ser criada, variáveis de sessão ficam disponíveis para o visitante da página. Para tornar esta informação disponível sessão, PHP faz o seguinte:

  • PHP atribui um número de ID da sessão.

  • Esse número é alfanumérico e é exclusivo para o usuário. A identificação da sessão é armazenada em uma variável do sistema PHP chamado PHPSESSID.

  • PHP salva as variáveis em um arquivo no servidor.

  • O arquivo é nomeado com o número de ID da sessão. Ele é armazenado em um diretório especificado por session.save_path no arquivo php.ini.

Trabalhando com Sessões

Importante: lembre-se sempre que para trabalhar com sesões, todas as páginas que estão envolvidas no processo devem ter, no seu início, o comando:

session_start()

Algumas Funções e Variáveis Pré-definidas

Existem várias funções relacionadas com as operações das sessões.

Obviamente uma que nunca pode faltar é a session_start(), que inicia uma sessão.

Mas existem outras, tais como session_destroy(), session_name(), session_unset(), session_cache_limiter(). Veja a lista completa das funções que trabalham com sessões no link: funções para uso das sessões listadas no php.net

Os valores definidos na sessão podem ser guardados dentro de um array, criado quando do início da sessão. Esse é array é denominado $_SESSION (ou $HTTP_SESSION_VARS no PHP 4.0.6 ou inferior)


Sessões por Exemplos

Vamos aprender sobre sessões a partir de exemplos.

Exemplo 1: Usando array $_SESSION para contar acesso

Nesse primeiro exemplo (extraído de tizag.com) simplesmente utiliza-se a sessão para contar acesso. Por enquanto não são passados valores de uma página para outra.

Exemplo 1: Contando o número de acessos

                            
<?php
session_start();
if(isset($_SESSION['views']))
    $_SESSION['views'] = $_SESSION['views']+ 1;
else
    $_SESSION['views'] = 1;

echo "views = ". $_SESSION['views'];
?>

Exemplo 2: Usando a variável $_SESSION entre arquivos

Nesse exemplo mostramos a passagem de valores entre páginas. Após serem lidos valores via um formulário HTML, os valores são transferidos entre páginas, usando-se a variável de sessão $_SESSION. Quando a sessão é terminada ("destruida") as variáveis passam a não existir mais.

Esse exemplo possui quatro programas:

  1. O primeiro, é um formulário html

  2. O segundo recebe os dados do formulário e os salva na variável (array) $_SESSION.

  3. O terceiro lê os dados de $_SESSION e encerra a sessão

  4. O quarto é usado para mostrar que as variáveis da sessão não existem mais após o comando session_destroy().

A figura seguinte apresenta um diagrama com a relação entre os programas desse exemplo.



fig3
Figura 3: Relação entre os programas do Exemplo 2.

Exemplo 2: passagem de dados entre páginas.

                            
------------------------------------------------------------
arquivo 1: formulario.html
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Language" content="pt-br">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Exemplo 2</title>
    </head>
<body>
<h1>Exemplo com formulário e sessões</h1>
<p>Escolha a cor, a figura geométrica e o tamanho.</p>

<form action="RecebeForm.php" method="POST">
  <label for="cores">Escolha a Cor:</label>
  <select name="cor" >
    <option value="red">Vermelho</option>
    <option value="yellow">Amarelo</option>
    <option value="green">Verde</option>
    <option value="blue">Azul</option>
  </select>
  &puncsp;
  <label for="fig">Escolha a Figura:</label>
  <select name="figura" >
    <option value="circ">Círculo</option>
    <option value="quad">Quadrado</option>
    <option value="elips">Elipse</option>
    <option value="triang">Triângulo</option>
  </select>
  <br><br>
  &puncsp;
  <label for="tam">Escolha o Tamanho:</label>
  <select name="tamanho" >
    <option value="P">Pequeno</option>
    <option value="M">Médio</option>
    <option value="G">Grande</option>
  </select>
  <br><br>
  <input type="submit" value="Enviar" name="submit">
</form>
</body>
</html>
-------------------------------------------------------
arquivo 2: RecebeForm.php
<?php
// inicia a sessão
session_start();
$figuras = 
    array("circ"=>"Círculo","quad"=>"Quadrado",
               "elips"=>"Elipse","triang"=>"Triângulo");
$cores = 
    array("yellow"=>"Amarelo","red"=>"Vermelho",
                      "blue"=>"Azul","green"=>"Verde");
// dados do formulario
if(isset($_POST['submit'])){
    $f = $_POST['figura'];
    $c = $_POST['cor'];
    $t = $_POST['tamanho'];
    $fig = $figuras[$f];
    $cor = $cores[$c];
    $tam = $t;
    $_SESSION['cor'] = $cor;
    $_SESSION['figura'] = $fig;
    $_SESSION['tamanho'] = $t;
    echo "<br>Você escolheu: 
              ".$cor.", ",$fig.", ".$tam."<br>";
echo "<br><a href='DadosForm.php'> Continuar...</a>"; } ?> ------------------------------------------------ arquivo 3: DadosForm.php <?php // inicia a sessão session_start(); $f = $_SESSION['cor']; $c = $_SESSION['figura']; $t = $_SESSION['tamanho']; echo "<br>Você escolheu: ".$c.", ",$f.", ".$t."<br>"; echo "encerrando a sessão..."; session_destroy(); echo "<br>Próxima página não terá as variáveis...confira:<br> <a href='SessaoFechada.php'>Continuar...</a>"; ?> ---------------------------------------------------------------- arquivo 4: SessaoFechada.php <?php // inicia a sessão session_start(); var_dump($_SESSION); $f = $_SESSION['cor']; $c = $_SESSION['figura']; $t = $_SESSION['tamanho']; echo "<br>Você escolheu: ".$c.", ",$f.", ".$t."<br>"; echo "<br><a href='formulario.html'>Voltar pro Início.</a>"; ?> --------------------------------------------------------------------

Exercícios de Fixação

Exemplos

Execute os exemplos apresentados nessa página.

Exercício

Faça um formulário HTML-PHP contendo dados para matrícula de um aluno em uma escola. O formulário deve conter no mínimo 6 dados diferentes e deve ser enviado para um página PHP via método POST e depois a outra página PHP usando o recurso da sessão.


Referências


voltar ao início da página