Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Originariamente inviato da Shores
    Mi spiace, ma questo è proprio... SBAGLIATO!

    Se inserissi un valore dentro alla sessione, per leggerlo dovrei fare session_start, e questo... rinfrescherebbe la sessione, che è proprio quello che io non volevo...
    Eh no. scusa.
    1. avvii la sessione la prima volta e inserisci la scadenza in una variabile di sessione
    2. ogni volta che passi da un pagina che fa un controllo verifica che la timestamp unix non abbia superato il valore limite che hai inserito nella tua variabile di sessione.

    3. se lo supera, allora session destroy !

    Non funzionerebbe così ??

    ciao,
    stefano

  2. #12
    Originariamente inviato da StefanoC
    "Questo mi sembrava fatto bene", almeno a me, ma così non è...

    cos'ha che non va ?
    è un post superficiale? è inutile ? o è proprio scazzato di brutto ??


    Tutte e tre
    Ciao a tutti

  3. #13
    Originariamente inviato da StefanoC
    Eh no. scusa.
    1. avvii la sessione la prima volta e inserisci la scadenza in una variabile di sessione
    2. ogni volta che passi da un pagina che fa un controllo verifica che la timestamp unix non abbia superato il valore limite che hai inserito nella tua variabile di sessione.

    3. se lo supera, allora session destroy !

    Non funzionerebbe così ??

    ciao,
    stefano
    No, per la semplice ragione che se la metto in sessione... non posso leggerla senza avere automaticamente rigenerato la sessione!

    Per capirci, quello che io voglio è poter fare in modo di caricare i dati che sono presenti nella sessione, SENZA che questo ne prolunghi la vita; il problema NON è nelle pagine normali, ma in quelle pagina che vengono chiamate solo tramite ajax, che da una parte hanno bisogno di leggere e modificare i dati in sessione e dall'altra non vorrei ne prolungassero la vita.

    In soldoni:
    Supponiamo una durata di sessione normale di 60 minuti

    Pagina normale:
    Primo caricamento, alle ore 9, viene generato ed inviato al browser un cookie di sessione, che, appunto, scade alle 10.
    Secondo caricamento, alle ore 9:10, la session_start fa si che il cookie di sessione venga rigenerato e scada ora alle 10:10.
    E fin qui tutto ok.

    Pagina speciale per ajax:
    Supponiamo di caricare questa pagina alle 9:20: per poter leggere/modificare qualsiasi informazione dalla sessione devo fare session_start, giusto? Se lo faccio... la sessione scadrà alle 10:20, ed è proprio questo che NON voglio! Io vorrei che questo caricamento di pagina NON cambiasse la scadenza e la lasciasse alle 10:10 come era prima! Quindi, in questa pagina speciale NON posso fare session_start fino a quando non ho già letto in un altro modo quando scadeva la sessione, e non ho quindi già fatto session_set_cookie_params (che infatti da manuale php va sempre eseguita PRIMA di session_start) per dire a php che voglio che la sessione duri questa volta solo 50 minuti, così da fare in modo che continui a scadere alle 10:10...

    Puntualizziamo anche che non volevo dovermi scrivere io un sistema che si preoccupi di fare session_destroy se ritengo che la sessione sia scaduta, vorrei continuare ad usare i meccanismi di php per questo, che sono robusti e testati; è evidente che se volessi potrei mettermi a gestire io in toto la "pseudo-scadenza" della sessione, ma significherebbe che in realtà la vera sessione gestita da php potrebbe rimanere latente per un bel po di più di quello che è la mia necessità, visto che verrebbe distrutta solo la prima volta che il mio codice che fa session_destroy viene eseguito dopo la mia pseudo scadenza: per capirci, se facessi come mi proponete, potrei avere una sessione ancora esistente ben dopo che il mio timeout personale è scaduto...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    Originariamente inviato da Shores
    (...)
    Pagina speciale per ajax:
    Supponiamo di caricare questa pagina alle 9:20: per poter leggere/modificare qualsiasi informazione dalla sessione devo fare session_start, giusto? Se lo faccio... la sessione scadrà alle 10:20, ed è proprio questo che NON voglio! Io vorrei che questo caricamento di pagina NON cambiasse la scadenza e la lasciasse alle 10:10 come era prima! Quindi, in questa pagina speciale NON posso fare session_start fino a quando non ho già letto in un altro modo quando scadeva la sessione, e non ho quindi già fatto session_set_cookie_params (che infatti da manuale php va sempre eseguita PRIMA di session_start) per dire a php che voglio che la sessione duri questa volta solo 50 minuti, così da fare in modo che continui a scadere alle 10:10...

    Puntualizziamo anche che non volevo dovermi scrivere io un sistema che si preoccupi di fare session_destroy se ritengo che la sessione sia scaduta, vorrei continuare ad usare i meccanismi di php per questo, che sono robusti e testati; è evidente che se volessi potrei mettermi a gestire io in toto la "pseudo-scadenza" della sessione, ma significherebbe che in realtà la vera sessione gestita da php potrebbe rimanere latente per un bel po di più di quello che è la mia necessità, visto che verrebbe distrutta solo la prima volta che il mio codice che fa session_destroy viene eseguito dopo la mia pseudo scadenza: per capirci, se facessi come mi proponete, potrei avere una sessione ancora esistente ben dopo che il mio timeout personale è scaduto...
    allora temo che di pronto non ci sia granchè.

    adesso ho capito un po' meglio: sempre nella possibilità di mettere un minimo le mani al codice...
    aggirerei la cosa così: nelle SOLE pagine NON AJAX incrementi il valore del timeout della variabile di sessione.

    poi nei DUE tipi di pagine, fai il controllo di validità della sessione.
    in questo modo le pagine ajax non andrebbero ad aggiungere minuti alla scadenza della sessione, CHE VIENE DISTRUTTA (O MENO) DOPO IL CONTROLLO DELLA VARIABILE DI SESSIONE.

    Guarda che è più difficile da dire che da fare...

    ciao,
    stefano

  5. #15
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Shores
    Mi spiace, ma questo è proprio... SBAGLIATO!
    La mia soluzione dava per scontato (mi sembrava ovvio) che poi dovevi essere tu a preoccuparti di controllare la scadenza della sessione. Il che significa che la sua scadenza "naturale" diventava ininfluente.
    Se poi non hai voglia di farlo, pazienza

  6. #16

    MA anche no!!!

    Originariamente inviato da Shores
    Mi spiace, ma questo è proprio... SBAGLIATO!

    Se inserissi un valore dentro alla sessione, per leggerlo dovrei fare session_start, e questo... rinfrescherebbe la sessione, che è proprio quello che io non volevo...

    L'unico modo di farlo è avere un coookie separato che contenga la data di creazione (o di scadenza, è lo stesso) del cookie di sessione, così, PRIMA di fare session_start posso leggerlo e fare session_set_cookie_params per abbreviare la sessione...

    Solo che è una gran piva! Prima o poi lo farò, ma ora non ho abbastanza tempo da dedicarci; se ci fosse stato un bel parametro da passare a session_start per dirgli di non allungare la sessione, sarebbe stato meraviglioso!
    Dovresti darti tu una rinfrescata delle session ... session_start() non rinfresca la sessione ma la propaga solamente. Una sessione creata alle 8:00, viene considerata vecchia di 10 minuti già alle 8:10 anche se l’utente continua a visitare il sito, se nessun dato dell’array $SESSION viene aggiornato. Ciò significa che la sessione si 'rinfresca' solo se si aggiorna un qualunque dato dell'array $SESSION e non con la semplice chiamata di session_start().

  7. #17

    Re: MA anche no!!!

    Originariamente inviato da vsilver17
    Dovresti darti tu una rinfrescata delle session ... session_start() non rinfresca la sessione ma la propaga solamente. Una sessione creata alle 8:00, viene considerata vecchia di 10 minuti già alle 8:10 anche se l’utente continua a visitare il sito, se nessun dato dell’array $SESSION viene aggiornato. Ciò significa che la sessione si 'rinfresca' solo se si aggiorna un qualunque dato dell'array $SESSION e non con la semplice chiamata di session_start().
    Il mio problema è proprio che ho bisogno di modificare cose nella $_SESSION, ma vorrei che questo non prolungasse la sessione...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #18
    Il mio dilemma allora potrebbe essere la tua soluzione:
    Ho questo codice:
    Codice PHP:
    ini_set ('session.cookie_lifetime''10');
     
    session_start(); $_SESSION['keepalive']++;
     if(!isset(
    $_SESSION['user']) || !isset($_SESSION['pass'])){ 
                  
    printf("%s",'scaduta');
         exit(); } 
    $_SESSION['keepalive'] è una variabile di sessione inizializzata a zero nel momento in cui effettuo il login e per ogni pagina visitata la incremento proprio per mantenere viva la sessione. Solo che, mentre dovrebbe scadere il timeout dopo 10 secondi di inattività, con il codice appena descritto mi scade.....quando decide a lui, anche dopo vari minuti. Mhà . Cmq nel caso invece in cui metta l'istruzione $_SESSION['keepalive']++; successivamente, la variabile viene incrementata e la sessione scade dopo 10 secondi dal login, fregandosene altamente di mantenere viva la sessione . Non so ma credo che questo farebbe al caso tuo:
    Codice PHP:
    ini_set ('session.cookie_lifetime''10');
     
    session_start(); $_SESSION['keepalive']++;
     if(!isset(
    $_SESSION['user']) || !isset($_SESSION['pass'])){ 
                  
    printf("%s",'scaduta');
         exit(); }
    else{ 
    $_SESSION['keepalive']++;


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.