Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema Session OnEnd

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203

    Problema Session OnEnd

    Ciao a tutti (lavoro in locale SO win 2000 pro),
    devo fare una gestione ecommerce e mano a mano che uno sceglie cosa acquistare salvo i dati in una tabella con il campi sessionID che identifica l'utente. Ora se uno non continua nell'acquisto e chiude il browser questi dati salvati li voglio cancellare perchè non servono più.

    Ho messo nel global.asa nella wooroot questo codice:

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

    Sub Application_OnStart
    Application("s_id") = session.sessionID
    End Sub


    Sub Session_OnStart
    Session("")
    End Sub

    Sub Session_OnEnd

    'cacello il contenuto della tabella tbcarrello per le sessionID che non sono state confermate
    conn=server.createobject("ADODB.CONNECTION")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("progetto/db.mdb")

    &";"

    set rsb=server.createobject("ADODB.RECORDSET")
    rsb.open "SELECT id FROM tbcarrello WHERE s_id="& Application("s_id") &"",conn,1,3

    if rsb.recordcount > 0 then
    sqlDELETE="DELETE * FROM tbcarrello WHERE s_id="& Application("s_id") &""
    conn.execute(sqlDELETE)
    end if

    rsb.close
    set rsb=nothing
    conn_bergomi.close
    set conn_bergomi=nothing
    '-----------------------------

    End Sub
    </SCRIPT>


    però non funziona l'evento Session_OnEnd. non cancella i record...

    Sbaglio qualcosa?? Se no che alternativa usate voi? Preferirei non usarlo il global.asa...

    Grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203
    scusate è questo il global.asa senza session_onstart:

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

    Sub Application_OnStart
    Application("s_id") = session.sessionID
    End Sub

    Sub Session_OnEnd

    'cacello il contenuto della tabella tbcarrello per le sessionID che non sono state confermate
    conn=server.createobject("ADODB.CONNECTION")
    conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("progetto/db.mdb")

    &";"

    set rsb=server.createobject("ADODB.RECORDSET")
    rsb.open "SELECT id FROM tbcarrello WHERE s_id="& Application("s_id") &"",conn,1,3

    if rsb.recordcount > 0 then
    sqlDELETE="DELETE * FROM tbcarrello WHERE s_id="& Application("s_id") &""
    conn.execute(sqlDELETE)
    end if

    rsb.close
    set rsb=nothing
    conn_bergomi.close
    set conn_bergomi=nothing
    '-----------------------------

    End Sub
    </SCRIPT>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203
    anche in fondo è corretto...

    lo so che vedete conn e poi conn_bergomi.close

    ma è giusto nel global.asa

  4. #4
    nel session_onend non si possomno eseguire operazioni in scrittura

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203
    ...come no...e come faccio allora???

  6. #6
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    le operazioni di scrittura si possono fare benissimo; solamente nel session_onend non si può usare il server.mappath. devi mettere il percorso fisico al database: ad es: "C:\Inetpub\www\db\tuodb.mdb"
    Tutti vogliono parlare, nessuno sa ascoltare.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203
    allora ho messo il percorso fisico del db come mi hai detto ma non cambia niente...non cancella i record "temporanei"...perchè? cosa devo fare? Ma dovrebbe cancellarli nel momento in cui chiudo la finestra del browser?

  8. #8
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    se il codice è corretto, lo esegue non alla chiusura del browser, ma alla scadenza della sessione, che avviene quando si innesca il timeout (di default 20 minuti dopo)
    Tutti vogliono parlare, nessuno sa ascoltare.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    203
    il codice è corretto ma non esegue niente anche dopo 20 minuti...

    ho cercato un po' in giro e ho trovato che si potrebbe utilizze l'evento OnUnload nel <body>, ma il problema è che questo evento viene richiamato non solo quando si chiude la pagina ma che se si cambia pagina...quindi non va bene...

    Cosa mi consigli???

  10. #10
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    fai una prova per volta.

    crea una pagina "prova.asp" con dentro il codice per eseguire una scrittura fissa sul db.

    poi nel global.asa metti nel session_onend una istruzione

    server.execute "prova.asp"

    e vedi se la esegue

    poi aggiusti la pagina prova.asp con i parametri che ti servono
    Tutti vogliono parlare, nessuno sa ascoltare.

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.