Ir para conteúdo

POWERED BY:

Arquivado

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

shumi

Global.asa

Recommended Posts

Fala Galera tudo bem?

Demorei um pouco para fazer o artigo, porém tive uns problemas pessoais, mas estou voltando a comunidade.

 

Vou mostrar como funciona o Global.asa para controlar o sucesso de aplicações e sessão.

O arquivo global.asa é onde você declara objetos, variáveis e gerenciadores de eventos, através de algumas rotinas que veremos nesse artigo.

Pode existir apenas um arquivo global.asa por diretório virtual ou por aplicação.

Suponha que tenhamos uma aplicação de cadastro no diretório virtual /cadastro, você poderá ter somente um arquivo global.asa no diretório virtual e ele terá que ficar na raiz do diretório “cadastroâ€. Se tiver um segundo global.asa em qualquer subdiretório de “cadastro†ele será ignorado pela dll Global.asa.

O global.asa tem a seguinte sintaxe:

<script LANGUAGE=VBScript RUNAT=server> sub application_onStart()   Código da rotina de evento.end sub sub application_onEnd()   Código da rotina de evento.end sub sub session_onStart()   Código da rotina de evento. end sub sub session_onEnd()   Código da rotina de evento.end sub </SCRIPT>
Qualquer script que não esteja dentro da tag <script> resultará em um erro.

 

Aplicação(Application)

 

O conjunto de páginas ASP dentro de um mesmo diretório virtual damos o nome de aplicação ASP.

A Aplicação será iniciada a partir do momento que o usuário acessar qualquer página ASP dentro dessa aplicação.

E Será finalizada quando o servidor web for desligado.

 

O objeto Application existe para nos possibilitar o armazenamento e recuperação de valores relacionadas a uma aplicação ASP. Com ele podemos criar variáveis de qualquer subtipo cujo valor pode ser acessado ou modificado por qualquer usuário conectado ao diretório virtual.

 

Para criar uma variável do nível de aplicação, devemos escrever comandos com seguinte sitaxe:

Application("NOME_DA_APLICACAO") = VALOR_DA_ APLICACAO
Uma vez criada, essa variável estará acessível a qualquer usuário da aplicação. O Valor ficará armazenado até o momento que o servidor seja desligado.

Como esse valor pode ser modificado por qualquer usuário conectado à aplicação, poderia ter alguma confusão se mais usuários alterasse o valor ao mesmo tempo. Para isso temos os métodos lock e unlock do objeto application, para evitar que isso ocorra.

 

O lock bloqueia as variáveis de nível de aplicação para o usuário que invoca tal método. Se qualquer outro “usuário tentar acessar variáveis desse nível, ficará esperando até a aplicação ser desbloqueada.

 

A aplicação só será desbloqueada quando o script que a bloqueou termina sua execução, ou quando ocorre o “TimeOutâ€, ou quando o script invoca o método unlock.

Também temos dois eventos para esse objeto.

 

Application_OnStart – Funciona quando aplicação é iniciada(quando um diretório virtual é acessado pela primeira vez.)

Application_OnEnd - Funciona quando a aplicação é finalizada(quando o servidor web é desligado).

 

O evento nada mais é que uma subrotina chamada automática quando o sistema sofre alguma ação as subrotinas não serão escritas nas páginas asp de sua aplicação, mas sim em um arquivo clamado de GLOBAL.ASA.

 

Toda vez que um uma aplicação foi acessada pela primeira vez o Web Server ou servidor Web procura se existe o global.asa se encontra ele procura a subrotina Application_OnStart e executa seus comandos e quando o Server é desligado ele procura a subrotina Application_OnEnd.

 

Vou seguir um exemplo adotado por muitos para mostrar como isso funciona:

<script LANGUAGE=VBSCRIPT RUNAT=SERVER>Sub Application_OnStart()   Application("DataHora")=Now  Application("forum")="iMasters"Application("url")="http://forum.imasters.com.br" End Sub</SCRIPT>
pagina_aplicacao.asp

 

<% @LANGUAGE=VBSCRIPT %><HTML><HEAD><TITLE><%=Application("forum")%></TITLE></HEAD><BODY>Essa aplicação ASP foi iniciada em <B><%=Application("DataHora ")%></B><BR><A Href="<%=Application("url")%>">iMasters</a></BODY></HTML>
Com o global.asa o trabalho de manutenção facititará muito, imagine todas as páginas de sua aplicação com a mesma configuração de topo, com as mesmas cores e etc...

Você utilizará um arquivo global.asa e nesse arquivo colocará todas as informações necessárias. Assim quando mudar algo, ao invés de mudar todas as páginas da sua aplicação, mudará somente a global.asa

 

Isso pode ajudar muito quem faz um sistema para vender, por exemplo, ele cria uma aplicação com um arquivo global e modifica esse arquivo para cada cliente.

 

Seção (Session)

 

Toda vez que um usuário acessa a aplicação é iniciado uma seção no servidor web.

Para isso o ASP tem um objeto chamado session.

 

Esse objeto é bem parecido com o aplication, mas a diferença é que a session é ligado a um usuário da sua aplicação, ou seja cada usuário possui suas informações gravadas apenas para ele próprio(dono da session).

Sintaxe

 

session(“nome_da_sessionâ€) = valor_da_session

 

A seção ficará ativa até a o usuário ou fechar o browser, quando ocorre o “TIMEOUT†da sessão, ou quando o script invoca o método ABANDON do objeto Session.

 

O TIMEOUT ocorre quando o usuário fica parado por um tempo na página.

Isso pode ser definido em minutos assim:

Session.Timeout = VALOR_MINUTOS
Porém se você não definir nada vai assumir o seu default que é de vinte minutos.

 

Existe também dois eventos para esse objeto, são eles:

Ainda relacionado a esse objeto existem dois eventos:

 

- Session_OnStart sessão é iniciada

- Session_OnEnd sessão é finalizada.

 

Os eventos do objeto Application, também podem escrever em subretinas de um global.asa.

 

Exemplo:

<script LANGUAGE=VBSCRIPT RUNAT=SERVER>Sub Application_OnStart()  Application("DataHora")=Now  Application("title_imasters")="Global.asa"  Application("usuarios")=0End SubSub Session_OnStart()	 Application("usuarios")=Application("usuarios")+1  	Session("quando")=TimeEnd Sub</SCRIPT>
o Script acima fará um contador de acessos e será encerrado com o método abandon.

 

contador_secao.asp:

<% @LANGUAGE=VBSCRIPT %><HTML><HEAD><TITLE>iMasters - Shumi</TITLE></HEAD>Você está no iMasters essa seção deu início às: <%=Session("quando")%><BR>Você é o usuário: <%=Session("usuarios")%><BR>Abrimos o site: <%=Application("DataHora")%><HR><A HREF="sair.asp">sair</A></BODY></HTML>
o sair.asp você usará o método abandon assim:

 

sair.asp:

<%		session.abandon		response.Write("<div id=""minhaLayer"" class=""menu_txt"" style=""top:0px; left:0px; width:250px; height:50px; text-align:center"">")		response.Write("<strong><br>Você saiu da área restrita! Aguarde...</strong><br><br>")		response.Write("</div>")		Response.AddHeader "Refresh", "2;URL=index.asp"%>

Essa demorou para sair, por problemas pessoais, mas prometo que as próximas serão mais rápidas.

Sugestões, criticas e comentários são bem-vindos!

Abraços e até a próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma pequena duvida: se eu não usar o session.abandon, o servidor nao vai saber que o cara fecho a session ou basta fechar o browser que ele intende como fim de session??se ele nao entender, teria como colocar algo tipo: se o cara nao mecher em nada em 20 minutos intao session.abandon ??e desculpa estar enchendo TANTO seu saco hoje com duvidas!! =p

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi sua duvida é só usar como o shumi passou no tuto

O TIMEOUT ocorre quando o usuário fica parado por um tempo na página.Isso pode ser definido em minutos assim:

Com isso você definirá que se a página não for executada em X minutos a sessão expira e terá que reinicia-la

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh eu nao expressei a fundo minha ideia =p

isso eu entendi, mas a minha ideia eh fazer um contador de usuarios online, intao keria saber se botando:

Sub Application_OnStart()  Application("usuarios")=0End SubSub Session_OnStart()	Application("usuarios")=Application("usuarios")+1  End SubSub session_onEnd()	Session.abandonend sub

vai bastar para que caso o usuario feche o browser, ele nao seja mais contado como usuario online?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, esse é um contador de acessos e não de usuários online. Para usuários Online você deve retirar 1 no session_onEnd.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala shumi!

 

Mto bom!

 

Claro, conciso e confiável com diria um instrutor de "requisitos" que tive.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara legal isso ... Bom preciso fazer que o meu sistema avise o usuário caso alguém esteja logado com a sua senha, estava tentando fazer com banco de dados, qd o usuário logava alterava o valor de um campo para 1, e qd ele deslogasse alterava para 0 ... Mas o problema é exatamente qd a sessão expira ou qd o usuário deslique o computador, pelo o q eu estava lendo e pela dica do hargon devo usar Application, nesse caso axo q o método lock mas ñ sei como fazer o q preciso. Espero q aki enconte uma solucão Abraçossss

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.