Ir para conteúdo

POWERED BY:

Arquivado

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

rluiz1708

Ultimo acesso (no SQL) para session

Recommended Posts

Boa tarde pessoal!

 

Estou com uma dúvida que creio eu ser fácil, porém não consegui resolver ela ainda.

 

Tenho um sistema de login que toda que vez o usuário loga, é registrado no banco de dados (em SQL) a hora que ele se conectou. Após a verificação de login e senha, o usuário é redirecionado para uma página onde aparece seu nome de usuário (que está gravado em uma session) e a hora de sua entrada.

 

Acontece que, eu queria saber como passar esse valor (data e hora que foi conectado) que já está gravado no banco em SQL para uma session, para que, na página, isso possa ser exibido.

 

Eu sei que vcs vão falar que é pra eu fazer da mesma maneira como eu fiz pro usuário. Mas a session do usuário recebe o login que foi digitado na página anterior... e a hora não é digitada. Para gravar a hora no banco, uso a função getdate() do SQL.

 

Abaixo o código da minha página de verifica o login, pra vcs entenderem melhor:

 

<% Option Explicit %>
<!-- #include file = "funcoes.asp" -->
<%

dim SQL, rs, conexao, SQLGravaAcesso, login, senha, SQLBloqueado, rsBloqueado

login = request.Form("txtlogin")
senha = request.Form("txtsenha")


'comando sql que verifica se login e senha digitados são iguais ao do banco de dados
	SQL= "select * from sistema where " & _
   	"UsuarioAdm='" & Replace(request.form("txtlogin"), "'", "''") & _
   	"' and SenhaAdm='" & Replace(request.form("txtsenha"), "'", "''") & "'"

'comando sql que grava a hora em que foi acessado
	SQLGravaAcesso= "UPDATE sistema SET UltimoAcesso= getdate() where UsuarioAdm='" & request.form("txtlogin") & "'"
	
'comando SQL que verifica se o usuário está bloqueado
	SQLBloqueado= "select * from sistema where UsuarioAdm='" & login & "' and Bloqueado='false'"
	
	

'abre a conexão com o banco de dados	
call abre_conexao


'executa o comando sql
Set rs = conexao.Execute(SQL)

if login="" or senha="" then 'Verifica se login ou senha foram digitados

	'Armazena em uma variável Session o status do Usuário
	session("StatusAcesso") = false
	  
	'Redireciona para a Página de Login e informa o erro
	response.redirect("default.asp?erro=campovazio") 

else 'Se os campos usuario e senha não estiverem vazios
   
	if not rs.eof then 'Encontrou o usuário
	
		'Verifica se o usuário não está bloqueado
		Set rsBloqueado= conexao.Execute(SQLBloqueado)
			if rsBloqueado.eof then 'Usuário bloqueado
				'Armazena em uma variável Session o status do Usuário
				session("StatusAcesso") = false
	  
				'Redireciona para a Página de Login e informa o erro
				response.redirect("default.asp?erro=bloqueado") 
			else
		
				  'Armazena em uma variável Session o status do Usuário
				 session("StatusAcesso") = true 
		 
				'Grava no banco de dados data e hora do acesso
				Set rs= conexao.Execute(SQLGravaAcesso)
		 
				'Grava em uma variável Session o Usuário
				session("Usuario") = request.form("txtlogin")
				
	 
				'Redireciona para a Página Inicial	de Administração
				response.redirect("admin.asp") 
			end if
		 
	else 'Usuário não encontrado
		'Armazena em uma variável Session o status do Usuário
		 session("StatusAcesso") = false
	  
		  'Redireciona para a Página de Login e informa o erro
		 response.redirect("default.asp?erro=login") 
		 
		 
	end if
end if

	  set rs = nothing 'Destrói o Objeto
	  rs.close

%>

 

Quem puder ajudar agradeço muito! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola rluiz1708,

 

Bom, vejo duas possibilidades rápidas...

 

a primeira, utilize o date e o time do asp para inserir a data e hora no banco e aproveite as variáveis dos mesmos para gravar sua session...

 

caso você queria pegar especificamente a data e hora do banco, faça um select capturando a data e hora do banco e grave sua session com elas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com base no que você disse e com um post aqui mesmo do fórum.

 

Eu tinha que gravar numa variavel de sessao a hora atual, utilizando o comando now() do asp.

Depois que essa session recebesse esse now(), executava o comando sql que fazia update na tabela inserindo no campo UltimoLogin, da tabela SISTEMA, essa variavel....

Só que o sql interpretava a session como string, e no banco esse campo UltimoAcesso estava como smalldatetime (dd/mm/aaaa hh:mm:ss).... então tinha que converter no sql a session (que era string) para smalldatetime.

 

 

Segue o código:

 

 

<% Option Explicit %>
<!-- #include file = "funcoes.asp" -->
<%

dim SQL, rs, conexao, SQLGravaAcesso, login, senha, datahora, SQLBloqueado, rsBloqueado

login = request.Form("txtlogin")
senha = request.Form("txtsenha")



'comando sql que verifica se login e senha digitados são iguais ao do banco de dados
	SQL= "select * from sistema where " & _
   	"UsuarioAdm='" & Replace(request.form("txtlogin"), "'", "''") & _
   	"' and SenhaAdm='" & Replace(request.form("txtsenha"), "'", "''") & "'"

'comando sql que grava a hora em que foi acessado
	SQLGravaAcesso= "UPDATE sistema SET UltimoAcesso= (convert(smalldatetime, '" & session("Entrada") & "',103)) where UsuarioAdm='" & request.form("txtlogin") & "'"
	
'comando SQL que verifica se o usuário está bloqueado
	SQLBloqueado= "select * from sistema where UsuarioAdm='" & login & "' and Bloqueado='false'"
	
	

'abre a conexão com o banco de dados	
call abre_conexao


'executa o comando sql
Set rs = conexao.Execute(SQL)

if login="" or senha="" then 'Verifica se login ou senha foram digitados

	'Armazena em uma variável Session o status do Usuário
	session("StatusAcesso") = false
	  
	'Redireciona para a Página de Login e informa o erro
	response.redirect("default.asp?erro=campovazio") 

else 'Se os campos usuario e senha não estiverem vazios
   
	if not rs.eof then 'Encontrou o usuário
	
		'Verifica se o usuário não está bloqueado
		Set rsBloqueado= conexao.Execute(SQLBloqueado)
			if rsBloqueado.eof then 'Usuário bloqueado
				'Armazena em uma variável Session o status do Usuário
				session("StatusAcesso") = false
	  
				'Redireciona para a Página de Login e informa o erro
				response.redirect("default.asp?erro=bloqueado") 
			else
		
				  'Armazena em uma variável Session o status do Usuário
				 session("StatusAcesso") = true 
				
				'Grava em uma variável Session a data e hora do acesso
				Session("Entrada") = now()
						 
				'Grava no banco de dados data e hora do acesso
				Set rs= conexao.Execute(SQLGravaAcesso)
				
						 
				'Grava em uma variável Session o Usuário
				session("Usuario") = request.form("txtlogin")
				
	 
				'Redireciona para a Página Inicial	de Administração
				response.redirect("admin.asp") 
			end if
		 
	else 'Usuário não encontrado
		'Armazena em uma variável Session o status do Usuário
		 session("StatusAcesso") = false
	  
		  'Redireciona para a Página de Login e informa o erro
		 response.redirect("default.asp?erro=login") 
		 
		 
	end if
end if

	  set rs = nothing 'Destrói o Objeto
	  rs.close

%>

 

 

Ola rluiz1708,

 

Bom, vejo duas possibilidades rápidas...

 

a primeira, utilize o date e o time do asp para inserir a data e hora no banco e aproveite as variáveis dos mesmos para gravar sua session...

 

caso você queria pegar especificamente a data e hora do banco, faça um select capturando a data e hora do banco e grave sua session com elas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi. Você gravar a data no último banco quando faz o login e quer pegar a data gravada e armazenar em uma session, correto?

 

Se for é só fazer uma consulta após o update, pegar a data e armazenar na SESSION.

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.