Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior Lino

Session.TimeOut não funciona.

Recommended Posts

http://forum.imasters.com.br/topic/250310-sessiontimeout-nao-funciona/

Boa tarde pessoal.

 

Estou com esse mesmo problema com Session.TimeOut

 

Não funciona nem a pau...

O pessoal do servidor disse que o padrão é 20 minutos, porém não dura nem 5 minutos...

 

Já fiz o que o Ted'K postou aqui e em outro tópico, porém nada...

 

Alguém tem a solução (ou o link dela rsrs)?

 

Grato!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente atribuir o timeout e scripttimeout também

 

<%
response.write("<p>")
response.write("Timeout padrão é: " & Session.Timeout)
response.write("</p>")

Session.Timeout=100

response.write("<p>")
response.write("Timeout atual: " & Session.Timeout)
response.write("</p>")

Server.ScriptTimeout=200
%>

 

e também peça para o host fazer uma mudança, a título de teste e verifique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este valor é dado em segundos, ou seja, se você colocou Session.TimeOut = 60, isto significa 1 minuto.

 

Procure usar Session.TimeOut = 1200, aí você terá 20 minutos.

 

[]tz ;)

 

o timeout é em minutos não em segundos

 

 

http://www.w3schools...rop_timeout.asp

 

 

 

Isso do tempo das sessões pode estar relacionado com o servidor e o iis, eu já tive um site num servidor partilhado onde as sessões estoiravam em 5 minutos ou menos, eles tinham x memória disponível para cada site, quando atingisse essa memória o próprio iis faz um "recycle" à pool que o site está associado e limpa as sessões todas, depois mudei o site para uma vps e nunca mais tive problema.

 

 

Tem que ver se o seu site não está consumindo muita memória também, pois na vps cheguei a ter um site que estava a consumir muita memória(não testava uns dados que vinham com get e dava erro no script, gastando muita memória ao server), e depois de tratado o problema ficou bom.

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute este code, e veja o que aparece

 

<%Server.ScriptTimeout=200
response.write("<p>")
response.write("Timeout padrão é: " & Session.Timeout)
response.write("</p>")

Session.Timeout=100

response.write("<p>")
response.write("Timeout atual: " & Session.Timeout)
response.write("</p>")


%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opaa...

 

Entrei em contato com o UOL Host e o tempo padrão é 20 minutos e realmente é isso que descreve a Session.TimeOut...

Setei para aumentar até para 100 minutos, porém não dura 5 minutos...

 

Fiz um teste na Locaweb com o mesmo script e funcionou perfeito, já estou com a Session a meia hora aberta...

 

O problema é no Servidor da UOL Host mesmo, ele está configurado para 20 minutos, porém não parece obedecer a isso.

 

 

Para resolver vou mudar esta aplicação para a Locaweb, assim termina minha dor de cabeça..

 

 

Obrigado a todos pela ajuda.. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi como eu disse, para você entrar em contato com o Host, pois, fazendo aquela alteração no code, ele pega normalmente, muitas vezes, permanecer com um host, onde seu code esta correta, é mais fácil mudar realmente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute este code, e veja o que aparece

 

<%Server.ScriptTimeout=200
response.write("<p>")
response.write("Timeout padrão é: " & Session.Timeout)
response.write("</p>")

Session.Timeout=100

response.write("<p>")
response.write("Timeout atual: " & Session.Timeout)
response.write("</p>")


%>

fiz o teste o meu deu:

Timeout padrão é: 2100

Timeout atual: 100

como faço para aumentar???

Compartilhar este post


Link para o post
Compartilhar em outros sites
<%
OPTION EXPLICIT
Response.Buffer = False
Server.ScriptTimeout = 2147483647    '32 bit signed integer
'35791394.116666666666666666666667 minutos
'596523.23527777777777777777777778 horas
'24855.134803240740740740740740741 dias
'68.049650385327147818592034882247 anos

Response.Write CStr(Server.ScriptTimeout)
%>

no timeout o máximo que aguenta é 1440 (em minutos)

Compartilhar este post


Link para o post
Compartilhar em outros sites
<%
OPTION EXPLICIT
Response.Buffer = False
Server.ScriptTimeout = 2147483647    '32 bit signed integer
'35791394.116666666666666666666667 minutos
'596523.23527777777777777777777778 horas
'24855.134803240740740740740740741 dias
'68.049650385327147818592034882247 anos

Response.Write CStr(Server.ScriptTimeout)
%>

no timeout o máximo que aguenta é 1440 (em minutos)

 

entao fazendo isso ta aumentando o timer do session?

Compartilhar este post


Link para o post
Compartilhar em outros sites

dae coloque

 

Session.Timeout=1440 ' que é o máximo que aguenta .1440 em minutos = 24 horas

Compartilhar este post


Link para o post
Compartilhar em outros sites

dae coloque

 

Session.Timeout=1440 ' que é o máximo que aguenta .1440 em minutos = 24 horas

<%

OPTION EXPLICIT

Response.Buffer = False

Server.ScriptTimeout = 1440 '32 bit signed integer

'35791394.116666666666666666666667 minutos

'596523.23527777777777777777777778 horas

'24855.134803240740740740740740741 dias

'68.049650385327147818592034882247 anos

 

Response.Write CStr(Server.ScriptTimeout)

%>

 

Ficaria assim xanbruzum? crio a pagina upo no server e acesso ela?

 

ontem criei uma pagina assim.

<%Server.ScriptTimeout=200

response.write("<p>")

response.write("Timeout padrão é: " & Session.Timeout)

response.write("</p>")

 

Session.Timeout=1440

 

response.write("<p>")

response.write("Timeout atual: " & Session.Timeout)

response.write("</p>")

 

 

%>

executei no serve so que nao ta segurando os 1440 minutos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que retorno no

response.write("Timeout atual: " & Session.Timeout)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dúvida.

- Ao invés de criar um tempo extenso para uma sessão expirar, não seria mais interessante gravar um cookie e caso a sessão seja expirada, seja possível reativa-la através de um cookie?

- E outra dúvida, em sites que possuem um login e senha, qual a maneira mais correta e segura de recuperar uma session ID para refazer o login do cliente automaticamente?

 

Abraços - Fábio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dúvida.

- Ao invés de criar um tempo extenso para uma sessão expirar, não seria mais interessante gravar um cookie e caso a sessão seja expirada, seja possível reativa-la através de um cookie?

- E outra dúvida, em sites que possuem um login e senha, qual a maneira mais correta e segura de recuperar uma session ID para refazer o login do cliente automaticamente?

 

Abraços - Fábio.

eu uso o session pq aprendir assim, mas acredito que o cookie seria o apropriado pq as vezes mesmo usando ou navegando no site expira a seçao. mesmo colocando em tds as paginas a validação do usuario o session expira ele nao atualiza a cada conexao com o banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criar um Cookie que permaneça ativo até em quando o navegador estiver aberto é simples, eu faço assim:

 

Criando um Cookie, deve ser criado no final do código de login

<%

response.cookies("nome_cookie")("cod_user") = cod_user

%>

 

'Verificando se Cookie Existe no caso da session ter se expirado

 

<% if session("cod_user") = "" and trim(replace(request.cookies("nome_cookie")("cod_user"),"'","")) <> "" then
session("cod_user") = trim(replace(request.cookies("nome_cookie")("cod_user"),"'","")) %>

 

E na tela de LogOff faz:
'Zera Cookie
<% response.cookies("nome_cookie")("cod_user")=""
'Fim de Zera Cookie
%>

Este código acima é uma forma, porém se um usuário mal intencionado manipular o código do cookie ele consegue logar no login de qualquer pessoa, então precisa na verdade criar uma session ID com um tipo de senha vinculada ao cod_user, onde o login automático seja feito se baseando nessa session ID que recuperara o valor do cookie da senha do computado do cliente.

 

Faria para fazer gerando uma senha em MD5 passando o seu valor para o Cookie, e para o campo da tabela na linha do cliente de senha_cookie o mesmo valor. Enquanto o navegador se manter ativo o sistema verifica se a senha do cookie é igual a senha do banco, se for igual refaz o login, se não for, leva o cliente para uma tela de login, e quando o cliente refizer o login, uma nova senha seria gerada no Cookie no Banco, refazendo assim todo o processo! Em caso de cookie = "" é sinal que o cliente já fechou seu navegador, neste caso ele pode fazer o login novamente, onde iriam novamente serem geradas novas senhas.

 

Eu fico meio receoso em usar este método, pois caso o computador da pessoa seja invadido por um hacker em quando ela esteja usando o site, o hacker pode subtrai a senha do cookie do cliente e gravar no computador dele e tentar se logar usando o cookie. Caso a senha ainda seja a mesma do Banco, o hacker pode facilmente efetuar um login se passando pelo cliente. Caso alguém aqui saiba uma forma de resolver isto, escreva.

 

Abraços!

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

trabalhar com session, sempre é complicada devido a várias culturas de usuários e dependendo de seu conteúdo visualizado, tipo: se estou fazendo uma prova, lendo um artigo, estudando um code etc. bem como limitar o login da mesma pessoa em máquinas diferentes ao mesmo tempo ou logar duas vezes na mesma máquina, o ideal seria ter um campo do tipo booleano no bd .

 

 

A session pode expirar dentro de um valor pre-determinado do servidor, ou pode ter seu tempo alterado via global.asa (que é um arquivo onde determinamos algumas variaveis globais para o funcionamento de todo o sistema) ou via o timeout como você o fez.

Isso é algo que é determinado no servidor, então, enquanto esse limite de tempo da session não for atingido, ele vai constar com ativo, por isso se eu fechar o navegador, reabri-lo dentro desse tempo, tenho acesso ao sistema mesmo sem ter feito novo login.

Como mudar a cultura do usuário, é um trabalho que as vezes nos faz sentir como o Padre José de Anchieta, é melhor pensar em alternativas:
Uma delas seria criar um cookie que seria criado quando o usuário entra no sistema, e se fizer o logout do modo certo, ele é destruído ou tem seu valor alterado, bem como a session seria destruída também.
Mas se não deslogar como esperado, fechando o navegador por exemplo, ao tentar novo login, o sistema verifica a existência desse cookie ou o seu valor, e existindo ele ou o valor, uma nova sessão é criada, caso contrario exibe-se uma mensagem qualquer.

Você pode usar o Server.Variables e pegar o nome da maquina que acessou o sistema e associa-la ao login no bd, e comparar o valor registrado ao atual, se forem iguais, libera-se o sistema para o usuário, ou se for diferente, invalida-se a ultima sessão e autoriza-se a nova sessão.

 

ou também o uso de algum timer via AJAX, que chamaria uma página qualquer (não precisaria fazer nada) a cada X minutos. Assim, mesmo que o usuário não estivesse ativo, essa chamada simularia um acesso do mesmo, fazendo com que a sessão não se perdesse.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Esses sites grandes como FaceBook e Youtube, eles permitem que cada usuário ao acessar já entre logado, isso é salvo em Cookies? Tem algum risco de alguém pegar um dado de sessão no computador de uma pessoa e tentar se logar em outro lugar? Como você disse, se usar o comando Server.Variables dificulta um pouco uma vez que o hacker precisaria usar uma máquina dos os dados iguais né?

 

Eu já fiz um esquema de reativar sessão por Cookies em loja virtual para recuperar o carrinho de compras do usuário, mas com a questão de login nunca fiz.

 

Eu penso em criar no Banco de Dados mais 2 campos extra, um de senha_cookies e outro de Server.Variables.

 

Dentre das mais variadas opções de Server.Variables, qual delas você acha mais adequada eu recuperar e comparar?

 

Abraços - Fábio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que pegar IP e dependendo se ele usar proxy tem que usar o Request.ServerVariables["HTTP_X_FORWARDED_FOR", data, hora, nome, fazer um esquema de não deixar logar em dois pc ao mesmo tempo e em outro, daí entra o campo no bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.