Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Global.asa e Utenti in linea ... non va!

    Un saluto a tutta la comunità!
    Uso questo codice, preso su internet, che funziona perfettamente in locale ma che online non va. Premetto che questo codice l'ho inserito nel global.asa della Conquerchat e che in un altro sito ha sempre funzionato.
    Il problema è che ogni volta che aggiorno la pagina o che cambio pagina mi aggiunge un utente in linea.
    Il conteggio degli utenti nella conquerchat invece funziona perfettamente.
    Ecco il codice:
    codice:
    </SCRIPT>
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart
    	'Imposta a 0 il numero di utenti quando parte il servizio server
    	Application("ActiveUsers") = 0
    End Sub
    
    Sub Session_OnStart
    	'5 minuti di timeout
    	Session.Timeout = 5
    	'Inizia la sessione
    	Session("Start") = Now
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Application.UnLock
    End Sub
    
    Sub Session_OnEnd
    	'Decremento il numero di utenti alla fine di ogni sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application.UnLock
    End Sub
    </SCRIPT>
    chiaramente nella pagina in cui voglio far apparire il numero di utenti online metto:
    codice:
    <%= Application("ActiveUsers") %>
    Da cosa può dipendere?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    </SCRIPT>
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">


    :master:

    Il global.asa dove lo hai posizionato?

    Roby

  3. #3
    Grazie per la risposta e ... scusa Robi ma ho copiato un pezzetto in più. il global.asa l'ho posizionato nella root del sito.
    Ti posto tutto il global.asa
    codice:
    <SCRIPT LANGUAGE=VBScript RUNAT=Server>
    Sub Application_OnStart
    	'==FrontPage Generated - startspan==
    	Dim FrontPage_UrlVars(0)
    	'--
    	Application("FrontPage_UrlVars") = FrontPage_UrlVars
    	'==FrontPage Generated - endspan==
    End Sub
    Sub Session_OnStart
    	FrontPage_StartSession '==FrontPage Generated==
    	FrontPage_ConvertFromODBC '==FrontPage Generated==
    End Sub
    Sub FrontPage_StartSession
    	On Error Resume Next
    	if Len(Application("FrontPage_VRoot")) > 0 then Exit Sub
    	
    	sFile = "global.asa"
    	sRootPath = Request.ServerVariables("APPL_PHYSICAL_PATH")
    	if Left(sRootPath,1) = "/" then sSep = "/" else sSep = "\"
    	if Right(sRootPath,1) <> sSep then sRootPath = sRootPath & sSep
    	sRootPath = sRootPath & sFile
    	
    	' discover the VRoot for the current page;
    	' walk back up VPath until we match VRoot
    	Vroot = Request.ServerVariables("PATH_INFO")
    	iCount = 0
    	do while Len(Vroot) > 1
    		idx = InStrRev(Vroot, "/")
    		if idx > 0 then
    			Vroot = Left(Vroot,idx)
    		else
    			' error; assume root web
    			Vroot = "/"
    		end if
    		if Server.MapPath(Vroot & sFile) = sRootPath then exit do
    		if Right(Vroot,1) = "/" then Vroot = Left(Vroot,Len(Vroot)-1)
    		iCount = iCount + 1
    		if iCount > 100 then
    			' error; assume root web
    			Vroot = "/"
    			exit do
    		end if
    	loop
    	' map all URL= attributes in _ConnectionString variables
    	Application.Lock
    	if Len(Application("FrontPage_VRoot")) = 0 then
    		Application("FrontPage_VRoot") = Vroot
    		UrlVarArray = Application("FrontPage_UrlVars")
    		for i = 0 to UBound(UrlVarArray)
    			if Len(UrlVarArray(i)) > 0 then FrontPage_MapUrl(UrlVarArray(i))
    		next
    	end if
    	Application.Unlock
    End Sub
    Sub FrontPage_MapUrl(AppVarName)
    	' convert URL attribute in conn string to absolute file location
    	strVal = Application(AppVarName)
    	strKey = "URL="
    	idxStart = InStr(strVal, strKey)
    	If idxStart = 0 Then Exit Sub
    	strBefore = Left(strVal, idxStart - 1)
    	idxStart = idxStart + Len(strKey)
    	idxEnd = InStr(idxStart, strVal, ";")
    	If idxEnd = 0 Then
    		strAfter = ""
    		strURL = Mid(strVal, idxStart)
    	Else
    		strAfter = ";" & Mid(strVal, idxEnd + 1)
    		strURL = Mid(strVal, idxStart, idxEnd - idxStart)
    	End If
    	strOut = strBefore & Server.MapPath(Application("FrontPage_VRoot") & strURL) & strAfter
    	Application(AppVarName) = strOut
    End Sub
    Sub FrontPage_ConvertFromODBC
    	On Error Resume Next
    	if Len(Application("ASP_OS")) > 0 then exit sub
    	str = "_ConnectionString"
    	slen = Len(str)
    	set oKnown = Server.CreateObject("Scripting.Dictionary")
    	oKnown.Add "DRIVER",""
    	oKnown.Add "DBQ",""
    	oKnown.Add "SERVER",""
    	oKnown.Add "DATABASE",""
    	oKnown.Add "UID",""
    	oKnown.Add "PWD",""
    	Application.Lock
    	For each item in Application.Contents
    		if UCase(Right(item,slen)) = UCase(str) then
    			sName = Left(item,Len(item)-slen)
    			sConn = Application(item)
    			if InStr(LCase(sConn),"provider=") < 1 and Len(Application(sName & "_ConnectionTimeout"))>0 then
    				sArr = Split(sConn,";")
    				set oDict = Server.CreateObject("Scripting.Dictionary")
    				bUnknown = False
    				for i = 0 to UBound(sArr)
    					s = sArr(i)
    					idx = InStr(s,"=")
    					sKey = UCase(Trim(Left(s,idx-1)))
    					sVal = Trim(Mid(s,idx+1))
    					oDict.Add sKey, sVal
    					if Not oKnown.Exists(sKey) then bUnknown = True
    				next
    				if bUnknown = False and oDict.Exists("DRIVER") then
    					sDrv = oDict.Item("DRIVER")
    					sNew = ""
    					if InStr(sDrv,"Microsoft Access") > 0 and oDict.Exists("DBQ") and not (oDict.Exists("UID") or oDict.Exists("PWD")) then
    						sNew = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & oDict.Item("DBQ")
    					elseif InStr(sDrv,"SQL Server") > 0 and oDict.Exists("SERVER") and oDict.Exists("DATABASE") then
    						sNew = "Provider=SQLOLEDB;Data Source=" & oDict("SERVER") & ";Initial Catalog=" & oDict("DATABASE")
    						if oDict.Exists("UID") then sNew = sNew & ";User ID=" & oDict("UID")
    						if oDict.Exists("PWD") then sNew = sNew & ";Password=" & oDict("PWD")
    					end if
    					if sNew <> "" then
    						Application(item) = sNew
    					end if
    				end if
    				set oDict = Nothing
    			end if
    		end if
    	Next
    	Application.Unlock
    	Set oKnown = Nothing
    End Sub
    
    </SCRIPT>
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart
    	'Imposta a 0 il numero di utenti quando parte il servizio server
    	Application("ActiveUsers") = 0
    End Sub
    
    Sub Session_OnStart
    	'5 minuti di timeout
    	Session.Timeout = 5
    	'Inizia la sessione
    	Session("Start") = Now
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Application.UnLock
    End Sub
    
    Sub Session_OnEnd
    	'Decremento il numero di utenti alla fine di ogni sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application.UnLock
    End Sub
    </SCRIPT>
    
    
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatUsers"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatRooms"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatMessages"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    
    
    <head><title>Impostazioni sito Web per pagine ASP</title></head>
    Il fatto è che, come dicevo, in locale funziona benissimo

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il global.asa non ha codice HTML all'interno.
    Inoltre sub session_onstart e sub application_onstart sono già presenti in cima al file... le hai ripetute.

    Roby

  5. #5
    Scusa ma non ho molta familiarità col global.asa.
    l'ho modificato così ma si comporta allo stesso modo:
    codice:
    <SCRIPT LANGUAGE=VBScript RUNAT=Server>
    Sub Application_OnStart
    	'==FrontPage Generated - startspan==
    	Dim FrontPage_UrlVars(0)
    	'--
    	Application("FrontPage_UrlVars") = FrontPage_UrlVars
    	'==FrontPage Generated - endspan==
    			'Imposta a 0 il numero di utenti quando parte il servizio server
    	Application("ActiveUsers") = 0
    
    End Sub
    Sub Session_OnStart
    	FrontPage_StartSession '==FrontPage Generated==
    	FrontPage_ConvertFromODBC '==FrontPage Generated==
    		'5 minuti di timeout
    	Session.Timeout = 5
    	'Inizia la sessione
    	Session("Start") = Now
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Application.UnLock
    
    
    End Sub
    
    Sub FrontPage_StartSession
    	On Error Resume Next
    	if Len(Application("FrontPage_VRoot")) > 0 then Exit Sub
    	
    	sFile = "global.asa"
    	sRootPath = Request.ServerVariables("APPL_PHYSICAL_PATH")
    	if Left(sRootPath,1) = "/" then sSep = "/" else sSep = "\"
    	if Right(sRootPath,1) <> sSep then sRootPath = sRootPath & sSep
    	sRootPath = sRootPath & sFile
    	
    	' discover the VRoot for the current page;
    	' walk back up VPath until we match VRoot
    	Vroot = Request.ServerVariables("PATH_INFO")
    	iCount = 0
    	do while Len(Vroot) > 1
    		idx = InStrRev(Vroot, "/")
    		if idx > 0 then
    			Vroot = Left(Vroot,idx)
    		else
    			' error; assume root web
    			Vroot = "/"
    		end if
    		if Server.MapPath(Vroot & sFile) = sRootPath then exit do
    		if Right(Vroot,1) = "/" then Vroot = Left(Vroot,Len(Vroot)-1)
    		iCount = iCount + 1
    		if iCount > 100 then
    			' error; assume root web
    			Vroot = "/"
    			exit do
    		end if
    	loop
    	' map all URL= attributes in _ConnectionString variables
    	Application.Lock
    	if Len(Application("FrontPage_VRoot")) = 0 then
    		Application("FrontPage_VRoot") = Vroot
    		UrlVarArray = Application("FrontPage_UrlVars")
    		for i = 0 to UBound(UrlVarArray)
    			if Len(UrlVarArray(i)) > 0 then FrontPage_MapUrl(UrlVarArray(i))
    		next
    	end if
    	Application.Unlock
    End Sub
    Sub FrontPage_MapUrl(AppVarName)
    	' convert URL attribute in conn string to absolute file location
    	strVal = Application(AppVarName)
    	strKey = "URL="
    	idxStart = InStr(strVal, strKey)
    	If idxStart = 0 Then Exit Sub
    	strBefore = Left(strVal, idxStart - 1)
    	idxStart = idxStart + Len(strKey)
    	idxEnd = InStr(idxStart, strVal, ";")
    	If idxEnd = 0 Then
    		strAfter = ""
    		strURL = Mid(strVal, idxStart)
    	Else
    		strAfter = ";" & Mid(strVal, idxEnd + 1)
    		strURL = Mid(strVal, idxStart, idxEnd - idxStart)
    	End If
    	strOut = strBefore & Server.MapPath(Application("FrontPage_VRoot") & strURL) & strAfter
    	Application(AppVarName) = strOut
    End Sub
    Sub FrontPage_ConvertFromODBC
    	On Error Resume Next
    	if Len(Application("ASP_OS")) > 0 then exit sub
    	str = "_ConnectionString"
    	slen = Len(str)
    	set oKnown = Server.CreateObject("Scripting.Dictionary")
    	oKnown.Add "DRIVER",""
    	oKnown.Add "DBQ",""
    	oKnown.Add "SERVER",""
    	oKnown.Add "DATABASE",""
    	oKnown.Add "UID",""
    	oKnown.Add "PWD",""
    	Application.Lock
    	For each item in Application.Contents
    		if UCase(Right(item,slen)) = UCase(str) then
    			sName = Left(item,Len(item)-slen)
    			sConn = Application(item)
    			if InStr(LCase(sConn),"provider=") < 1 and Len(Application(sName & "_ConnectionTimeout"))>0 then
    				sArr = Split(sConn,";")
    				set oDict = Server.CreateObject("Scripting.Dictionary")
    				bUnknown = False
    				for i = 0 to UBound(sArr)
    					s = sArr(i)
    					idx = InStr(s,"=")
    					sKey = UCase(Trim(Left(s,idx-1)))
    					sVal = Trim(Mid(s,idx+1))
    					oDict.Add sKey, sVal
    					if Not oKnown.Exists(sKey) then bUnknown = True
    				next
    				if bUnknown = False and oDict.Exists("DRIVER") then
    					sDrv = oDict.Item("DRIVER")
    					sNew = ""
    					if InStr(sDrv,"Microsoft Access") > 0 and oDict.Exists("DBQ") and not (oDict.Exists("UID") or oDict.Exists("PWD")) then
    						sNew = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & oDict.Item("DBQ")
    					elseif InStr(sDrv,"SQL Server") > 0 and oDict.Exists("SERVER") and oDict.Exists("DATABASE") then
    						sNew = "Provider=SQLOLEDB;Data Source=" & oDict("SERVER") & ";Initial Catalog=" & oDict("DATABASE")
    						if oDict.Exists("UID") then sNew = sNew & ";User ID=" & oDict("UID")
    						if oDict.Exists("PWD") then sNew = sNew & ";Password=" & oDict("PWD")
    					end if
    					if sNew <> "" then
    						Application(item) = sNew
    					end if
    				end if
    				set oDict = Nothing
    			end if
    		end if
    	Next
    	Application.Unlock
    	Set oKnown = Nothing
    End Sub
    
    
    Sub Session_OnEnd
    	'Decremento il numero di utenti alla fine di ogni sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application.UnLock
    End Sub
    </SCRIPT>
    
    
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatUsers"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatRooms"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    
    <OBJECT
    	RUNAT="Server"
    	SCOPE="Application" 
    	ID="conquerChatMessages"
    	PROGID="Scripting.Dictionary">
    </OBJECT>
    Puoi dirmi cosa sbaglio ancora?

  6. #6
    Ho provato ad usare online solo questo codice come global.asa
    codice:
    </SCRIPT>
    <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
    
    Sub Application_OnStart
    	'Imposta a 0 il numero di utenti quando parte il servizio server
    	Application("ActiveUsers") = 0
    End Sub
    
    Sub Session_OnStart
    	'5 minuti di timeout
    	Session.Timeout = 5
    	'Inizia la sessione
    	Session("Start") = Now
    	'Incremento il numero di utenti all'inizio di una nuova sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") + 1
    	Application.UnLock
    End Sub
    
    Sub Session_OnEnd
    	'Decremento il numero di utenti alla fine di ogni sessione
    	Application.Lock
    	Application("ActiveUsers") = Application("ActiveUsers") - 1
    	Application.UnLock
    End Sub
    </SCRIPT>
    Ma mi dà lo stesso problema: in locale funziona e online aumenta il numero dei visitatori di uno ogni volta che aggiorno o che cambio pagina.

    Perchè? Dipende forse da Aruba?

  7. #7
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    codice:
    <script LANGUAGE="VBScript" RUNAT="Server"> 
    
    Sub Application_OnStart
       Application("ActiveUsers") = 0
       Application.unlock 
    End Sub 
     
    Sub Application_OnEnd 
    End Sub
    
    Sub Session_OnStart 
       Session("start") = Now
       session.timeout = 10
       Application.lock 
       Application("ActiveUsers") = Application("ActiveUsers") + 1
       Application.unlock 
    End Sub 
    
    Sub Session_OnEnd
       Application.lock
       Application("ActiveUsers") = Application("ActiveUsers") - 1
       Application.UnLock
    End Sub 
    
    </script>
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  8. #8
    Purtroppo non è cambiato niente, ad ogni refresh aumenta il numero degli utenti online di 1. Comincio a disperare!
    Grazie comunque per l'interessamento, sei sempre supergentile.

  9. #9
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Molto strano...

    questo è semplificato al massimo, provato su un server win 2000 al refresh della pagina gli utenti connessi non si incrementano:

    codice:
    <SCRIPT language="VBScript" Runat="Server"> 
    
    Sub Application_OnStart
      Application("intActiveUserNumber") = 0
      Application.unlock
    End Sub
    
    Sub Application_OnEnd 
    End Sub
    
    Sub Session_OnStart 
    Session.Timeout = 2 
    Application.Lock 
    Application("intActiveUserNumber") = (Application("intActiveUserNumber") + 1 )
    Application.UnLock 
    End Sub 
    
    Sub Session_OnEnd 
    Application.Lock 
    Application("intActiveUserNumber") = (Application("intActiveUserNumber") - 1)
    Application.UnLock 
    End Sub 
    
    </SCRIPT>
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  10. #10
    Con quest'ultimo mi da addirittura accesso negato e un errore alla riga di connessione al database con conseguente non accessibilità al sito.
    Ne conosci per caso 1 che non fa uso di global.asa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.