Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Rimuovere variabili di sessione

    Ho provato a creare una serie di variabili di sessione e poi rimuoverle con il metodo remove, ma ne rimuove solo alcune, qualcuno sa spiegarmi perchè?
    Questo è il codice, se provate ad eseguirlo noterete come la parte di rimozione cambia continuamente ad ogni refresh... forse ho qualche lacuna io :master:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <%
    Session("NewA") = "variabile A"
    Session("NewB") = "variabile B"
    Session("NewC") = "variabile C"
    Session("D") = "variabile D"
    For Each Item In Session.Contents
    	Response.Write(Item & " = " & Session(Item) & "
    ")
    Next
    For Each Item In Session.Contents
    	If Left(Item, 3) = "New" Then
    		Response.Write("Remove " & Item & "
    ")
    		Session.Contents.Remove(Item)
    	End If
    Next
    For Each Item In Session.Contents
    	Response.Write(Item & " = " & Session(Item) & "
    ")
    Next
    %>
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    il codice è scritto proprio per rimuoverne alcune... o ha sbagliato ad impostare d o hai smagliato il codice che le rimuove

  3. #3
    Il mio scopo è rimuovere solo quelle la cui chiave inizia per "New", ma se provate ad eseguire la pagine noterete che ad ogni refresh ne rimuove di diverse e cmq mai tutte e 3...
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  4. #4
    azz... è vero... curiosissimo... sto provando

  5. #5
    credo sia un bug... o forZe no

    penso... quando elimini una var di sessione quella che viene dopo scala di posto e vada a rimpiazzarla... però poi l'iteratore passa alla successiva... e, quindi, in pratica, la salta

    mi pare ne salti una per ogni eliminazione

  6. #6
    Originariamente inviato da cicciopie II
    credo sia un bug... o forZe no

    penso... quando elimini una var di sessione quella che viene dopo scala di posto e vada a rimpiazzarla... però poi l'iteratore passa alla successiva... e, quindi, in pratica, la salta

    mi pare ne salti una per ogni eliminazione
    se così fosse...

    codice:
    ...
    Dim bOne
    Do
       bOne=False
       For Each Item In Session.Contents
          If Left(Item, 3) = "New" Then
             Response.Write("Remove " & Item & "
    ")
             Session.Contents.Remove(Item)
             bOne=True
             Exit For
          End If
       Next
       If bOne=False Then Exit Do
    Loop
    ...

  7. #7
    Originariamente inviato da cicciopie II
    credo sia un bug... o forZe no

    penso... quando elimini una var di sessione quella che viene dopo scala di posto e vada a rimpiazzarla... però poi l'iteratore passa alla successiva... e, quindi, in pratica, la salta

    mi pare ne salti una per ogni eliminazione
    Scusate ho letto solo stamattina questa cosa ed è esattamente quello che succede ad occhio. Io pensavo di fare così, ditemi se ha senso.
    Ciclare per tutte le chiavi della sessione e concatenare una stringa con tutte le chiavi che voglio rimuovere. Trasformare la stringa in array e ciclarla facendo la rimozione di ogni chiave.
    Secondo voi è poco "elegante"?
    Provo a scrivere il codice così:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <%
    Session("NewA") = "variabile A"
    Session("NewB") = "variabile B"
    Session("NewC") = "variabile C"
    Session("D") = "variabile D"
    strKeys = ""
    For Each Item In Session.Contents
    	If Left(Item, 3) = "New" Then
    		strKeys = strKeys & Item & ", "
    	End If
    Next
    
    strKeys = Left(strKeys, Len(strKeys)-2)
    arrKeys = Split(strKeys, ", ")
    
    For Each Item In arrKeys
    	Session.Contents.Remove(Item)
    Next
    
    For Each Item In Session.Contents
    	Response.Write(Item & " = " & Session(Item) & "
    ")
    Next
    %>
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  8. #8
    hai provato il mio script?

  9. #9
    Si funzionano entrambi. Infatti la mia domanda era solo per capire quale dei due fosse più "elegante"
    Pippe mentali da programmatori? :master:
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  10. #10
    la tua è un po' più contorta, ma se funziona...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.