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

    Problemi con la Scadenza delle pagine

    Ciao ragazzi, vi chiedo un aiutino...

    Sto lavorando su una singola pagina fatta a "blocchi".

    I blocchi sono 2 che chiamerò BLOCCO 1 e BLOCCO 2.

    La prima volta che accedo alla pagina setto una variabile Posto = 1 in sessione.

    Accedo al BLOCCO 1 (Il BLOCCO 2 non è visibile).

    Dal BLOCCO 1 l'utente compila una form.

    All'invio della form setto Posto = 2 nella sessione.

    La form viene spedita sulla stessa pagina.

    Si accede al BLOCCO 2 (Il BLOCCO 1 non è più visibile).

    Nel BLOCCO 2 vengono visualizzati i dati raccolti dal form.


    Fino a qua tutto bene.
    Il problema mi si presenta al momento che l'utente va indietro con il tasto del browser (visualizza ancora il BLOCCO 1) e quindi ricompila e invia la form.

    Vorrei forzare la scadenza della pagina per evitare la "rivisualizzazione" del BLOCCO 1 (ed credo di avere usato quanto necessario) ma ciò non impedisce che l'utente possa andare indietro.
    Sicuramente qualcosa mi sfugge. Potete aiutarmi?


    Ecco il codice della pagina:

    ________________ ProvaScadenza.asp _________________________

    <%@ Language=VBScript %>
    <% '*********GESTIONE DELLA CACHE*********
    response.expires = -1500
    response.AddHeader "PRAGMA", "NO-CACHE"
    response.CacheControl = "PRIVATE"
    '************************************** %>

    <% ' TUTTE LE OPERAZIONI VENGONO ESEGUITE SULLA STESSA PAGINA.
    'SE "POSTO" NELLA SESSIONE E' VUOTA LA IMPOSTO A 1
    If isNull(Session("Posto")) OR Session("Posto") = 0 Then
    Session("Posto") = 1
    End If
    %>
    <% 'NEL SECONDO PASSAGGIO SULLA PAGINA VERIFICO SE SONO PASSATI
    'I DATI DEL FORM. SE SI, SETTO "POSTO" NELLA SESSIONE A 2
    If Request.Form("dato1") <> "" Then
    Session("Posto") = 2
    End If
    %>
    <html>
    <head><title>ProvaScadenza</title></head>
    <body bgcolor="#ffffff">
    Tutte le operazioni sono eseguite all'interno di questa
    stessa pagina (provaScadenza.asp)

    <% 'INIZIO BLOCCO 1
    If Session("Posto") = 1 Then %>
    Sono al BLOCCO 1.

    Session("Posto") = <%=Session("Posto")%>
    <form name="frm" method="post" action="ProvaScadenza.asp">
    <input size="10" name="dato1" value="">
    <input type="submit" value="Invia">
    </form>
    <% End If 'FINE BLOCCO 1 %>

    <% 'INIZIO BLOCCO 2
    If Session("Posto") = 2 Then %>
    Sono al BLOCCO 2.

    Session("Posto") = <%=Session("Posto")%>

    Dato 1 = <%=Request.Form("dato1")%>

    Dato 2 = <%=Request.Form("dato2")%>

    <% End If 'FINE BLOCCO 2 %>
    </body>
    </html>
    __________________________________________________ _________________

    Questa è la situazione. Ho provato a replicare il tutto lavorando su due pagine senza usare le sessioni ma il problema è sempre lo stesso.
    Qualcuno mi dice come fare? Intanto grazie per la pazienza!!!
    Barquisimeto: la capital musical de Venezuela.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non serve usare variabili di sessione.
    Usa un semplice campo hidden nella form.
    Se il valore di quel campo è nullo fai vedere il primo form, se vale qualcosa fai vedere il secondo.

    Roby

  3. #3
    Grazie Roby, faccio una prova... torno subito
    Barquisimeto: la capital musical de Venezuela.

  4. #4
    O.K. Senza l'uso delle sessioni ho valutato solo il passaggio dei dati dal form.


    La pagina è diventata:

    --------------------- ProvaScadenza.asp ----------------------
    <%@ Language=VBScript %>
    <% '*********GESTIONE DELLA CACHE*********
    response.expires = -1500
    response.AddHeader "PRAGMA", "NO-CACHE"
    response.CacheControl = "PRIVATE"
    '************************************** %>

    <% 'NEL SECONDO PASSAGGIO SULLA PAGINA VERIFICO SE SONO PASSATI
    'I DATI DEL FORM. SE SI, SETTO "POSTO" NELLA SESSIONE A 2
    If Request.Form("dato1") <> "" Then
    Blocco = 2
    Else
    Blocco = 1
    End If
    %>
    <html>
    <head><title>ProvaScadenza</title></head>
    <body bgcolor="#ffffff">
    Tutte le operazioni sono eseguite all'interno della
    stessa pagina (provaScadenza.asp)

    <% 'INIZIO BLOCCO 1
    If Blocco = 1 Then %>
    Sono al Blocco 1.

    <form name="frm" method="post" action="ProvaScadenza.asp">
    <input size="10" name="dato1" value="">
    <input type="submit" value="Invia">
    </form>
    <% End If 'FINE BLOCCO 1 %>

    <% 'INIZIO BLOCCO 2
    If Blocco = 2 Then %>
    Sono al Blocco 2.

    Dato 1 = <%=Request.Form("dato1")%>

    <% End If 'FINE BLOCCO 2 %>
    </body>
    </html>
    -----------------------------------------------------

    ma il risultato è sempre lo stesso. Quando torno indietro visualizzo
    di nuovo il BLOCCO 1...
    Ma a 'sto punto, a cosa mi servono i comandi response.expires... etc?
    Barquisimeto: la capital musical de Venezuela.

  5. #5
    Ma non è usando quelle famose tre righe che si forza la scadenza della pagina?
    Barquisimeto: la capital musical de Venezuela.

  6. #6
    Ragazzi, è un casino, ho rovistato mezzo web e provato diversi modi ma non riesco comunque a fare scadere questa pagina. Dov'è che sbaglio?
    Barquisimeto: la capital musical de Venezuela.

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma perché la vuoi far scadere?

    Roby

  8. #8
    Devo evitare che venga ricaricato il primo blocco.
    Tieni presente che la pagina reale ne contiene 4 o 5 di blocchi.
    In diversi blocchi ci sono degli invii di forms per cui la navigazione diventerebbe un caos se io facessi andare gli utenti avanti/indietro.
    Era per questo motivo che fissavo anche uno stato nella sessione. Almeno in parte mi ovviava il problema dei refresh da browser.
    Non so se mi spiego.

    P.S: Comunque, a livello teorico ho fatto tutto quello che è scritto su qualsiasi fonte ma non capisco perché non funziona.
    Barquisimeto: la capital musical de Venezuela.

  9. #9
    Forse è inutile.
    Su altre pagine ho trovato lo stesso codice, una riga in più ma il risultato è sempre lo stesso.

    Response.Expires = -1500
    Response.AddHeader "pragma", "no-cache"
    Response.AddHeader "cache-control", "private"
    Response.CacheControl = "private"

    Queste 4 righe collocate all'inizio della pagina dovrebbero ovviarmi il problema ma non cambiano niente.
    Ho provato a fare lo stesso giochino usando 2 pagine diverse ma anche qua, non è cambiato niente.

    ------------ provaScadenzaA.asp -------------

    <% '*********GESTIONE DELLA CACHE*********
    Response.Expires = -1500
    Response.AddHeader "pragma", "no-cache"
    Response.AddHeader "cache-control", "private"
    Response.CacheControl = "private"
    '************************************** %>
    <html>
    <head><title>ProvaScadenzaA</title></head>
    <body bgcolor="#ffffff">
    Sei in provaScadenzaA.asp

    Invia questi dati a provaScadenzaB.asp

    <form name="frm" method="post" action="ProvaScadenzaB.asp">
    <input size="10" name="dato1" value="">
    <input type="submit" value="Invia">
    </form>
    </body>
    </html>

    ----------------------------------------------



    -------------- provaScadenzaB.asp ------------
    <% '*********GESTIONE DELLA CACHE*********
    Response.Expires = -1500
    Response.AddHeader "pragma", "no-cache"
    Response.AddHeader "cache-control", "private"
    Response.CacheControl = "private"
    '************************************** %>

    <% 'VERIFICO SE SONO PASSATI I DATI DEL FORM.
    'SE IL FORM E' VUOTO RIMANDO A provaScadenzaA.asp
    If Request.Form("dato1") = "" Then
    Response.Redirect("provaScadenzaA.asp")
    End If
    %>
    <html>
    <head><title>ProvaScadenzaB</title></head>
    <body bgcolor="#ffffff">
    Sei in provaScadenzaB.asp

    Dato 1 = <%=Request.Form("dato1")%>
    </body>
    </html>
    --------------------------------------------


    - Spedisco la form che compilo in provaScadenzaA.asp
    - Leggo i dati del form in provaScadenzaB.asp
    - Click sul pulsante "Indietro" del browser e torno alla stessa provaScadenzaA.asp che ho appena lasciato.

    I controlli che dovrebbero servire per fare "espirare" la pagina si fanno benedire.

    Ma non solo, posso giocare facendo avanti/indietro con il pulsante del browser oppure con Alt+Freccina a destra o sinistra.

    Usando javascript presento la pagina senza i menu, senza i pulsanti, disattivo il click col tasto destro dentro la pagina ma sono sempre esposto all'ALT+freccine.
    Ma è possibile che quelle famose 3 righe non facciano niente?
    Barquisimeto: la capital musical de Venezuela.

  10. #10
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    credo che tu non possa fare quello che dici la pagina si trova cmq nella sua chace quindi se vuole puo vedersela come gli pare però se crei il session oppure usi dei cookies puoi controllare nel caso lui torni indietro e ti reinvi il form se lo ha già inviato e se quello è il caso non gli convalidi cioè che ha fatto e lo mandi all'ultimo blocco raggiunto se non sai com fare dimmelo che te lo spiego..
    cmq il response.expires è una cosa a livello di server cioè la pagina anche se viene riaggiornata viene cmq ricaricata all'interno del server in modo tale da non mostrare le informazione contenute nella chace del browser del client(non mostrarle se la pagina viene ricaricata non se viene premuto il tasto back)

    Rixx

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.