Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

    sessione chiusura browser

    Salve a tutti,
    nelle mie pagine inizio la sessione con session_start();
    ho letto che la sessione dovrebbe essere "distrutta" automaticamente alla chiusura del browser, ma ho notato che ciò non avviene. Anche se chiudo e riapro la pagina, vedo che le variabili sono ancora registrate (con print_r($_SESSION).
    Come mai?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    anzi, scusate...
    sto provando a far scadere la sessione dopo 3 minuti. Sul manuale ho trovato questo:

    /* set the cache limiter to 'private' */

    session_cache_limiter('private');
    $cache_limiter = session_cache_limiter();

    /* set the cache expire to 3 minutes */
    session_cache_expire(3);
    $cache_expire = session_cache_expire();

    /* start the session */

    session_start();


    ma non funziona... dopo 3 minuti la sessione è ancora lì...
    come mai?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    nessuno?

  4. #4
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Ci sono delle direttive sul php.ini che controllano la durata delle sessioni. Le sessioni si avvalgono dei cookies per il loro funzionamento, quindi:

    ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0
    [ In questo caso devi riavviare Apache perchè le modifiche siano effettive ]

    se lo vuoi fare via script allora dovrebbe essere suff aggiungere questa riga:
    $session_time = 0; // alla chiusura del Browser il cookie viene eliminato


    ciao ^^
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  5. #5
    Originariamente inviato da mystica
    nessuno?
    Penso che tu confonda session_cache_limiter con session.cookie_lifetime. Il discorso cache riguarda il client, mentre mi pare tu ti riferisca ai dati di sessione (lato server).

    La chiusura del browser, e' diversa dalla chiusura di una pagina. Quindi aprire e chiudere una pagina non causa la cancellazione della sessione.

    Se non sei membro della sessione non puoi vedere il $_SESSION.

    Per quello che vuoi provare dovresti vedere

    session.cookie_lifetime specifica il tempo di vita insecondi del cookie che viene mandato al browser. Il valore 0 significa "fino a che il browser viene chiuso". Di default è 0.

    session.gc_maxlifetime specifica il numero di secondi dopo i quali i dati saranno considerati 'spazzatura' e cancellati.


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

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    si ecco!
    ma ditemi:
    session.gc_maxlifetime e $session_time = 0;
    li metto immediatamente dopo il session_start(); ?

    poi ho anche un altro problemino...
    dopo aver passato alcune variabili, vorrei disabilitare il refresh, in modo che l'utente non possa continuare ad aggiungere quelle variabili. Ho provato così:

    session_start();
    header ("location: http://localhost/paginaconivalori.php");
    die();

    ma ho notato che continua a inserire a loop, tanto che la pagina impiega diversi minuti per essere visualizzata...
    tra l'altro con un semplice invio mi ha memorizzato più di 10 mila "inserimenti"
    come mai?
    Grazie mille!

  7. #7
    Se ti rinvii la pagina e' ovvio che vai a raffica in loop fino a che morte per time-out non vi separi...... Un bel matrimonio...

    La definizione di session.cookie_lifetime e session.gc_maxlifetime viene fatta nel php.ini, non credo tu possa farla runtime.


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

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    e come posso evitare il refresh?
    ho provato anche a fare il redirect su un'altra pagina, per esempio nella pagina view.php ho messo:

    header ("location: http://localhost/index.php");
    die();

    e mi rimanda correttamente a index.php
    Il problema è che poi ogni volta che cerco di visualizzare view.php mi manda sempre all'index.php
    Come posso risolvere?

    Mi dici
    "La definizione di session.cookie_lifetime e session.gc_maxlifetime viene fatta nel php.ini"
    ok in locale, ma poi quando vado in remoto come si fa?
    Grazie ancora!

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    aiut

  10. #10
    Originariamente inviato da mystica
    Mi dici
    "La definizione di session.cookie_lifetime e session.gc_maxlifetime viene fatta nel php.ini"
    ok in locale, ma poi quando vado in remoto come si fa?
    Grazie ancora!
    Utilizzi quello che ha stabilito l'hoster. Almeno credo, visto che si tratta di un punto importante per la sicurezza. Dovresti leggere bene quali sono le azioni permesse runtime. Sinceramente non le conosco, non lavoro in Internet.

    e come posso evitare il refresh?
    ho provato anche a fare il redirect su un'altra pagina, per esempio nella pagina view.php ho messo:

    header ("location: http://localhost/index.php");
    die();

    e mi rimanda correttamente a index.php
    Il problema è che poi ogni volta che cerco di visualizzare view.php mi manda sempre all'index.php
    Come posso risolvere?
    QUi potrei solo darti indicazioni di massima. Se non invii output verso il browser puoi fare il redirect ad una pagina intermedia con header location, altrimenti con una istruzione javascript. Di solito utilizzandole sessioni trasferisco le risposte al browser alla pagina intermedia con $_SESSION..... ma molto dipende dalle cose che si devono fare....

    pag1 ---> il form
    pag2 ---> controllo, ok inserisce e manda alla pag3 con avviso di successo. NON OK manda alla pag3 con avviso di fallimento.
    pag3 ---> stampa gli avvisi e chiude con uno o piu' link alle pagine che vuoi.

    In pratica la pag2 non viene vista dal browser in quanto ad output. Semplicemente controlla ed esegue. Non puoi fare alcun refresh.

    Se ti serve posso mettere giu' qualche riga di esempio, si tratta di poche righe in fin dei conti....


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

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.