Os valores dos Cookies são muito mais complexos que os de outras coleções ASP, como Form e ServerVariables. Um cookie é um pequeno pedaço de texto armazenado no sistema do cliente pelo navegador e enviado com cada solicitação ao servidor no domínio ao qual se aplica.
ASP facilita a aplicação de cookies. Você pode obter todos os valores de cookies enviados com a solicitação da coleção Cookies do objeto Request e pode criar ou modificar cookies e enviá-los de volta ao usuário por meio da coleção Cookies do Response. objeto.
Os cookies contêm informações que podem ser construídas de duas maneiras. Os cookies de valor único fornecem seus valores ao código por meio de uma coleção geral semelhante a ASP. No entanto, cada membro de uma coleção pode ser ele próprio uma coleção, e os cookies que contêm essas informações são chamados de cookies de valores múltiplos.
Criar um cookie de valor único é relativamente simples, como segue:
Response.Cookies("item-name") = "item-value"
Para criar um cookie de vários valores, você pode usar o seguinte comando:
Response.Cookies("item -name" )("sub-item-name") = "sub-item-value"
define o domínio e caminho da aplicação do cookie e seu período de validade. Usamos:
Response.Cookies("item-name").domain = "URL do domínio"
Response.Cookies(“nome do item”).path = “caminho virtual”
Response.Cookies("item-name").expires = #date#
Normalmente, o cliente só envia o cookie para o servidor com a solicitação ao fazer uma solicitação para uma página no diretório onde o cookie foi criado. Ao especificar o atributo path, você pode especificar onde no site esse cookie é válido e o cookie será enviado com a solicitação. Se o cookie for enviado com solicitações de página para todo o site, defina o caminho como "/".
Se o atributo Expires não estiver definido, o cookie será automaticamente eliminado quando a instância atual do navegador for fechada.
Observe que o cookie já é criado quando enviamos qualquer saída para o navegador. Porque esses cookies fazem parte do cabeçalho HTTP da página.
No ASP 3.0, o estado padrão de buffer é ativado e nenhuma saída é enviada, a menos que Response.Flush seja usado para especificar isso ou a página tenha chegado ao fim. Isso significa que o código que cria o cookie pode estar em qualquer lugar da página e pode ser executado até que qualquer saída seja "liberada" para o cliente.
Para ler os cookies existentes, use a coleção Request.Cookies. Os itens contidos nele podem ser acessados individualmente, semelhante ao método usado para criá-los.
StrSingleValue = Request.Cookies("nome do item")
StrSubItemValue = Request.Cookies("item-name")("sub-item-name")
Observe que a coleção Request.Cookies (como todas as outras coleções Request) é somente leitura. A coleção Response.Cookies é somente para gravação. Na verdade, você pode acessar os nomes de uma série de cookies nesta coleção, mas não seus valores.
Percorrendo a coleção de cookies
Para usar a coleção de cookies de forma mais conveniente, você pode usar o atributo adicional chamado Haskeys. Se o cookie acessado for ele próprio uma coleção, ou seja, for um cookie com vários valores, isso retornará True. Usando a propriedade Haskeys, você pode percorrer a coleção Request.Cookies completa para obter uma lista de todos os cookies e seus valores.
Para cada objItem em Request.Cookies
Se Request.Cookies(objItem).HasKey então
'Use outro For Each para iterar todas as subchaves
Para cada objItemKey em Request.Cookies (objItem)
Response.Write objItem & “(“ & objItemKey & “) = “_
& Request.Cookies(objItem)(objItemKey) & “<BR>”
Próximo
Outro
'Imprime a string do cookie normalmente
Response.Write objItem & “=” & Request.Cookies(objItem) & “<BR>”
Terminar se
NextIsso
é muito semelhante ao código complexo anterior que extrai vários valores da coleção Request.Form. Mas você pode usar o atributo Haskeys aqui para determinar se cada entrada é um conjunto. No exemplo Form, a propriedade Request.Form(item_name).Count deve ser consultada porque os membros da coleção Form (e todas as outras coleções, exceto cookies) não podem ser coleções reais. ASP apenas faz o trabalho "nos bastidores" e obtém o valor de cada coleção de múltiplas entradas.
Diferenças entre Form e QueryString
Depois de compreender as técnicas de acesso às diversas coleções ASP, outra questão precisa ser resolvida: Qual a diferença entre as coleções Form e QueryString? Se você for usar ASP, sem dúvida deve estar ciente dessa diferença, mas precisa consultar a forma como o HTTP funciona para reentendê-los e entendê-los.
Existem dois métodos gerais para solicitar uma página ou outro recurso de um servidor web via HTTP. Você pode usar o método GET para obter o recurso diretamente ou usar POST para passar o valor para o recurso correspondente. O método GET é o padrão. Você pode ver um exemplo de solicitação HTTP anteriormente neste capítulo:
7/8/99 10:27:16 Enviado GET /Store/Download.asp HTTP/1.1
Se você colocar um ou mais pares
.nomes Quando o valor / é anexado à URL da página solicitada, ele se torna a string de consulta solicitada e é fornecida à página ASP na coleção QueryString. Clicar em um hiperlink em uma página da Web, mensagem de e-mail ou outro documento, ou inserir o endereço na barra de endereços do navegador e pressionar Enter, ou clicar no botão Links ou Favoritos no navegador, todos usam o método GET.
Portanto, a única forma de passar valores para ASP nessas ações é através da coleção QueryString, anexando os valores à URL.
Os valores que aparecem na coleção Request.QueryString e são acessados funcionam da mesma forma que a instância da coleção Form que vimos anteriormente. Uma combinação de URL e string de consulta:
http://mysite.com/process_page.asp?FirstName=Priscilla&LastName=Descartes
O valor fornecido na coleção QueryString pode ser acessado da seguinte forma:
strFirstName = Request.QueryString("FirstName") 'Return "Priscila"
strLastName = Request.QueryString("Sobrenome") 'Retorna "Descartes"
strRaw = Request.QueryString
'Retorna os métodos GET e POST "FirstName=Priscilla&LastName=Descartes"
do formulário
Ao usar o segmento <FORM> em uma página, você pode definir o valor do atributo METHOD da tag FORM aberta como "GET" ou "POST". o valor padrão é "GET". Se "GET" for usado ou seu atributo for omitido, o navegador vincula esse valor a todos os controles da página, torna-se uma string de consulta e é anexado à URL da página solicitada.
Quando essa solicitação chega ao servidor Web, seu valor é fornecido pela coleção Request.QueryString do ASP. No entanto, se você definir o atributo METHOD como "POST", o navegador agrupará o valor no cabeçalho HTTP do servidor de envio e o fornecerá ao ASP por meio da coleção Request.Form.
A propósito, o método POST pode ser usado em todos os formulários HTML. No entanto, existem certas limitações quanto ao comprimento da string de URL do navegador ou servidor. Portanto, anexar cadeias longas pode causar estouro e alguns caracteres de cadeia serão truncados. Ao mesmo tempo, a string de consulta aparece na barra de endereços do navegador e em todos os links e favoritos salvos. Além disso, também expõe valores indesejados na solicitação HTTP ao passar pelo servidor web, podendo também aparecer nos arquivos de log do seu servidor e de outros servidores de roteamento. Os valores nos cabeçalhos de solicitação HTTP raramente são visíveis e não aparecem nos arquivos de log.
Um pequeno problema a ser observado ao usar o método POST é que quando o usuário baixa novamente o <FORM>, os valores do formulário não são mais retidos e seus valores ficam vazios e devem ser digitados novamente. Porém, quando anexado a uma URL, o valor é armazenado como um link e será retido e, portanto, aparecerá em todas as solicitações onde a URL for combinada com a string. Isso pode ser uma vantagem ou desvantagem dependendo da aplicação. pode reter automaticamente valores em uma página dentro de um determinado intervalo no cliente).
Outro ponto é que a combinação de URL e string de consulta não pode conter espaços ou outros caracteres ilegais, caso contrário o Navigator e alguns outros navegadores terão problemas. Caracteres ilegais são aqueles usados para separar o URL e a string de consulta, como "/", ":", "?" e "&" (o IE pode converter automaticamente espaços no formato correto - o sinal de mais "+", mas outros caracteres ilegais não podem ser processados)
Uso de cookies em ASP
Nesta seção aprenderemos as diversas técnicas que fornecem coleções, métodos e propriedades para uso pelo código ASP.
1) Os dados do usuário são armazenados em cookies.
Os cookies podem ser usados para armazenar dois tipos de valores: valores que não queremos salvar quando o navegador é fechado (como informações de registro do usuário) e valores que queremos salvar. reter quando o usuário visita o site. Em cada caso, o valor do cookie está disponível para o ASP para cada solicitação de página do navegador do usuário.
Porém, é preciso lembrar que o cookie só será enviado ao servidor quando for feita uma solicitação para uma página dentro do caminho virtual (path) do cookie. Por padrão, se o valor de path não estiver definido no cookie, seu valor será o caminho virtual da página que criou o cookie. Para que um cookie seja enviado para todas as páginas de um site, é necessário utilizar path="/".
Aqui está um exemplo. Em uma página de login personalizada, as informações de registro do usuário são armazenadas em um cookie. Como não há período de validade do aplicativo, o valor do cookie só é retido até que o navegador seja fechado:
...
Request.Cookies(“Usuário”)(“UID”) = “<% = Solicitação(“Nome de usuário”) %>”
Request.Cookies(“Usuário”)(“PWD”) = “<% = Solicitação(“Senha”) %>”
Request.Cookies(“User”).Path = “/adminstuff” 'Aplica-se apenas a páginas de administração
...
este cookie agora será encontrado em todas as páginas que o usuário solicitar do diretório adminstuff ou de seus subdiretórios. Caso não exista, você pode redirecionar o usuário para a página de cadastro:
If (Request.Cookies("User")("UID") <> "alexhomer") _
Ou (Request.Cookies(“Usuário”)(“PWD”) <> “secreto”) Então
Response.Redirect “login.asp?UserName=” & Request.Cookies(“Usuário”)(“UID”)
Terminar se
...
Como o nome de usuário no cookie é colocado na string de consulta URL de Response.Redirect, se ocorrer um erro ao inserir a senha e você quiser que o usuário não precise digitar novamente o nome de usuário, você pode usá-lo no login. página asp:
<FORM ACTION=”check_user.asp” MÉTODO=”POST”>
<TIPO DE ENTRADA=”TEXTO” NOME=”Nome de usuário”
VALOR=”<% = Request.QueryString(“NomeUsuário”) %>”><P>
<TIPO DE ENTRADA=”ENVIAR” VALOR=”LOGIN”>
</FORM>
2) Modificar cookies existentes
Você pode usar ASP para modificar cookies existentes, mas não pode modificar apenas um valor no cookie. Ao atualizar um cookie na coleção Response.Cookies, o valor existente será perdido. Podemos criar um cookie com o seguinte código, que pode ser usado:
Response.Cookies("VisitCount")("StartDate") = dtmStart
Response.Cookies("VisitCount")("LastDate") = Agora
Response.Cookies("VisitCount")("Visitas") = CStr(intVisitas)
Response.Cookies("VisitCount").Path = "/" 'Aplicar a todo o site
Response.Cookies("VisitCount").Expires = DateAdd("m",3,Now)
Se você deseja atualizar os valores de Visits e LastDate, primeiro você não deve alterar todos os valores e depois reescrever o cookie inteiro :
datDtart = Response .Cookies("Contagem de visitas")("Data de início")
intVisits = Response.Cookies("VisitCount")("Visitas")
Response.Cookies("Contagem de Visitas")("DataInício") = dtmStart
Response.Cookies("VisitCount")("LastDate") = Agora
Response.Cookies("VisitCount")("Visitas") = Cstr(intVisitas)
Response.Cookies(“Contagem de visitas”).Path = “/”
Response.Cookies("VisitCount").Expires = DateADD("m",3,Now + 1) e como acontece com quase todos os outros métodos e propriedades Response, isso deve ser feito antes de escrever qualquer coisa (ou seja, abrir uma tag <HTML> ou qualquer texto ou outro HTML) à resposta.