Cookies JavaScript

Os cookies permitem que você armazene informações do usuário nas páginas da web.

O que são cookies?

Os cookies são dados armazenados em pequenos arquivos de texto no seu computador.

Quando o servidor web envia a página para o navegador e a conexão é fechada, o servidor esquece tudo sobre o usuário.

Os cookies foram inventados para resolver como lembrar as informações do usuário:

  • Quando o usuário visitar a página da web, seu nome pode ser armazenado em cookies.
  • Quando o usuário visitar a página novamente, o cookie "lembrará" seu nome.

Os cookies são armazenados em pares de nome e valor, como:

username = Bill Gates

Quando o navegador solicita uma página do servidor, os cookies pertencentes à página são adicionados à solicitação. Dessa forma, o servidor obtém os dados necessários para "lembrar" as informações do usuário.

Se o navegador tiver suporte local de cookies desativado, os seguintes exemplos não funcionarão.

Criação de cookies pelo JavaScript

O JavaScript pode usar document.cookie Criação, leitura e exclusão de cookies.

Pelo JavaScript, você pode criar cookies assim:

document.cookie = "username=Bill Gates";

Você ainda pode adicionar uma data válida (horário UTC). Por padrão, o cookie é excluído quando o navegador é fechado:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC";

Pela caminho Parâmetros, você pode informar ao navegador qual caminho o cookie pertence. Pelo padrão, o cookie pertence à página atual.

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Ler cookie através do JavaScript

Pode ler cookie através do JavaScript da seguinte forma:

var x = document.cookie;

document.cookie Retornará todos os cookies em uma única string, por exemplo: cookie1=value; cookie2=value; cookie3=value;

Alterar cookie através do JavaScript

Ao usar JavaScript, você pode alterá-lo da mesma forma que criou o cookie:

document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

O cookie antigo é substituído.

Excluir cookie através do JavaScript

Excluir cookie é muito simples.

Ao excluir o cookie, não é necessário especificar o valor do cookie:

Directamente expires Defina os parâmetros como uma data passada:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

Você deve definir o caminho do cookie para garantir que o cookie correto seja excluído.

Se você não especificar o caminho, alguns navegadores não permitirão que você exclua o cookie.

String de Cookie

document.cookie A propriedade parece uma string de texto normal. Mas não é.

Mesmo que você forneça document.cookie Escreva uma string completa de cookie, quando lido novamente, você só verá o parâmetro nome-valor.

Se um novo cookie for configurado, o cookie antigo não será substituído. O novo Cookie será adicionado a document.cookie, então se você ler document.cookie, você obterá algo como:

cookie1 = value; cookie2 = value;
     

Se você quiser encontrar o valor de um cookie específico, você deve escrever uma função JavaScript para procurar o valor do cookie na string do cookie.

Exemplo de JavaScript Cookie

Nos exemplos a seguir, criaremos um cookie para armazenar o nome do visitante.

Quando o visitante chegar pela primeira vez à página, será solicitado a preencher o nome. Em seguida, esse nome será armazenado no cookie.

Quando o visitante chegar novamente à mesma página, ele receberá uma mensagem de boas-vindas.

Por exemplo, criaremos 3 funções JavaScript:

  1. Função para configurar o valor do cookie
  2. Função para obter o valor do cookie
  3. Função para verificar o valor do cookie

Função para configurar o cookie

Primeiro, criamos uma função que armazena o nome do visitante na variável cookie:

exemplo

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
} 

Explicação do exemplo:

Os parâmetros dessa função são: o nome do cookie (cname), o valor do cookie (cvalue) e o número de dias que o cookie expira (exdays).

A função configura o cookie somando o nome do cookie, o valor do cookie e a string de expiração.

Função para obter o cookie

Em seguida, criamos uma função que retorna o valor do cookie especificado:

exemplo

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
         if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
         }
     }
    return "";
} 

Explicação da função:

Usar o cookie como parâmetro (cname).

Criar uma variável (name) e o texto a ser pesquisado (CNAME”=”).

Decodificar a string do cookie, lidar com cookies com caracteres especiais, por exemplo, “$”.

usar ponto e vírgula para dividir document.cookie em um array chamado ca (decodedCookie.split(';')).

percorrer o array ca (i = 0; i < ca.length; i++) e ler cada valor c = ca[i].

se encontrar o cookie (c.indexOf(name) == 0), retornará o valor do cookie (c.substring(name.length, c.length)).

se não encontrar o cookie, retornará "".

função de verificação de cookie

Por fim, criamos uma função para verificar se o cookie foi configurado.

se o cookie já foi configurado, será exibida uma saudação.

se o cookie não foi configurado, será exibida uma caixa de diálogo solicitando o nome do usuário e o nome do usuário será armazenado como cookie por 365 dias, chamando setCookie função:

exemplo

function checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Bem-vindo novamente " + username);
    }
        username = prompt("Por favor, insira seu nome:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
} 

agora combinamos

exemplo

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
        if (c.indexOf(name)  == 0) {
            return c.substring(name.length, c.length);
         }
    }
    return "";
}
function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Bem-vindo novamente " + user);
    }
        user = prompt("Por favor, insira seu nome:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

Experimente você mesmo

O exemplo acima será executado após o carregamento da página checkCookie().