Академический Документы
Профессиональный Документы
Культура Документы
Tenha essas limitações em mente quando estiver pensando em usar cookies em seu site.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function setarCookie()
{
1 var o_nome = prompt("Qual é o seu nome?"."");
2 var o_cookie = "nome=" + escape(o_nome);
3 document.cookie = o_cookie;
alert("Obrigado!");
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO A ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
javascript:alert(document.cookie)
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
É muito fácil ler um cookie que você salvou no disco rígido de alguém.
um exemplo:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function lerCookie()
{
1 var o_cookie = document.cookie;
2 var quebra_de_linha = o_cookie.split("=");
3 var o_nome = quebra_de_linha[1];
4 var o_nome = unescape(o_nome);
alert("Seu nome é: "+ o_nome);
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO B¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
A primeira linha(1) no exemplo B é a importante. Sempre que o seu browser abre uma
página da Web, o browser le quaisquer cookies que o site tenha armazenado
em sua máquina e os carrega na propriedade document.cookie.
A parte ardilosa sobre a leitura de cookies é obter exatamente as informações
que você deseja deles. No exemplo B, tudo depois da primeira linha da função
puxa o nome do usuário para fora do cookie. Uma vez que 1 obtém o cookie,
2 rompe o cookie em um array de dois elementos, usando o método split().
O primeiro elemento no array consiste de tudo no cookie antes do sinal
de igual(=). Nesse caso, é nome, assim aquele é o primeiro elemento no
array. O segundo elemento no array é tudo depois do sinal de igual, que
é filipe%20. 3 agarra essa string a partir do array e armazena em the_name,
e 4 decodifica the_name com a função unescape(), trocando %20 por um
espaço.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
< html><head><title>Cookie de Data</title>
< script>
function setarCookie()
{
var a_data = new Date();
var o_cookie = "data="+ escape(a_data);
document.cookie = o_cookie;
}
function lerCookie()
{
1 if (document.cookie)
{
var o_cookie = document.cookie;
var o_cookie_array = o_cookie.split("data=");
var a_data = unescape(o_cookie_array[1]);
document.write("A ultima vez que você visitou foi em: "+ a_data);
document.write("<br>");
}
}
< /script>
< /head>
< body>
Bem vindo!
<script>
2 lerCookie();
3 setarCookie();
< /script>
< /body>
< /html>
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO C ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
var o_cookie = "nome:paulo/idade:17/fone:32320087";
document.cookie="meu_cookie="+ escape(o_cookie);
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Uma barra separa propriedade de nomes(nome do usuário, idade e telefone)
e dois-pontos distinguem as propriedades de nomes e valores(nome de usuário:
paulo,fone:32320087). A barra e os dois pontos são arbitrarios, você pode
usar quaisquer símbolos - desde que seja consistente.
É um pouco mais difícil tirar de um cookie múltplas parcelas de informações.
Tente usar arrays associativos para armazenas as informações. Por exemplo,
se você salvou
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
meu_cookie=nome:paulo/idade:17/fone:32320087
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
no disco rígido de algúem, você pode ler as informações em um array
associativo, exemplo de página:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
< html><head><title>Cookie Complexo</title>
< script>
function lerOCookie(a_info)
{
var o_cookie = document.cookie;
var o_cookie = unescape(o_cookie);
var quebra_de_linha = o_cookie.split("=");
1 var os_valores = quebra_de_linha[1];
2 var separados = os_valores.split("/");
var propriedades = "";
3 for (loop = 0, loop < separados.length; loop++)
{
propriedades = separados[loop];
var quebra_info = propriedades.split(":");
var a_propriedade = quebra_info[0];
var o_valor = quebra_info[1];
4 a_info[a_propriedade] = o_valor;
}
}
function setarCookie()
{
var o_cookie = "meu_cookie=nome:paulo/idade:17/fone:32320087";
document.cookie = escape(o_cookie);
}
5 setarCookie();
6 var cookie_info = new Array();
7 lerOCookie(cookie_info);
< /script>
< /head>
< body>
Isso é o que eu sei sobre você
<script>
8 document.write("Nome: "+ cookie_info["nome"] + "<br>");
document.write("Idade: "+ cookie_info["idade"] + "<br>");
document.write("Fone: "+ cookie_info["fone"] + "<br>");
< /script>
< body>
< /html>
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO D¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Quando essa página carrega, (5) configura um cookie, (6) cria um novo
array e (7) envia o novo array, vazio à função "lerOCookie()". Primeiro,
a função obtém o cookie e divide o nome do cookie (meu_cookie). Depois,
(1), "os_valores" será igual a "nome:paulo/idade:17/fone:32320087", pois
é o que mostra que ajustamos o cookie na função "setarCookie()".
A seguir, (2) divide "os_valores" entre suas partes componentes, carregando
" nome:paulo" em "separados[0]", "idade:17" em "separados[1]" e "fone:32
320087" em "separados[2]".
Depois que a função interrompe "os_valores", (3) se curva sobre cada um
dos três elementos(nome,idade,fone) em "separados". Cada vez que ocorre
um loop, a função separa o elemento em duas partes, com os dois pontos.
Depois, ela carrega a primeira parte do elemento em "propriedades" e a
segunda parte em "o_valor". Na primeira vez que o loop percorre, "propri
edades" é "nome" e "o_valor" é "paulo". Uma vez o elemento separado, assim,
o array associativo a_info é carregado em (4). Depois da loop ocorrer
três vezes, você obtém esses resultados: a_info["nome"] = "paulo, a_info
["idade"] = "17" e a_info["fone"] = "32320087".
Com o array associativo adequadamente carregado, as três linhas começando
em (Cool recuperam as informações e as exibem em uma página da Web.
Até agora, criamos cookies que desaparecem quando um usuário sai do browser.
À s vezes isso é bom. Uma vez que cada domínio só pode ter 20 cookies na
máquina de um usuário, você não quer disperdiçar espaço salvando cookies
desnecessários entre sessões de browser. No entanto, se quiser que os
seus cookies permaneçam no disco rígido de um usuário depois que ele sair
do browser, você precisa ajustar uma data de validade em um formato especial,
chamado GMT( no MSI6.0 e provavelmente em futuros browsers, GMT(Greenwich
Mean Time) tem sido substituído por UTC(Universal Time Code). São apenas
nomes diferentes para a mesma coisa, mas não se surpreenda se vir UTC
ao invés de GMT.) Por exemplo:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Sun, 12-Jan-1992 00:00 GMT
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
supostamente, é a data de nascimento em Greenwich Mean Time de HAL 9000,
o computador inteligente de 2001: uma odisséia no espaço. (HAL?HAL? Você
está ai?).
O formato GMT pode ser meio doloroso, especialmente se você precisa descobrir
se o dia era uma segunda feira, sexta feira ou o que for. Felizmente, o
método de data "toGMTString()" de JavaScript converte uma data em um
formato mais simples em uma data em formato GMT. Eis uma maneira fácil
de ajustar uma data, distante no futuro:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
var a_data = new Date("December 31, 2023");
var o_cookie_data = a_data.toGMTString();
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Para ajustar a validade do seu cookie, você precisa acrescentar a data
de término ao cookie. Acrescente "expires=data" à string e separa os
componentes do cookie com ponto-e-vírgula:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
o_cookie=algumcookie;expires=data
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
O exemplo H mostra como montar um cookie que durará até o final do calendário
Maia:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function setarCookie()
{
var o_nome = prompt("Qual seu nome?","");
var a_data = new Date("December 31, 2023");
var o_cookie_data = a_data.toGMTString();
var o_cookie = "meu_cookie"+ escape(o_nome);
o_cookie = o_cookie+ ";expires="+ o_cookie_data;
document.cookie = o_cookie;
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO E¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Antes de "o_cookie" no exemplo E ser escapado(usando a função escape()),
ele se parecerá com a seguinte linha:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
meu_cookie=paulo;expires=Fri, 31-Dec-2023 00:00:00 GMT
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Uma vez ajustado, esse cookie vive no disco rígido de seu visitante até
a data de expiração.
Você também pode usar a data de expiração para apagar cookies, ajustando
a data para um tempo no passado. Isso pode ser útil se você estiver
usando cookie para registrar pessoas que entram e saem de seu site. Quando
um visitante registra a sua entrada, dê a ele um cookie que mostre que
eles se registraram. Quando ele quiser sair, apague o cookie.
QUEM PODE LER O COOKIE ?
Eu já mencionei que apenas o Web site que configura um cookie pode lê-lo
- McDonald's não pode ler cookies de Giraffas, e vice-versa. Porém, a
estória completa é um pouco mais complicada do que isso.
Por padrão, apenas a página da Web que configura o cookie pode lê-lo.
Se uma dessas páginas configurar um cookie, para permitir que outras
páginas em seu site leiam o cookie, você precisa ajustar o "path"(caminho)
do cookie. O caminho do cookie ajustar o diretório de nível "root"(raiz)
de seu site possibilita que todas as suas páginas da Web leiam o cookie.
Para fazer isso, acrescente "path=/;" ao seu cookie. Se você só quiser
que o seu cookie sejá legível em um diretório chamado arquivos, acrescente
" path=/arquivos;".
Alguns Web sites têm muitos pequenos domínios. Por exemplo, o portal da
Web Yahoo tem um site principal(www.yahoo.com) um site de finanças
(finances.yahoo.com), um site personalizado (my.yahoo.com) e muitos outros.
Por padrão, se uma página da Web em finances.yahoo.com ajusta um cookie,
páginas em my.yahoo.com não podem ler aquele cookie. Mas se você acrescentar
" domain=nome_do_dominio" a um cookie, todos os domínios terminados com
" nome_do_dominio" podem ler o cookie. Para permitir que todas as máquinas
no domínio yahoo.com leiam um cookie, Yahoo precisa acrescentar "domain
=yahoo.com" ao cookie.
O COOKIE INTEIRO
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function setarCookie()
{
var o_nome = prompt("Qual seu nome?","");
var a_data = new Date("December 31, 2023");
var o_cookie = escape(o_nome) + ";";
var o_cookie = o_cookie + "path=/";
var o_cookie = o_cookie + "domain=cade.com;";
var o_cookie = the_cookie+ "expires"+ a_data.toGMTString() +";";
document.cookie = "meu_cookie="+o_cookie;
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO F¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
É claro que, pelo fato de eu estar ajustando o domínio para cade.com,
apenas um computador no computador no CADE pode ler esse cookie.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
var cookie_visitante = "pessoa="+ escape("nome:paulo/ocupação:estudante
/fone:32320087");
document.cookie = cookie_visitante;
var cookie_compras = "compras="+ escape("camisas:1/bermudas:3/sapatos:12");
document.cookie = cookie_compras;
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Esse código ajusta "document.cookie" duas vezes, mas, devido ao fato de
que os cookies têm nomes diferentes, você pode armazenar ambos em "docu
ment.cookie". Depois de executar as quatro linhas acima, "document.cook
ie" se parece com isso(exceto pelos caracteres escapados):
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
pessoa=nome:paulo/ocupação:estudante/fone:32320087;compras=camisas:1/be
rmudas:3/sapatos:12
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
No exemplo acima, armazenar dois cookies em "document.cookie" funciona
bem, pois o JavaScript que olha as informações de compra não precisa
lidar com as informações no outro cookie. Infelizmente, é um pouco difí
cil puxar o conteúdo de um cookie para fora de "document.cookie", porque
ele contém múltiplos cookies. É aqui onde as bibliotecas JavaScript pré-
escritas tornam-se úteis.
BIBLIOTECAS DE COOKIE
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function WM_readCookie(name) {
if(document.cookie=="") { // não tem nenhum cookie
return false;
} else { // tem algum cookie
var firstChar, lastChar;
var theBigCookie = document.cookie;
firstChar = theBigCookie.indexOf(name); // encontre o começo de "name"
var NN2Hack = firstChar + name.length;
{ // se encontrar o cookie
if ((firstChar != -1) && (theBigCookie.charAt(NN2Hack)=="="))
firstChar += name.length + 1;
// encontrar o final do valor da string (o próximo ";"),
lastChar = theBigCookie.indexOf(";", firstChar);
if(lastChar == -1)
{
lastChar = theBigCookie.length;
return unescape(theBigCookie.substring(firstChar,lastChar));
} else { Se não tiver nenhum cookie com esse nome, retornar falso.
return false;
}
}
} // WM_readCookie
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO G¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Para usar essas funções, corte-as e cole-as na página e chame as funções
de acordo. Para recuperar um cookie chamado oUsuario, chame a função
WM_readCookie("oUsuario").
As funções bem comentadas da Webmonkey falam por si mesmas. Se você usá-
las, leia-as uma primeira vez e tenha certeza de que entendeu como elas
funcionam.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
< html><head><title> Bem vindo as Compras </title>
< /head>
< body>
Bem vindo as compras
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO H¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
< html><head><title>Roupas</title>
1 <script></script>
< /head>
< body>
Compre essas roupas!
<form>
Camisa:
< input>
2 <input>
(R$20 cada)
< p>
Calça:
< input>
< input>
(R$40 cada)
< p>
< a> Volte à pagina principal</a>
ou<br>
< form>
< input type="button" value="checkalos" onClick="window.location=checkal
os.html";">
< /form>
< /body>
< /html>
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLOI¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
function adicione(quantidade, item, preco)
{
1 var compra_string = escape(item + ":" + quantidade +":" + preco);
2 var o_cookie=WM_readCookie("compras");
3 if (o_cookie)
{
4 compra_string = o_cookie+ "/" + compra_string;
}
5 WM_setCookie("compras",compra_string.0,"/");
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO J¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
compras=camisa:1:20/calca:1:40
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Se depois você comprasse outra camisa, o cookie se pareceria com isso:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
compras=camisa:1:20/calca:1:40/camisa:1:20
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Uma versão mais completa de "adicione()" perceberia que você ja tinha
comprado uma camisa e, ao invés de incluir outra "camisa:1:20" ao final
do cookie, acrescentaria um a quantidade de camisetas:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
compras=camisa:2:20/calca:1:40
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
No entanto, visto que tal pequna mudança envolve uma quantidade razoável
de código, estou deixando isso de fora. procure em bibliotecas carrinhos
de compras completos.
Depois da nova string cookie ter sido montada, (5) usa a função "WM_set
Cookie()" da biblioteca Webmonkey para salvar as informações de cookie
do visitante.
A página final a considerar é a página de saída, relacionada no exemplo
O:
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
< html><head><title>Checkalos</title>
1 <script></script>
< /head>
< body>
Aqui está sua cesta
<script>
2 checkAr();
< /script>
< /body>
< /html>
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO K¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
1 function lerOCookie(a_info)
{
var separacao;
2 var o_cookie=WM_readCookie("compras");
if (o_cookie)
{
3 if (o_cookie.indexOf("/") != -1)
{
separacao = o_cookie.split("/");
4 for (var loop=0; loop < separacao.length; loop++)
{
5 a_info[loop] = separacao[loop];
}
} else {
6 a_info[0] = o_cookie;
}
}
}
}
function checkAr()
{
var total=0;
var a_separacao = new Array();
7 lerOCookie(a_separacao);
document.writeln("<table>");
document.writeln("<th>Item</th><th>Quantidade</th><th>Preço</th><th>Subtotal</th>");
8 for (var loop=0; loop<a_quantidade.length; loop++)
{
9 var esse_item = a_separacao[loop].split(":");
10 document.writeln("<tr>");
11 for (var inloop=0; inloop < esse_item.length; inloop++)
{
document.writeln("<td>");
document.writeln(esse_item[inloop]);
document.writeln("</td>");
}
sub_total = esse_item[1] * esse_item[2];
12 total += sub_total;
13 document.writeln("<td>"+ sub_total + "</td>");
document.writeln("</tr>");
}
document.writeln("<tr>");
document.writeln("<td>total</td>");
document.writeln("<td></td><td></td><td>" + total + "</td>");
14 document.writeln("</tr>");
document.writeln("</table>");
}
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨EXEMPLO L¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
A FUNÇÃO "lerOCookie()"
A FUNÇÃO "checkAr()"
RESUMO
INDICAÇÃO
Escreva uma página que funcione como a página descrita no ínicio do art igo. A primeira vez que
um visitante vir a página, ele ou ela deve obter uma caixa de aviso que diz, "Bem vindo, novo
visitante" na próxima visi ta, tal caixa de aviso não deve aparecer.