Sessão PHP e cookies PHP com exemplo

O que é biscoito?

Um cookie é um pequeno arquivo com tamanho máximo de 4 KB que o servidor web armazena no computador cliente.

Depois que um cookie for definido, todas as solicitações de página seguintes retornarão o nome e o valor do cookie.

Um cookie só pode ser lido no domínio de onde foi emitido. Por exemplo, um cookie definido usando o domínio www.guru99.com não pode ser lido do domínio carreira.guru99.com.

A maioria dos sites na Internet exibe elementos de outros domínios, como publicidade. Os domínios que servem estes elementos também podem definir os seus próprios cookies. Estes são conhecidos como cookies de terceiros.

Um cookie criado por um usuário só pode ser visível para ele. Outros usuários não conseguem ver seu valor.

A maioria dos navegadores tem opções para desativar cookies, cookies de terceiros ou ambos.

Se for esse o caso, o PHP responde passando o token do cookie na URL.

O diagrama mostrado abaixo ilustra como funcionam os cookies.

O que é biscoito

Aqui,

1) Um usuário solicita uma página que armazena cookies

2) O servidor define o cookie no computador do usuário

3) Outras solicitações de página do usuário retornarão o nome e o valor do cookie

Por que e quando usar Cookies?

  • HTTP é um protocolo sem estado; os cookies nos permitem rastrear o estado do aplicativo usando pequenos arquivos armazenados no computador do usuário. O caminho onde os cookies são armazenados depende do navegador. O Internet Explorer geralmente os armazena na pasta Temporal Internet Files.
  • Personalizando a experiência do usuário – isso é conseguido por allowing os usuários selecionem suas preferências. As páginas solicitadas a seguir são personalizadas com base nas preferências definidas nos cookies.
  • Rastreando as páginas visitadas por um usuário

Criando Cookies

Vejamos agora a sintaxe básica usada para criar um cookie.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

AQUI,

  • Php “setcookie” é o Função PHP usado para criar o cookie.
  • “cookie_name” é o nome do cookie que o servidor usará ao recuperar seu valor da variável array $_COOKIE. É obrigatório.
  • “cookie_value” é o valor do cookie e seu valor obrigatório
  • “[expiry_time]” é opcional; ele pode ser usado para definir o tempo de expiração do cookie, como 1 hora. O tempo é definido usando as funções time() do PHP mais ou menos um número de segundos maior que 0, ou seja, time() + 3600 por 1 hora.
  • “[cookie_path]” é opcional; ele pode ser usado para definir o caminho do cookie no servidor. A barra “/” significa que o cookie será disponibilizado em todo o domínio. Os subdiretórios limitam o acesso do cookie ao subdomínio.
  • “[domínio]” é opcional, pode ser usado para definir a hierarquia de acesso aos cookies, ou seja www.cookiedomain.com significa domínio inteiro enquanto www.sub.cookiedomain.com limita o acesso aos cookies para www.sub.cookiedomain.com e seus subdomínios. Observe que é possível ter um subdomínio de um subdomínio desde que o total de caracteres não exceda 253 caracteres.
  • “[seguro]” é opcional, o padrão é falso. É usado para determinar se o cookie é enviado via https se estiver definido como verdadeiro ou http se estiver definido como falso.
  • “[Httponly]” é opcional. Se estiver definido como verdadeiro, apenas as linguagens de script do lado do cliente, ou seja JavaScript não pode acessá-los.

Nota: a função php set cookie deve ser executada antes da tag de abertura do HTML.

Vejamos agora um exemplo que utiliza cookies.

Criaremos um programa básico que nos permitirá armazenar o nome do usuário em um cookie que expira após dez segundos.

O código abaixo mostra a implementação do exemplo acima “cookies.php”.

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

Saída:

the cookie has been set for 60 seconds

Recuperando o valor do cookie

Crie outro arquivo chamado “cookies_read.php” com o seguintewing código.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Saída:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Nota: $_COOKIE é uma variável superglobal construída em PHP.

Contém os nomes e valores de todos os cookies definidos.

O número de valores que o

O array $_COOKIE pode conter depende do tamanho da memória definido no php.ini.

O valor padrão é 1 GB.

Testando nosso aplicativo.

Vamos supor que você salvou seus arquivos PHP na pasta phptus.

  • Passo 1 – abra seu navegador e digite o URL http://localhost/phptuts/cookies_read.php

Recuperando o valor do cookie

Nota: Apenas uma matriz vazia foi exibida

  • Passo 2 – Navegue até o URL http://localhost/phptuts/cookies.php

Recuperando o valor do cookie

  • Passo 3 – Volte para a primeira guia e clique no botão Atualizar

Recuperando o valor do cookie

Aguarde um minuto e clique no botão Atualizar novamente. Quais resultados você conseguiu?

Apagar cookies

  • Se você quiser destruir um cookie antes do prazo de validade, defina o prazo de validade como um tempo que já passou.
  • Crie um novo arquivo chamado cookie_destroy.php com o seguintewing código
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Repita as etapas 1 a 3 da seção acima sobre como recuperar valores de cookies.
  • Abra o URL http://localhost/phptuts/cookie_destroy.php
  • Mudar para o URL http://localhost/phptuts/cookies_read.php que resultados ele exibe?

O que é uma Sessão?

  • Uma sessão é uma variável global armazenada no servidor.
  • Cada sessão recebe um ID exclusivo que é usado para recuperar valores armazenados.
  • Sempre que uma sessão é criada, um cookie contendo o ID exclusivo da sessão é armazenado no computador do usuário e retornado a cada solicitação ao servidor. Se o navegador do cliente não suportar cookies, o ID exclusivo da sessão php será exibido na URL
  • As sessões têm a capacidade de armazenar dados relativamente grandes em comparação com os cookies.
  • Os valores da sessão são excluídos automaticamente quando o navegador é fechado. Se quiser armazenar os valores permanentemente, você deve armazená-los no banco de dados.
  • Assim como a variável de array $_COOKIE, as variáveis ​​de sessão são armazenadas na variável de array $_SESSION. Assim como os cookies, a sessão deve ser iniciada antes de qualquer tag HTML.

Por que e quando usar sessões?

  • Você deseja armazenar informações importantes, como o ID do usuário, com mais segurança no servidor, onde usuários mal-intencionados não possam lidar com elas.
  • Você deseja passar valores de uma página para outra.
  • Você deseja uma alternativa aos cookies em navegadores que não suportam cookies.
  • Você deseja armazenar variáveis ​​globais de maneira eficiente e mais segura em comparação com passá-las na URL
  • Você está desenvolvendo um aplicativo como um carrinho de compras que precisa armazenar temporariamente informações com capacidade superior a 4 KB.

Criando uma sessão

Para criar uma sessão, você deve primeiro chamar a função session_start do PHP e depois armazenar seus valores na variável array $_SESSION.

Suponhamos que queremos saber quantas vezes uma página foi carregada, podemos usar uma sessão para fazer isso.

O código abaixo mostra como criar e recuperar valores de sessões

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Saída:

You are visitor number 1

Destruindo variáveis ​​de sessão

A função session_destroy() é usada para destruir todas as variáveis ​​​​de sessão do PHP.

Se você deseja destruir apenas um único item da sessão, use a função unset().

O código abaixo ilustra como usar os dois métodos.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy remove todos os dados da sessão, incluindo cookies associados à sessão.

Unset libera apenas as variáveis ​​de sessão individuais.

Outros dados permanecem intactos.

Resumo

  • Cookies são pequenos arquivos salvos no computador do usuário
  • Os cookies só podem ser lidos no domínio emissor
  • Os cookies podem ter um prazo de validade, se não estiver definido, o cookie expira quando o navegador é fechado
  • As sessões são como variáveis ​​globais armazenadas no servidor
  • Cada sessão recebe um ID de identificação exclusivo que é usado para rastrear as variáveis ​​de um usuário.
  • Tanto os cookies quanto as sessões devem ser iniciados antes que qualquer tag HTML seja enviada ao navegador.