∞ Noções Avançadas e Tecnologias Relacionadas ∞
Cookies
Um dos principais problemas que existiu como obstáculo à criação de aplicações mais complexas na World Wide Web foi a dificuldade em registar e manter o contexto de uma determinada situação.
Se se pretender fazer depender o carregamento de uma determinada página de alguma resposta anterior do utilizador, por exemplo, uma validação de acesso a qualquer aplicação, o servidor Web não tem nenhuma informação acerca das acções prévias deste, uma vez que cada carregamento de uma página é considerado como uma transacção independente.
Para contornar este problema, podem ser construídos programas server side, CGI, ou ASP's, que guardem informação acerca do contexto da comunicação com um utilizador e mantenham o controlo das acções deste com base nessa informação.
No entanto, existe uma forma muito mais natural de realizar este tipo de operações, utilizando os cookies. Um cookies é uma forma de armazenar informação localmente ao browser, relativa ao estado da comunicação entre o cliente e o servidor.
Os cookies podem ser importantes nas seguintes situações:
- Quando é questionado o nome de um utilizador e essa informação é guardada num cookie que pode ser utilizado noutras páginas instaladas no mesmo servidor.
- Efectuar um questionário ao utilizador e só depois permitir o acesso a uma determinada página Web, guardando a informação de que o utilizador tem acesso, num cookie.
Os valores dos cookies são guardados nobrowser do cliente e podem ser acedidos via propriedade cookie, do objecto JavaScript document. Um cookie é, normalmente, constituído por uma string de texto com a seguinte sintaxe:
Set-Cookie: propriedade1 = valor1; propriedade 2 = valor2; ...;
As propriedades que constituem um cookie são as seguintes:
Propriedades
name
Este parâmetro contém a informação a ser armazenada no cookie.
Trata-se de uma string, sem espaços nem os caracteres vírgula (,) ou ponto e vírgula (;).
expires
A data em que o cookie expira. Se for ultrapassada, o cookie não será mais
utilizado. O formato a utilizar é do tipo exemplificado na expressão: expires>Sat,22-09-01 22:30:00.
path
Especifica o caminho (componente do URL) para o qual o cookie é válido.
domain
Especifica o domínio (componente do URL) em que o cookie é válido.
secure
Se especificado este parametro, o cookie só será transmitido se for utilizada uma
"transacção segura" – HTTPS.
Com o JavaScript um cookie pode facilmente ser criado e utilizado, com a propriedade document.cookie de um determinado documento HTML.
Vejamos um exemplo de um conjunto de duas páginas HTML, em que a segunda página ainda se recorda do nome do utilizador, que foi guardado num cookie da primeira.
Pag1.html
<html>
<head>
<title> Página 1 – teste cookie </title>
<script language="Javascript" type="text/javascript">
var nome = prompt("Qual o seu nome?");
document.cookie = nome;
</script>
</head>
<body>
<a href = "Pag2.html"> Página seguinte </a>
</body>
</html>
Pag2.html
<html>
<head>
<title> Página 2 – teste cookie </title>
<script language="Javascript" type="text/javascript">
var i = document.cookie.indexOf("=");
var nome = document.cookie.substring(i+1, document.cookie.length);
document.write("olá", nome, "como está hoje? <br />");
</script>
<body>
<a href = "Pag1.html"> Página anterior </a>
</body>
</html>
Ao ser acedida a primeira página, o utilizador é interrogado pelo seu nome e o valor é guardado no Cookie.
Esse valor fica disponível para a segunda página o consultar quando for acedida.
Repare-se que as duas páginas não têm, em teoria, nada a ver uma com a outra, para além de estarem ligadas por links, pelo que o Cookie é o único factor de comunicação entre as duas.
Nos cookies pode haver a necessidade de guardar strings mais complexas, contendo espaços ou outros caracteres inválidos.
É recomendável que se utilizem métodos de codificação dos caracteres proibidos, por exemplo, caracteres "%" ou "?", para representar os espaços, utilizando para tal funções que existem no JavaScript, tais como o escape() e o unescape(), que permitem codificar e descodificar uma string para transmissão através de um cookie.
Página 1 Página 2 Página 3 Página 4 Página 5 Página 6 Página 7 Página 8


