English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá como usar PHP session para armazenar temporariamente alguns dados no servidor.
Embora você possa usar Cookie para armazenar dados, ele existe alguns problemas de segurança. Pois os cookies são armazenados no computador do usuário, os atacantes podem facilmente modificar o conteúdo do cookie para inserir dados potencialmente maliciosos no seu aplicativo, o que pode danificar seu aplicativo.
Além disso, cada vez que o navegador fizer uma solicitação ao servidor para um URL, todos os dados de cookie do site são automaticamente enviados na solicitação para o servidor. Isso significa que se você armazenar no sistema do usuário5Cookies, cada Cookie tem o tamanho de4KB, o navegador precisa enviar para o servidor a cada vez que o usuário visualizar a página.20KB de dados, o que pode afetar o desempenho do seu site.
Você pode usar PHP session para resolver esses dois problemas. PHP session armazena dados no servidor em vez do computador do usuário. Em um ambiente baseado em sessão, cada usuário é identificado por um número único chamado identificador de sessão ou SID. Este ID de sessão único é usado para ligar cada usuário às suas informações no servidor (por exemplo, e-mail, postagens, etc.).
Dica:O ID da sessão é gerado aleatoriamente pelo motor PHP, quase impossível de adivinhar. Além disso, pois os dados da sessão são armazenados no servidor, não é necessário enviar junto com cada solicitação do navegador.
Antes de armazenar qualquer informação em uma variável de sessão, é necessário inicializar a sessão. Para começar uma nova sessão, basta chamar a função PHP session_start(). Ela criará uma nova sessão e gerará um ID de sessão único para o usuário.
O código PHP do exemplo a seguir apenas inicia uma nova sessão.
<?php //Iniciar sessão session_start(); ?>
A função session_start() verifica primeiro a existência do ID da sessão para verificar se a sessão já existe. Se encontrar uma sessão, significa que a sessão já foi iniciada e define as variáveis da sessão. Se não encontrar, inicia uma nova sessão criando um novo ID de sessão.
Atenção:Você deve chamar session_start() no início da página (antes de qualquer saída gerada pelo script no navegador), como faz com a função setcookie().
Você pode armazenar todos os dados da sessão como pares de chave-valor no array superglobal $_SESSION. Você pode acessar os dados armazenados durante a vida útil da sessão. Veja o seguinte script, que cria uma nova sessão e registra duas variáveis de sessão.
<?php //正在启动会话 session_start(); //Armazenar dados da sessão $_SESSION["firstname"] = "Peter"; $_SESSION["lastname"] = "Parker"; ?>
Para acessar os dados da sessão que configuramos em qualquer outra página do mesmo domínio, basta chamar session_start() para recriar a sessão e passar a chave correspondente para o array $_SESSION.
<?php //正在启动会话 session_start(); //Acessar dados da sessão echo 'Olá, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"]; ?>
O código PHP do exemplo acima gera a seguinte saída.
Olá, Peter Parker
Atenção:Para acessar os dados da sessão na mesma página, não é necessário criar uma nova sessão, pois ela já foi iniciada no topo da página.
Se você deseja excluir alguns dados da sessão, apenas desmarque a configuração da chave correspondente do array $_SESSION, conforme o exemplo a seguir:
<?php //Iniciar sessão session_start(); //正在删除会话数据 if(isset($_SESSION["lastname"])){ unset($_SESSION["lastname"]); } ?>
Mas, para destruir completamente a sessão, basta chamar a função session_destroy(). Essa função não requer parâmetros e uma chamada destruirá todos os dados da sessão.
<?php //Iniciar sessão session_start(); //Destruir sessão session_destroy(); ?>
Atenção:Antes de destruir a sessão usando a função session_destroy(), se o ambiente da sessão ainda não existir, é necessário criar novamente o ambiente da sessão usando a função session_start(), para que seja possível a destruição.
Cada sessão PHP tem um valor de tempo de expiração (duração, em segundos), que determina quanto tempo a sessão deve permanecer ativa em caso de ausência de atividade do usuário. Você pode ajustar este tempo de expiração alterando o valor da variável session.gc_maxlifetime no arquivo de configuração PHP (php.ini).