100 messaggi dal 14 settembre 2001
Ciao a tutti,

ho il seguente problema:

in ogni pagina di un sito controllo se una variabile di sessione settata inizialmente esiste. In caso negativo faccio apparire un messaggio che la sessione è scaduta. Tutto ciò funziona fintanto che non introduco il file global.asa. A questo punto, anche se mi scade la sessione, non mi fa piu' partire la pagina con il messaggio di sessione scaduta. Nel global.asa ci sono solo un paio di subroutine, una per Session.onStart e una per Application.OnStart.

Perchè succede ciò?

Grazie per ogni eventuale suggerimento.

Ciao
Massi
è strano, cosa fai in queste due sub?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
100 messaggi dal 14 settembre 2001
Ciao,

nelle due sub del global.asa imposto un sistema per cancellare automaticamente dal database i record 'vecchi' di due giorni rispetto alla data corrente. Questa operazione viene eseguita quando inizia la prima sessione della giornata.

Di seguito il codice del global.asa:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart
Application.Lock
Application("DateClear")=Date()
Application.UnLock
End Sub


Sub Session_OnStart

'imposta cookies e variabili di sessione necessari
Response.Cookies("UtenteID")=Session.sessionid
Response.Cookies("UtenteID").Expires = Date()+ 1000

Response.Cookies("TipoUtente")="visitatore"
Response.Cookies("TipoUtente").Expires = Date()+ 1000

Session("SessioneAttiva") = True


if DateDiff("d",Application("DateClear"),Date())>=1 then

'esegue la cancellazione dal database
MM_Con_negozio_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Lavoro\Sitidarealizzare\overdev\negozio abbigliamento\temp\database\dbnegozio.mdb;"

'Apro la connessione
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open MM_Con_negozio_STRING

'cancella dal carrello
sql="DELETE * FROM Carrello WHERE CarrelloData < #" & DateAdd("d",-1,Date) & "#"

'esegue il comando
Set MM_insertCmd = Server.CreateObject("ADODB.Command")
MM_insertCmd.ActiveConnection = Con
MM_insertCmd.CommandText = sql
MM_insertCmd.Execute

'Chiudo la connessione
Con.Close
set Con=Nothing

'aggiorna i dati per mantenere lo status della cancellazione

Application.Lock
Application("DateClear")=Date()
Application.UnLock

end if

End Sub

</SCRIPT>


Grazie per ogni suggerimento

Ciao
Massimiliano
mi pare che c'entri poco, a meno che non vai a cancellare anche altri record e quindi la tua applicazione non funziona per questo motivo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
100 messaggi dal 14 settembre 2001
...si, infatti sembra anche a me che il global.asa non influenzi la verifica delle variabili di sessione eppure, di fatto, cancellandolo il controllo sulla scadenza delle variabili di sessione mi funziona.

Comunque quando scade la sessione mettendo il global.asa non mi da errori, quindi lo manterrò. Mi sarebbe però piaciuto segnalare la fine della sessione.

Grazie

Ciao
Massimiliano
100 messaggi dal 14 settembre 2001
...forse ho capito perchè non mi funziona il controllo sulle variabili di sessione mettendo il global.asa!

Quando la sessione scade prima di caricare la pagina esegue le subroutine associate agli eventi Session_OnEnd e Session_onStart. Poichè nella subroutine Session_onStart reimposto le variabili di sessione quando la pagina viene ricaricata e verifica la variabile di sessione non troverà mai che è scaduta perchè è appena stata ripristinata nella subroutine Session_onStart. Quindi l'unica soluzione, mantenendo il global.asa, sarebbe gestire il controllo nella subroutine Session_onEnd ma come posso visualizzare un messaggio all'utente in questa subroutine?

Grazie per ogni eventuale suggerimento

Ciao e buona giornata
Massimiliano
quando si verifica la session_OnEnd, probabilmente il browser è da tutt'altra parte (avviene 20 minuti dopo l'ultima richiesta, dunque non è contestuale all'invio di una pagina).

la soluzione potrebbe essere settare il cookie nella session_onstart e aggiungerci il timeout di volta in volta.
in questo modo sposti il controllo sul cookie che sopravvive alla sessioni.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
100 messaggi dal 14 settembre 2001
Si, in effetti ho usato i cookies. L'errore però è che li ripristinavo ogni volta che la sessione iniziava. Ora proverò invece a mantenerli oltre la sessione e ripristinarli solo se i cookies sono scaduti (non quando la sessione scade).

Grazie

Ciao
Massimiliano

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.