Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con session

  1. #1

    Problema con session

    Ciao a tutti, ho un problema con le sessioni... vi spiego:
    Attualmente recupero e metto in sessione i seguenti dati in questo modo:
    $user = $_SESSION["USER"];
    $idSender = $_SESSION["ID"];
    $nameSender = $_SESSION["NAME"];
    $surnameSender = $_SESSION["SURNAME"];

    Utilizzo questi dati insieme ad altri che l'utente mi invia tramite un form, e memorizzo tutto in un database mysql... guardando il DB, però, ho notato però che spesso alcuni dei dati che avevo in sessione, non vengono registrati.

    Ho pensato che sia un problema di sessione cha magari scade a causa dei lunghi tempi che l'utente impiega per compilare il form(è un form con moltissimi campi).

    Secondo voi come posso risolvere?
    Cosa consigliate?
    Dovrei utilizzare i cookie al posto di session?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    459
    Puoi decidere tu quanto dura una sessione

    http://it2.php.net/manual/it/functio...che-expire.php
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  3. #3
    Utile questa cosa!
    Ma è necessario settare il limite ogni volta prima di session start? Ovvero ho 40 pagine dinamiche = 40 settaggi sul session_expire?

  4. #4
    Infatti si, è molto utile... per ora ho fatto delle prove e sembra funzioni anche se non ho capito benissimo tutto...

    Io ho una sola pagina, che si ricarica piu volte e fino a costruire il form di cui parlavo prima, secondo i dati che ha da inviare il mio utente...

    Ho inserito(come da esempio su php.net) questo codice prima del session start:
    /* assegna il limite della cache su 'private' */
    session_cache_limiter('private');
    $cache_limiter = session_cache_limiter();
    /* imposta la scadenza della cache su 30 minuti */
    session_cache_expire(30);
    $cache_expire = session_cache_expire();

    Ora mi chiedo una cosa: Il limite impostato su 30 minuti, viene rinnovato ad ogni step della mia pagina? cioè ogni volta che viene ricaricata iniziano i 30 minuti? giusto?

    E poi ancora... il cache_limiter impostato su private non l'ho capito benissimo, cosa fa di preciso?
    Ho provato a settare session_cache_expire a 3 minuti, e fare il submit dopo 5 minuti dal caricamento della pagina(quindi la sessione doveva essere scaduta) però i dati che avevo in sessione sono stami memorizzati nel db... quindi me li ha tenuti anche oltre i 3 minuti impostati!

    Cosa vuol dire? Non ho capito una mazza secondo voi?

  5. #5
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    459
    Sì, va messo in ogni pagina

    La scadenza della cache viene reimpostata al valore predefinito di 180 memorizzato in session.cache_limiter ad ogni richiesta di pagina. Quindi, è necessario chiamare session_cache_expire() in ogni pagina (e prima di invocare session_start()).

    ****************************************

    session_cache_limiter -> public, private, nocache , private_no_expires
    http://it2.php.net/manual/it/functio...he-limiter.php


    public:
    Expires: pageload + 3 hours
    Cache-Control: public, max-age=10800

    private:
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: private, max-age=10800, pre-check=10800

    nocache:
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache

    private_no_expire:
    Cache-Control: private, max-age=10800, pre-check=10800
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

  6. #6
    Scusate, però io dal manuale leggo una cosa:

    ** This has nothing to do with lifetime of a session **

    Whatever you set this setting to, it won't change how long sessions live on your server. This only changes HTTP cache expiration time (Expires: and Cache-Control: max-age headers), which advise browser for how long it can keep pages cached in user's cache without having to reload them from the server.
    E infatti un utente suggerisce questo:

    you can change the max lifetime for a session with the function ini_set().

    <?php
    ini_set("session.gc_maxlifetime", "18000");
    ?>
    This will set the max lifetime of the script to 5 hours. You have to use this in every script that you want to change the default lifetime for.

    if you want to know the lifetime of your current script, you can use:

    <?php
    echo ini_get("session.gc_maxlifetime");
    ?>

  7. #7
    Questo credo sia un altro metodo possibile... però tornando alla soluzione adottata da me, faccio un altra domanda a ade_v

    Se session_cache_limiter settato su private imposta gia di suo una certa scadenza per la sessione, a casa serve specificare anche session_cache_expire(30); ??

    Prima del mio session_start potrei usare anche il solo session_cache_expire(30); ...otterrei lo stesso risultato? puo bastare?

    Cosa consigliate?

  8. #8
    Utente di HTML.it L'avatar di ade_v
    Registrato dal
    Jan 2001
    Messaggi
    459
    Giusta osservazione. Non so cosa risponderti, purtroppo
    ade_v@yahoo.it

    Fletto i muscoli e sono nel vuoto

    Se inviate messaggi privati, avvisatemi sul forum...

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.