Ir para conteúdo
Fórum Script Brasil

cwbs

Membros
  • Total de itens

    33
  • Registro em

  • Última visita

Tudo que cwbs postou

  1. cwbs

    Relatório De Usuários Logados

    Isso eu faço em todas as páginas, afinal eu não quero que ninguém tenha acesso sem estar logado. Se a sessão expirou, e o usuário clica em um link para o qual ele precisa estar logado (em outras palavras: If Not Session("Logado") = 'OK' Then), ele é redirecionado para a página de login. O prb é outro: Imagine o seguinte cenário: 1) Usuário loga no sistema. Session iniciada. 2) Usuário executa algumas tarefas. Session em andamento. Tudo OK. 3) Usuário sai pra almoçar e esquece o sistema logado. Session inativa. Timeout em andamento. 4) Usuário come igual à um elefante e vai ficar umas 2 horas almoçando. Session inativa. Timeout em andamento. 5) Timeout da sessão (10 minutos) é atingido: evento Session_OnEnd() é (teoricamente) disparado. 6) Script para deslogar, colocado no Session_OnEnd(), deveria ser chamado nesse momento, mas NÃO é chamado. Tudo bem que a Session acabou, as variáveis foram zeradas, e qualquer um que cair naquele 'If... End If' vai ser redirecionado, etc. etc. mas... e o meu relatório? A única coisa que grava no banco de dados, no meu relatório ('a que horas o usuário logou, 'a que horas deslogou, quanto tempo ficou, etc.) é o script que eu preciso rodar, que é o mesmo que roda quando o usuário fecha o browser. Meu prb é: como vou rodar meu script quando a sessão expirar, já que o Session_OnEnd não funciona? O Response.Redirect no Session_OnEnd() não tá funcionando. Troquei tudo e coloquei a rotina inteira para deslogar no Session_OnEnd(). Tb não funcionou. Existe alguma maneira, ou a Microsoft mais uma vez "me deixou na mão" com essa m%$#@ de ASP? Ou será que existe alguma coisa no servidor que está impedindo o global.asa de dispara os eventos normalmente? Os outros eventos (Session_OnStart(), etc...) funcionam normal... Já estou quase aceitando o fato de que não tem jeito mesmo... Alguma idéia? cwbs
  2. cwbs

    Relatório De Usuários Logados

    Colega, A idéia é justamente essa: ao expirar a sessão, o usuário precisa efetuar login novamente. E o prb é justamente esse: quando a sessão expira, o evento Session_OnEnd não está chamando o script para deslogar o usuário. Se você ler a minha primeira msg, vai ver que o meu procedimento está correto. O que eu preciso é exatamente descobrir uma maneira de rodar o script para deslogar quando a sessão atingir o timeout, o resto eu já fiz, inclusive deslogar quando fechar o browser. Pela lógica, e pelo que a Microsoft oferece, deveria ser no Session_OnEnd do global.asa, mas não quer funcionar assim. Alguma idéia? cwbs
  3. cwbs

    Guestbook

    Colega, O que você quer é um relatório apenas para administradores, onde apareçam a data da msg e o nick de quem enviou, é isso? Ou um resumo de todas as msgs filtradas pelo nick? cwbs
  4. cwbs

    Integração?

    Colega, A única solução que eu encontrei nesse sentido foi uma "gambiarra". Usando ASP, eu não consigo conectar uma base de dados local (uma intranet, por exemplo), selecionar dados e atualizar uma base de dados remota. Só consigo atualizar de remota para remota. Usando VB, eu consigo conectar uma base local, mas a dificuldade de conectar uma base remota é tão grande que eu desisti. Isso tudo fora a incompatibilidade que existe entre Access e outros bancos de dados. Qual foi a gambiarra que eu fiz? 1) Em VB, desenvolvi um aplicativo que conecta a base local Access, seleciona os registros e salva o Recordset em arquivo (através do método 'Save' do ADODB.Recordset) 2) Esse mesmo aplicativo faz o upload dos arquivos de Recordset salvos para o servidor Web (nesse caso, uso o controle Inet para o upload). 3) Logo que o upload termina, ou seja, quando os arquivos Recordset salvos chegam no servidor web, o aplicativo em VB dispara um script ASP no servidor que atualiza a base de dados, abrindo os Recordsets salvos e gravando na base SQL Server na web. 4) Essa operação toda é comandada pelo aplicativo que eu desenvolvi em VB, com um Timer para execução 'a cada dois minutos. Ou seja, existe um atraso de dois minutos na atualização dos dados, mas é a única solução que eu encontrei, já que não foi possível adaptar os aplicativos já existentes no cliente para chamarem o meu aplicativo 'a cada alteração na base local. Espero que essa idéia ajude, boa sorte, cwbs
  5. cwbs

    Relatório De Usuários Logados

    Colega, Isso eu não posso fazer, pois no servidor onde o site está hospedado existe um limite para o máximo de 10 usuários conectados ao banco de dados. Isso serve pra evitar sobrecarga no servidor. Tem gente que loga no sistema, vai no banheiro, sai pra tomar um cafezinho e esquece da vida... Imagine 10 caras logando no sistema e fazendo exatamente isso? Por isso eu configurei um máximo de 10 minutos pra sessão expirar. mesmo assim valeu... cwbs
  6. cwbs

    Relatório De Usuários Logados

    Valeu! Vou ficar standby... cwbs
  7. Colega, Já fiz algo parecido. Estou considerando que programar você já sabe, então só vou lhe dar umas idéias, ok? Vamos chamar de "Página Principal" a página onde você quer que os dados do cliente selecionado sejam mostrados, e de "Janela Auxiliar" a janela 'a parte, ok? 1) No evento 'onclick' desse botão no lado do campo, na Página Principal, chame um javascript "window.open()" para abrir a Janela Auxiliar. Nessa, você pode colocar um 'input text' ou 'select' onde o usuário vai digitar ou selecionar o nome do cliente, mais um botão para disparar o script da pesquisa. 2) No evento 'onclick' do botão da Janela Auxiliar, você recarrega o script da Página Principal, dessa vez enviando o que o usuário digitou ou selecionou na Janela Auxiliar. Esse envio, se você quiser, pode fazer por QueryString, mais ou menos assim: .... /paginaprincipal.asp?Cliente=Zé_Da_Silva Nota: eu geralmente uso a função Replace() para substituir espaços em branco na hora de mandar via QueryString, depois outro Replace no destino para voltar ao original. Eu prefiro chamar um Request.Form na Página Principal, que é muito mais seguro que Request.QueryString. A idéia é essa, boa sorte, cwbs
  8. Colegas, Uso o seguinte esquema para controlar os usuários que logam no site que desenvolvi: 1) Tenho a tabela 'tabLog' com os campos 'IdSessao', 'Nome', 'DataLogin', 'HoraLogin', 'DataLogout', 'HoraLogout'; 2) No momento do LOGIN, crio um ID aleatório (não quero usar o ID da Session) e gravo esse Id (campo 'IdSessao') mais o nome do usuário (campo 'Nome'), a data de login (campo 'DataLogin') e a hora de login (campo 'HoraLogin'). Os valores do ID aleatório e do nome do usuário eu jogo tudo em variáveis Session, para usar depois. 3) Se o usuário sair da área restrita (clicando em outro link que não seja restrito, por exemplo), disparo uma rotina de logout gravando a data de logout (campo 'DataLogout') e a hora de logout (campo 'HoraLogout') para o nome do usuário e seu ID aleatório. 4) Se o usuário fechar o browser, o evento 'onunload' (que nesse caso coloquei no 'frameset') dispara um javascript que por sua vez chama a mesma rotina de logout, através de uma janela onde eu só coloco tipo "obrigado pela sua visita" e mais o logo da empresa (a janela só serve pra rodar o script). Tudo funciona perfeitamente, isso se o usuário logar, navegar e sair ANTES DA SESSÃO EXPIRAR!!! ESSE é o PRB!!! Se a sessão expira, eu não consigo gravar o logout! Já tentei colocar rotina no evento Session_OnEnd do global.asa e não funciona!!! No momento, estou usando um truque para, quando eu abro o relatório de acessos, eu gravo "expirado" nos campos de logout de usuários que tenham logado há mais de um dia (estou calculando que niguém "normal" ficaria mais de 24 horas no mesmo site, só se o cara morrer na frente do micro...), mas eu não quero continuar usando esse truque. Alguém tem alguma idéia, sobre como gravar o logout se a sessão expirar??? Thank you all!!! cwbs
×
×
  • Criar Novo...