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

    Sessioni che strazio...

    Buon pomeriggio, mi sono accorto di avere questo problema.
    In pratica, l'utente per entrare in determinate aree(tipo la chat) deve effettuare la login, quando esce dalla suddetta, dovrebbe(uso il condizionale) cliccare sul link LOGOUT cosi da far scadere la sessione, cancellare tutti i riferimenti all'interno del file sess_.
    Ora il problema è che, se l'utente non fà cosi ed esce chiudendo semplicemente il browser la sessione resta attiva, con tutti i valori in essa settati.

    Domando:c'è una funzione che controlla se effettivamente la sessione è ancora attiva,cosi da poterla cancellare e con essa tutti i suoi valori?

    SPero di si...nel qual caso sapreste darmi un'indizio?
    Grazie mille...

  2. #2
    quanti problemi.... Se il settaggio usato e' quello di default ci sara' lato client la scadenza del cookie alla chiusura del browser e lato server il tempo previsto di inattivita'. Prossima connessione nuovo session_id()

    Se invece il browser non viene chiuso il cookie permane, ma e' sempre lo stesso user. Discorso diverso se il client effettua dei refresh oppure va a pagine precedenti pescando nella cache. Ma si tratta pur sempre dello stesso user.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220

    Re: Sessioni che strazio...

    Originariamente inviato da ANTAGONIA
    Domando:c'è una funzione che controlla se effettivamente la sessione è ancora attiva,cosi da poterla cancellare e con essa tutti i suoi valori?
    Al login setti un valore nell'array $_SESSION:

    Codice PHP:
    $_SESSION['verifica'] = "ok"
    per controllare poi se la sessione è ancora attiva basta che controlli quella variabile. Ad esempio se vedi che la sessione è ancora attiva e vuoi eliminarla puoi fare cosi:

    Codice PHP:
    if(isset($_SESSION['verifica']))
       
    $_SESSION = array(); 
    cosi sei sicuro di aver eliminato tutti i valori della sessione.


  4. #4
    grazie per avermi risposto, ma quando uno è "de coccio" o meglio che lascia o che persevera nella speranza di risolvere...

    Allora, su ogni pagina che necessita di avere una sessione la inizializzo cosi:
    codice:
    <? session_start();
    //per mantenere la sessione attiva faccio cosi:
    $nick = $_SESSION['nick'];
    $password = $_SESSION['password'];
    
    //per distruggere la sessione cosi:
    $_SESSION = array();
    session_unset();
    session_destroy();
    ?>
    adesso per fare quel controllo che mi dicevi, dove lo devo mettere?
    Avevo pensato nella default.php, in quanto all'apertura del sito, deve controllare se è presente ancora una sessione attiva.Giusto?
    ho fatto cosi come mi hai postato ma ho inserito la session_destroy();
    codice:
    <? session_start();
    $_SESSION['verifica'] = "ok";
    if(isset($_SESSION['verifica'])) 
       	$_SESSION = array();
                 session_unset();
                 session_destroy();
    ?>
    ma restituisce un'errore.....
    Comunque mi sono accorto che il file di sessione che creo in locale nella cartella temp, è sempre lo stesso, nel senso che se cambio nick e password, utilizzo sempre lo stesso file di sessione..Come è possibile una cosa del genere?

  5. #5
    Se vuoi che nella pagina di login venga resettato qualsiasi info gia' presente e' sufficiente che verifichi lo stato dell'array $_SESSION.

    esempio:

    codice:
    <?php
    session_start();
    
    if(!empty($_SESSION) ) {
    
    $_SESSION = array();
    
    }
    il fatto che venga utilizzato lo stesso session_id number e' assolutamente irrilevante. L'importante e' che sia eliminato il contenuto della sessione. Occhio nelle tue valutazioni a non leggere la cache del browser, altrimenti ti parra' sempre settato. Guarda dentro al file.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    ti ringrazio, comunque ho controllato la cache di internet explorer ma quando mi collego al sito on line(ovviamente) non mi crea nessun cookie.
    Devo settare io qualcosa per creare automaticamente il cookie o cosa?
    E poi, è necessario creare-attivare un cookie?

    Scusami per queste domande, ma non ho nessuno che mi sappia dare una risposta adeguata..

    PS: quando vado a fare il logout, faccio visualizzare un messaggio di arrivederci con il Nick dell'utente!!
    La cosa strana,per me, è che mi restituisce un'altro nick...ma come è possibile?

  7. #7
    i cookies di sessione con scadenza alla chiusura del browser "NON" vengono scritti su HD, percio' non li vedi (con explorer). Con qualche estensione in firefox li puoi leggere tranquillamente.

    Se ti restituisce un'altro nick e' evidente che hai qualche cazzabuffo nello script.

    Le sessioni di php sono di una semplicita' elementare, anche troppo, non per nulla viene di frequente consigliato le sessioni su db... mi pare anche che ci sia la possibilita' di salvare su SQLlite se non erro al posto dei file.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    grazie per il consiglio...sicuramente ho qualche cazzabuffo nello script, in quanto è la prima volta che utilizzo i txt a questo scopo...
    comunque ho scaricato da php.net la documentazione per sqlite, e poi ho preso le 4 mini lezioni qui su html.it!!

    Adesso vedo un pò che combino...grazie ancora!!

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.