Objeto de Sessão ASP
Um objeto Session armazena informações ou altera as configurações de uma sessão de usuário.
O objeto Sessão
Quando você está trabalhando com um aplicativo em seu computador, você o abre, faz algumas alterações e depois o fecha. Isso é muito parecido com uma Sessão. O computador sabe quem você é. Ele sabe quando você abre o aplicativo e quando você o fecha. Porém, na internet há um problema: o servidor web não sabe quem você é e o que você faz, pois o endereço HTTP não mantém o estado.
O ASP resolve esse problema criando um cookie exclusivo para cada usuário. O cookie é enviado ao computador do usuário e contém informações que identificam o usuário. Essa interface é chamada de objeto Session.
O objeto Session armazena informações ou altera as configurações de uma sessão de usuário.
As variáveis armazenadas em um objeto Session contêm informações sobre um único usuário e estão disponíveis para todas as páginas em um aplicativo. Informações comuns armazenadas em variáveis de sessão são nome, id e preferências. O servidor cria um novo objeto Session para cada novo usuário e destrói o objeto Session quando a sessão expira.
Quando começa uma sessão?
Uma sessão começa quando:
- Um novo usuário solicita um arquivo ASP e o arquivo Global.asa inclui um procedimento Session_OnStart
- Um valor é armazenado em uma variável de sessão
- Um usuário solicita um arquivo ASP e o arquivo Global.asa usa a marca <object> para instanciar um objeto com escopo de sessão
Quando termina uma sessão?
Uma sessão termina se um usuário não tiver solicitado ou atualizado uma página no aplicativo por um período especificado. Por padrão, isso é 20 minutos.
Se você deseja definir um intervalo de tempo limite menor ou maior que o padrão, use a propriedade Tempo limite .
O exemplo abaixo define um intervalo de tempo limite de 5 minutos:
<%
Session.Timeout=5
%>
Use o método Abandon para encerrar uma sessão imediatamente:
<%
Session.Abandon
%>
Nota: O principal problema com as sessões é QUANDO elas devem terminar. Não sabemos se a última solicitação do usuário foi a final ou não. Portanto, não sabemos por quanto tempo devemos manter a sessão "viva". Esperar muito tempo por uma sessão ociosa consome recursos no servidor, mas se a sessão for excluída muito cedo, o usuário terá que começar tudo de novo porque o servidor excluiu todas as informações. Encontrar o intervalo de tempo limite certo pode ser difícil!
Dica: Armazene apenas PEQUENAS quantidades de dados em variáveis de sessão!
Armazenar e recuperar variáveis de sessão
A coisa mais importante sobre o objeto Session é que você pode armazenar variáveis nele.
O exemplo abaixo definirá o nome de usuário da variável Session como "Donald Duck" e a idade da variável Session como "50":
<%
Session("username")="Donald Duck"
Session("age")=50
%>
Quando o valor é armazenado em uma variável de sessão, ele pode ser acessado em QUALQUER página no aplicativo ASP:
Welcome <%Response.Write(Session("username"))%>
A linha acima retorna: "Bem-vindo Pato Donald".
Você também pode armazenar as preferências do usuário no objeto Session e, em seguida, acessar essa preferência para escolher qual página retornar ao usuário.
O exemplo abaixo especifica uma versão somente texto da página se o usuário tiver uma resolução de tela baixa:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
Remover variáveis de sessão
A coleção Contents contém todas as variáveis de sessão.
É possível remover uma variável de sessão com o método Remove.
O exemplo abaixo remove a variável de sessão "sale" se o valor da variável de sessão "age" for menor que 18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
Para remover todas as variáveis em uma sessão, use o método RemoveAll:
<%
Session.Contents.RemoveAll()
%>
Percorrer a coleção de conteúdo
A coleção Contents contém todas as variáveis de sessão. Você pode percorrer a coleção Contents para ver o que está armazenado nela:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
Resultado:
username
age
Se você não souber o número de itens na coleção Contents, poderá usar a propriedade Count:
<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
Resultado:
Session variables: 2
Donald Duck
50
Percorrer a coleção StaticObjects
Você pode percorrer a coleção StaticObjects para ver os valores de todos os objetos armazenados no objeto Session:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>