Bem-vindo ao site John Pires!

PHP – Fundamentos Básicos

Home/Curso/PHP – Fundamentos Básicos

PHP – Sessions



Uma maneira alternativa de tornar os dados acessíveis em várias páginas de um site inteiro é usar uma sessão PHP.

Uma sessão cria um arquivo em um diretório temporário no servidor onde as variáveis ​​de sessão registradas e seus valores são armazenados. Esses dados estarão disponíveis para todas as páginas do site durante essa visita.

A localização do arquivo temporário é determinada por uma configuração no arquivo php.ini chamada session.save_path. Antes de usar qualquer variável de sessão, certifique-se de configurar este caminho.

Quando uma sessão é iniciada após as coisas acontecem:


  • O PHP primeiro cria um identificador único para aquela sessão particular que é uma string aleatória de 32 números hexadecimais como 3c7foj34c3jj973hjkop2fc937e3443.
  • Um cookie chamado PHPSESSID é enviado automaticamente ao computador do usuário para armazenar a string de identificação de sessão exclusiva.
  • Um arquivo é criado automaticamente no servidor no diretório temporário designado e leva o nome do identificador exclusivo prefixado por sess_ ie sess_3c7foj34c3jj973hjkop2fc937e3443.

Quando um script PHP deseja recuperar o valor de uma variável de sessão, o PHP automaticamente obtém a string identificadora de sessão única do cookie PHPSESSID e então procura em seu diretório temporário o arquivo com esse nome e uma validação pode ser feita comparando os dois valores.

Uma sessão termina quando o usuário perde o navegador ou depois de sair do site, o servidor encerrará a sessão após um período de tempo predeterminado, geralmente de 30 minutos de duração.

Iniciando uma Sessão PHP




Uma sessão de PHP é facilmente iniciada fazendo uma chamada para a função session_start (). Esta função primeiro verifica se uma sessão já foi iniciada e se nenhuma foi iniciada, então ela inicia uma. Recomenda-se colocar a chamada para session_start () no início da página.

Variáveis de sessão são armazenadas em uma matriz associativa chamada $ _SESSION []. Essas variáveis podem ser acessadas durante o tempo de vida de uma sessão.

O exemplo a seguir inicia uma sessão e registra uma variável chamada contador que é incrementada cada vez que a página é visitada durante a sessão.

Use a função isset () para verificar se a variável de sessão já está definida ou não.

Coloque este código em um arquivo test.php e carregue este arquivo várias vezes para ver o resultado:

<?php
   session_start();
   
   if( isset( $_SESSION['counter'] ) ) {
      $_SESSION['counter'] += 1;
   }else {
      $_SESSION['counter'] = 1;
   }
	
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
?>

<html>
   
   <head>
      <title>Setting up a PHP session</title>
   </head>
   
   <body>
      <?php  echo ( $msg ); ?>
   </body>
   
</html>

Destruindo uma Sessão PHP



Uma sessão PHP pode ser destruída pela função session_destroy (). Esta função não precisa de nenhum argumento e uma única chamada pode destruir todas as variáveis de sessão. Se você quiser destruir uma única variável de sessão, você pode usar a função unset () para remover a definição de uma variável de sessão.

Aqui está o exemplo para remover a definição de uma única variável:

<?php
   unset($_SESSION['counter']);
?>

Aqui está a chamada que irá destruir todas as variáveis de sessão.

<?php
   session_destroy();
?>

Ativando Sessão Automática

Você não precisa chamar a função start_session () para iniciar uma sessão quando um usuário visita seu site se você pode definir a variável session.auto_start para 1 no arquivo php.ini.


Sessões sem cookies

Pode haver um caso em que um usuário não permita o armazenamento de cookies em sua máquina. Portanto, há outro método para enviar o ID da sessão ao navegador.

Como alternativa, você pode usar o SID constante que é definido se a sessão foi iniciada. Se o cliente não enviou um cookie de sessão apropriado, ele tem o formato session_name = session_id. Caso contrário, ele se expande para uma string vazia. Assim, você pode incorporá-lo incondicionalmente em URLs.

O exemplo a seguir demonstra como registrar uma variável e como vincular corretamente a outra página usando SID.

<?php
   session_start();
   
   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   }else {
      $_SESSION['counter']++;
   }
   
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   
   echo ( $msg );
?>

<p>
   To continue  click following link <br />
   
   <a  href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

O htmlspecialchars () pode ser usado ao imprimir o SID para prevenir ataques relacionados ao XSS.


Leave a Comment

SIGN IN

Forgot Password