Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!
>
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.
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>")
%>
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:
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...
>
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???
<%
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)
>
<%
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?
dae coloque
Session.Timeout=1440 ' que é o máximo que aguenta .1440 em minutos = 24 horas
>
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.
o que retorno no
response.write("Timeout atual: " & Session.Timeout)
Dúvida.
Abraços - Fábio.
>
Dúvida.
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
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!
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.
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!
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
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