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

    [freephp] far scadere la sessione alla chiusura del browser

    Questo è lo script di riferimento: http://freephp.html.it/articoli/view...olo.asp?id=132

    per motivi di sicurezza, mi piacerebbe modificare lo script in modo che la sessione rimanga aperta finché il browser resta aperto, e che scada solo alla chiusura del browser (a meno che ovviamente non si invochi la funzione di logout).
    Il problema è che non so da che parte rifarmi Qualcuno potrebbe darmi una mano?
    Amministratore mozillaitalia.org

    Le truppe sono state spiegate, ma chi sa perché io continuo a non capirle.

  2. #2

    Re: [freephp] far scadere la sessione alla chiusura del browser

    Originariamente inviato da iacchi
    Questo è lo script di riferimento: http://freephp.html.it/articoli/view...olo.asp?id=132

    per motivi di sicurezza, mi piacerebbe modificare lo script in modo che la sessione rimanga aperta finché il browser resta aperto, e che scada solo alla chiusura del browser (a meno che ovviamente non si invochi la funzione di logout).
    Il problema è che non so da che parte rifarmi Qualcuno potrebbe darmi una mano?
    Il fatto è che non si può sapere a priori quando il browser viene chiuso. O meglio, ogni volta che dal browser viene chiesta una pagina (dimamica o statica che sia), la connessione viene chiusa quando la pagina (o il risultato della pagina) è stata scaricata.

    Di conseguenza la cosa non è possibile implicitamente.

    Io ho risolto il problema in maniera esplicita: tramite javascript apro una finestra di pop-up quando viene chiuso il browser (tramite l'evento onunload del body).
    Tale pagina contenuta nella finestra di pop-up è un modulo php che gestisce la disconnessione (logout). Lo stesso pop-up si chiude automaticamente dopo la disconnessione.
    In pratica quando viene chiuso il browser (o cambiato link dalla barra degli indirizzi) per un istante si apre un pop-up vuoto.

    Se avete altre idee (tipo pop-up nascosti o altro) fatemi sapere

  3. #3
    L'idea potrebbe essere buona. Potresti darmi il codice? Spiego anche meglio il problema: quello script è installato nelle pagine di amministrazione di un portale. Quindi: se non proprio alla chiusura del browser (visto che in effetti è difficile che un cookie sappia quando il browser si chiude), mi servirebbe almeno che la sessione scada quando si esce dall'area di amministrazione del sito. Un po' come avviene nei forum phpBB quando non si spunta la casella per permettere al forum il login automatico.
    Amministratore mozillaitalia.org

    Le truppe sono state spiegate, ma chi sa perché io continuo a non capirle.

  4. #4
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Veramente esiste un parametro dei cookie che rappresenta la loro vita. Se questo parametro è impostato a zero, il cookie muore automaticamente alla chiusura del browser.
    Tra l'altro l'impostazione di default dovrebbe essere quella.
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  5. #5
    quindi come faccio? Se ci ho capito almeno qualcosina la parte di codice che crea il cookie è questa:

    codice:
    case AUTH_USE_COOKIE:
     header("Refresh: 2;URL=index.php");
     setcookie('uid', $uid, time()+3600*365);
    e qui che ci dovrei mettere?
    Amministratore mozillaitalia.org

    Le truppe sono state spiegate, ma chi sa perché io continuo a non capirle.

  6. #6
    Originariamente inviato da chris
    Veramente esiste un parametro dei cookie che rappresenta la loro vita. Se questo parametro è impostato a zero, il cookie muore automaticamente alla chiusura del browser.
    Tra l'altro l'impostazione di default dovrebbe essere quella.
    Cioè quando il browser viene chiuso, viene inviato un messaggio al server? Sei sicuro? A me pare strano davvero, i browser sono tutti diversi tra loro, e se pure inviano qualcosa al server, come fanno a sapere come quale, e dove mandare il messaggio?
    Quando una pagina php è stata scaricata, la connessione al server è persa, in quanto il processamento dello script php si è concluso all'invio dei dati al client.

    Per quello che so quando il parametro è settato a zero, il cookie viene chiuso automaticamente dopo un time-limit.

    In ogni caso se sei sicuro mi mandi un esempio?


    p.s. per iacchi, l'idea è semplice, ho fatto così: la prima pagina ha due frame, di cui uno invisibile:

    index.php

    codice:
    <frameset rows="0,*" onUnload="window.open('logout.php','chk');" frameborder="no">
     <frame name="nascosto" src="about:blank">
     <frame name="visibile" src="index2.php">
    </frameset><noframes></noframes>
    index2.php è la reale pagina iniziale, mentre il frame superiore è vuoto. Quando viene chiusa la vinestra, si apre il pop-up logout.php, che gestisce il logout.

  7. #7
    quindi in questo caso servono necessariamente i frame?
    Amministratore mozillaitalia.org

    Le truppe sono state spiegate, ma chi sa perché io continuo a non capirle.

  8. #8
    Guardate che ha ragione chris.
    Il parametro e' session.cookie_lifetime
    e se guardate il manuale php c'e' scritto che
    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.
    Per cui se il comportamento non corrisponde, controllate le impostazioni del webserver con phpinfo()...

    Aloha
    <<E' una decisione molto importante. Pensaci bene, Ataru!>>
    <<STOLTO! Non lo sai che io AGISCO SEMPRE PRIMA DI PENSARE???>>

  9. #9
    io ci credo. Mi basta sapere che codice mettere nel programma
    Amministratore mozillaitalia.org

    Le truppe sono state spiegate, ma chi sa perché io continuo a non capirle.

  10. #10
    1. Crea una nuova pagina info.php che riempirai con il codice che segue:

    codice:
    <?php phpinfo(); ?>
    Apri la pagina dal browser e controlla le impostazioni alla voce session, dovrebbero coincidere a quelle che seguono:

    session.auto_start Off Off
    session.bug_compat_42 Off Off
    session.bug_compat_warn On On
    session.cache_expire 180 180
    session.cache_limiter nocache nocache
    session.cookie_domain no value no value
    session.cookie_lifetime 0 0
    session.cookie_path / /
    session.cookie_secure Off Off
    session.entropy_file no value no value
    session.entropy_length 0 0
    session.gc_divisor 1000 1000
    session.gc_maxlifetime 1440 1440
    session.gc_probability 1 1
    session.name PHPSESSID PHPSESSID
    session.referer_check no value no value
    session.save_handler files files
    session.save_path no value no value
    session.serialize_handler php php
    session.use_cookies On On
    session.use_only_cookies Off Off
    session.use_trans_sid Off Off

    in particolare occhio alle impostazioni dei parametri:
    session.use_cookies
    session.use_only_cookies
    session.cookie_lifetime
    session.cache_expire
    session.auto_start

    Io con questi parametri ho il problema opposto... devo usare ini_set per allungare i tempi in cui la sessione deve rimanere attiva per poterla conservare oltre la chiusura del browser....

    Cmq sono tutti parametri modificabili dal php.ini oppure all'inizio di ogni script tramite la funzione ini_set()
    Di piu' ninzo'... (= va' a leggere la documentazione)

    <<E' una decisione molto importante. Pensaci bene, Ataru!>>
    <<STOLTO! Non lo sai che io AGISCO SEMPRE PRIMA DI PENSARE???>>

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.