Ir para conteúdo

POWERED BY:

Arquivado

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

Gustav Silv

Insert into e update no global asa com session!

Recommended Posts

Olá pessoal!

Estou com muita dificuldade em fazer um sistema de logoff utilizando o global asa! Abaixo o codigo:

 

<script LANGUAGE=VBScript RUNAT=Server>Sub Application_OnStart	Application("DB") = "PROVIDER = MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\INETPUB\WWWROOT\PUBLISHIT.COM.BR\DB\DATABASE.MDB" & ";JET OLEDB:DATABASE PASSWORD=PUBLISH"End SubSub Session_OnStart	Session.Timeout = 500End SubSub Session_OnEnd	'GRAVA A ENTRADA NO BANCO DE DADOS - TABELA REPORT - PARA ADMINISTRACAO FUTURA:		IF SESSION ("IDUSER") <> "" THEN			vMODULO = "LOGOFF"			vACAO = "Log-off no sistema."			vIP = REQUEST.SERVERVARIABLES("REMOTE_ADDR")				SET REPORT = DB.EXECUTE ("INSERT INTO REPORT (IDUSER, MODULO, ACAO, IP, DATA, HORA, DIASEMANA) VALUES ("&vIDUSER&", "&vMODULO&", "&vACAO&", "&vIP&", "&FDATE(AGORA)&", "&FHOUR(AGORA)&", "&WEEKDAY(NOW)&")")	'ATUALIZA A ENTRADA NO BANCO DE DADOS - TABELA LOGIN - MOSTRANDO USUARIO ON-LINE (CAMPO SIM/NAO)		SET USER = DB.EXECUTE ("UPDATE LOGIN SET STATUS = '0' WHERE ID = "&vIDUSER&"")			END IFEnd Sub</SCRIPT>
Simplesmente não acontece nada! Sem dúvida tabelas do banco/variáveis funcionam quando linko para logoff.asp!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala cara beleza?

 

Para testar a condicional troque isso:

IF SESSION ("IDUSER") <> "" THEN			vMODULO = "LOGOFF"			vACAO = "Log-off no sistema."			vIP = REQUEST.SERVERVARIABLES("REMOTE_ADDR")				SET REPORT = DB.EXECUTE ("INSERT INTO REPORT (IDUSER, MODULO, ACAO, IP, DATA, HORA, DIASEMANA) VALUES ("&vIDUSER&", "&vMODULO&", "&vACAO&", "&vIP&", "&FDATE(AGORA)&", "&FHOUR(AGORA)&", "&WEEKDAY(NOW)&")")	'ATUALIZA A ENTRADA NO BANCO DE DADOS - TABELA LOGIN - MOSTRANDO USUARIO ON-LINE (CAMPO SIM/NAO)		SET USER = DB.EXECUTE ("UPDATE LOGIN SET STATUS = '0' WHERE ID = "&vIDUSER&"")			END IF

Por isso:

IF SESSION ("IDUSER") <> "" THENResponse.Write("vazio")ElseResponse.Write("cheio")			END IF

 

e me fale o resultado!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rodrigo!Coloquei os parametros enviados e simplesmente nao aconteceu nada. Observei que você indicou para colocar o teste da session iduser em session_onend... ...mas aí não sei como fazer o request deste global asa. Para falar a verdade, nem o request do cookie abaixo sei se fiz direito. Basta rodar a aplicação que ele imprime na tela o response.write?Testei também com cookies, da seguinte forma:Sub Session_OnStart Session.Timeout = 500 vUSER = REQUEST.COOKIES ("IDUSER") IF vUSER = "" THEN Response.Write("vazio") Else Response.Write("cheio") end ifEnd SubSub Session_OnEnd vUSER = REQUEST.COOKIES ("IDUSER") IF vUSER = "" THEN Response.Write("vazio") Else Response.Write("cheio") end ifEnd SubObrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.A questão é que testes de response.write não se aplicam a este contexto.Porque o evento de término de sessão é chamado pelo IIS diretamente, ele não é como um asp normal que é executado e tem sua saída na tela.O evento de término de sessão somente se dá ao chamar o método "terminate" do objeto "session" ou com o "timeout" que tem seu tempo definido na sessão. No caso de usar o terminate, até teria como o IIS processar a rotina e mostrar a saída dela na tela, mas no caso do timeout? Que se dá quando o usuário já saiu do site por exemplo? A rotina é chamada de acordo com o tempo que se passou sem resposta do usuário, daí não tem como mostrar ao mesmo mais nada.Agora, parte de conexão com o banco fica mais chato neste momento. Isso porque o usuário (login do windows) que executa essa rotina não é o mesmo usado para processar o site. Por isso cai nos problemas de permissão e tudo mais.Eu também passei por isso, pensei que ia ser moleza montar meu módulo de controle de acesso com logoff e tudo, no fim das contas acabei por deixar sem controle de logoff. No meu caso que abro um registro em banco, ele fica aberto até um novo login que o abre novamente.. Por que a coisa não dava certo de jeito nenhum.Sendo ainda que se você tem um problema com o servidor, essa rotina nem roda. Se o micro travar, ou der qualquer panezinha de memória por exemplo, realmente nada confiável.Acho que o máximo que dá pra usar é fazer um controlezinho trabalhando com variáveis de aplicação, nada muito sofisticado ou que seja de execução realmente necessária.Se conseguir contornar o problema, gostarei de conhecer a solução =B

Compartilhar este post


Link para o post
Compartilhar em outros sites

É Hudson, realmente é complicado...

Mas não poderíamos deixar de tentar de todas as formas para conseguir contornar o problema. No meu caso, tem um botão de logoff que o usuário deve utilizar. Mas a internet é uma experiência cognitiva, e sendo assim a grande maioria dos usuários simplesmente fecham o browser.

 

Isso para um sistema é péssimo, principalmente quando se trata de uma intranet. Dessa forma, como auditar um usuário? Ou até mesmo, como estabelecer uma conexao entre usuários online, como chat?

 

Só sei que preciso de uma solução plausível e eficiente. Vamos em frente e, aquele que conseguir recebe os méritos!!!

 

[]'...

 

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez você possa tentar algo usando componentes, tipo montar sua própria DLL, talvez assim tenha mais controle, realmente não sei.flw boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez eu posso lhe ajudar se não tiver resolvidoDeixa eu lhe entender Você quer mostra o usuario on-line gravado no bancoou voce quer fazer um chatMe passa certinho que poderei lhe ajudarPorque de acordo com o nosso amigo Shison e complicado mas podemos jogar um javascript ao fechar a janela para desconectar a sessao

Compartilhar este post


Link para o post
Compartilhar em outros sites

De fato poderia-se utilizar o evento de saída de página que executa ao fechar ou ao sair da página.Mas nada lhe garante que o javascript do cara está ativo, e no caso você poderia utilizar uma popup para processar o seu asp, a qual pode ser barrada por um bloqueador tb.Além de que, aquele evento de saída particularmente não me é muito confiável, pois já presenciei alguns navegadores que não o executam sempre.vlw

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.