Como testar o tempo de sessão do meu site?

Os scripts abaixo tem como finalidade testar o tempo de vida de uma sessão, as informações são gravadas em um banco de dados access Os dados gravados no banco são ip , id da sessão , hora inicial e hora final

Criando o sessao.mdb

Primeiro deve ser criado um banco de dados access com nome de sessao.mdb, crie a tabela sessao conforme descrição abaixo:

Como testar o tempo de sessão do meu site?

Se quiser, pode usar o script:

 create table sessao (id_sessao text(50), hora_inicial text(50), hora_final text(50), ip text(50)) 

Crie agora o arquivo nova_sessao.asp com o código abaixo:

 <% set conexao=server.CreateObject("Adodb.Connection") conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:/home/login/dados/sessao.mdb" %> <div align="center"> <p><font size="5" face="Verdana, Arial, sans-serif">Teste de Sessão</font></p> <p><font size="2" face="Verdana, Arial, sans-serif">[<a href="del_sessao.asp?valor=del"> <b>Zerar tudo</b></a> ]</font> [ <b><font size="2" face="Verdana, Arial, sans-serif"><a href="del_sessao.asp?valor=abandona">Abandonar a Sessão</a></font></b> ]</p> <% strsql = "select ip,id_sessao,hora_inicial,hora_final from sessao order by hora_inicial desc" set rs = conexao.execute(strsql) if rs.eof then sql7 = "insert into sessao (ip, id_sessao , hora_inicial ) values ('"& request.servervariables("Remote_Addr") &"','"& session.sessionid &"','"& now &"')" conexao.execute(sql7) %> <meta http-equiv="refresh" content="1"> <% response.end end if vsessao = rs("id_sessao") vhora_final = rs("hora_final") %> <table width="90%" border="0" bgcolor="#eaeaea"> <tr> <td width="20%"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><b>IP</b></font></div> </td> <td width="24%"> <div align="center"><b><font size="2" face="Verdana, Arial, sans-serif">Sessão Atual:</font></b></div> </td> <td width="21%"> <div align="center"><b><font size="2" face="Verdana, Arial, sans-serif">Hora Inicio:</font></b></div> </td> <td width="15%"> <div align="center"><b><font size="2" face="Verdana, Arial, sans-serif">Hora Final:</font></b></div> </td> <td width="20%"> <div align="center"><b><font size="2" face="Verdana, Arial, sans-serif">Duração:</font></b></div> </td> </tr> <%while not rs.eof%> <tr bgcolor="#FFFFFF"> <td width="20%"> <div align="center"><font face="Verdana, Arial, sans-serif" size="2"><%=rs("ip")%></font></div> </td> <td width="24%"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><%=rs("id_sessao")%></font></div> </td> <td width="21%"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><%=rs("hora_inicial")%></font></div> </td> <td width="15%"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><%=rs("hora_final")%></font></div> </td> <td width="20%"> <div align="center"><font size="2" face="Verdana, Arial, sans-serif"><%=DateDiff("n", rs("hora_inicial"), rs("hora_final"))%> minutos</font></div> </td> </tr> <% rs.movenext wend %> </table> <% '******************************** se o id_sessao do banco for igual ao sessionid , então nada é executado if vsessao = session.sessionid then response.end end if  if vsessao <> session.sessionid and vhora_final = "" then sql2 = "insert into sessao (id_sessao , hora_inicial ) values ('"& session.sessionid &"','"& now &"')" conexao.execute(sql2) response.end end if if vsessao <> session.sessionid then sql1 = "update sessao set hora_final = '"& now & "' where id_sessao ='"& vsessao &"'" conexao.execute(sql1) sql3 = "insert into sessao (ip, id_sessao , hora_inicial ) values ('"& request.servervariables("Remote_Addr") &"','"& session.sessionid &"','"& now &"')" conexao.execute(sql3) end if %> <p><font size="2" face="Verdana, Arial, sans-serif"><a href="nova_sessao.asp?valor=zerar"> </a></font></p> </div> <% rs.close set rs = nothing conexao.close set conexao = nothing %> 

Arquivo para zerar as informações do banco e matar a sessão

Crie o arquivo del_sessao.asp utilizando o código abaixo. Este arquivo será responsavel por zerar todas as informações do banco e também para matar a sessão.

 <% if request.querystring("valor") = "abandona" then session.abandon response.redirect "nova_sessao.asp" end if if request.querystring("valor") = "del" then  set conexao=server.CreateObject("Adodb.Connection") conexao.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:/home/login/dados/sessao.mdb"  del = "delete from sessao" conexao.execute(del) end if conexao.close set conexao = nothing response.redirect "nova_sessao.asp" %> 

Veja também



    Veja exemplos de conexão com o banco Access via script ASP.

    Windows 2008

    Use o exemplo abaixo para realizar uma conexão sem utilizar uma DSN.

    ConnString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:/home/LOGIN_DE_FTP/dados/bancoAccess.accdb;Persist Security Info=False;" Set Conexao = Server.CreateObject("ADODB.Connection") Conexao.Open ConnString Set Registros = Server.CreateObject("ADODB.Recordset") Registros.Open "Clientes", Conexao

    Note acima que Data Source=E:/home/LOGIN_DE_FTP/dados/bancoAccess.accdb; representa o caminho de seu site dentro do servidor, que está sob o diretório e:/home/LOGIN_DE_FTP .

    O diretório será: e:/home/LOGIN_DE_FTP/dados

    Windows 2012

    No ambiente Windows 2012 o driver utilizado é o mesmo, porém o caminho físico setado é diferente, neste caso o caminho a ser utilizado deve ter sempre o formato:

    //windows-pd-0001.fs.locaweb.com.br/WNFS-0001/Loginftp/CaminhodoBanco

    Veja um exemplo utilizando este caminho:

    <%  'Declarando variáveis Dim adoCon, strCon   'Conectando com o banco strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=//windows-pd-0001.fs.locaweb.com.br/WNFS-0001/Loginftp/Dados/NomedoBanco"   'Criando objeto Set adoCon = Server.CreateObject("ADODB.Connection")   'Abrindo conexão adoCon.Open strCon   '##Tratamento de erro. Caso ocorra problemas na conexão, exibe esta informação e apresenta detalhes. If Err.Number <> 0 Then     response.write "<b><font color='red'> Falha na conexão !</font></b>"     response.write "<BR><BR>"     response.write "<b>Erro.Description:</b> " & Err.Description & "<br>"     response.write "<b>Erro.Number:</b> " & Err.Number & "<br>"     response.write "<b>Erro.Source:</b> " & Err.Source & "<br>" Else    '##Caso a conexão seja bem sucedida, mostra mensagem de confirmação.    response.write "<b><font color='blue'> Conexão OK !</font>" End If   'Fechando conexão adoCon.Close   Set adoCon = Nothing %>

    Sempre deve-se colocar os bancos de dados access dentro da pasta dados, pois ela não está exposta na web, garantindo assim a segurança do conteúdo contra downloads diretos.

    Fechando a conexão

    Com o comando Registros.Open a conexão foi criada. Você pode fechá-la com os seguintes comandos:

     Registros.Close Set Registros = Nothing 

    Veja também