Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    150

    Aiuto su scadenza sessioni

    Allora, dopo tante peripezie sono riuscito a capire come fare la differenza tra due orari, in modo da avere un risultato da comparare con un totale tempo prestabilito, ad esempio 5 minuti...

    ora la questione è un altra..

    come faccio a capire che devo aggiornare l'orario della sessione, in base ad un click di un utente, o un refresh (voluto dall'utente)... ?

    mi spiego meglio...

    se non clicco niente, malgrado i refresh automatici, dopo cinque minuti, vengo buttato fuori...

    se clicco qualcosa, se mi sposto di pagina, o aggiorno la stessa... viene fatta una Update nella tabella sessione aggiornando i campi ora_session e ora_corrente (che comincio a capire che non mi serve a nulla (mi basta usare now())...

    la domanda è... come faccio a capire se l'utente clicca qualcosa, o la pagina si aggiorna da sola e quindi l'utente non fa nulla ?

    Spero di essere stato chiaro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    150
    up

  3. #3
    scusa, ma per le sessioni usi le routine interne del php o uno script fatto da te?

    Se usi le funzioni php non ti devi preoccupare di niente, se è uno script fatto da te, a ogni richiesta aggiorni il campo sul database e fine.

  4. #4
    Perchè fai i refresh automatici?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    150
    uso uno script che sto cercando di fare io stesso...

    solo che mi incasino..

    ad esempio, il campo ora_sessione, nel db, che tipo deve essere ? time ? timestamp ? datetime ?

    calcolate che mi serve la data di ingresso di una persona...

    faccio i refresh automatici per il fatto che sto cercando di fare un gdr, quindi mi serve capirlo anche per le chat, o per lo scambio di messaggi privati (voi dite che è inutile per la lista degli online ?

    e poi mi intrippo pure nelle funzioni mktime ed explode, ovviamente perchè non so bene che tipo dati mettere nel db nel campo ora_sessione...

  6. #6
    Allora, andiamo con ordine.
    Per memorizzare le date ti consiglio di leggere questo articolo su freephp.it:

    http://freephp.html.it/articoli/view...olo.asp?id=168

    Bisogna capire cosa vuoi fare esattamente. Una volta che l'utente è arriva sul sito come fai a capire se è la prima vistia o se sta continuando la navigazione? Dove memorizzi la data di ingresso? Insomma, descrivici un po' come hai pensato di gestire la cosa e noi, poi, ti diamo i consigli necessari per migliorare lo script.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    150
    allora, nel db ho due tabelle..

    Utente
    Online

    Utente ha i diversi campi quali nome, cognome, ecc...

    Una volta fatta la login, nome($_session[nome]), data di ingresso(DATE) e ora di ingresso(TIME) vengono scritti nella tabella...

    io vorrei uno script, che dopo un tot di inattività da parte dell'utente, cancella il record riferito all'utente che ha superato la soglia del tempo di inattività... ad esempio 5 minuti...

    allora, se dovessi fare tutto senza refresh, sarebbe qualcosa come

    (al caricamento della pagina)
    aggiorna nella tabella Online il record riferito all'utente, aggiornando solo l'ora_sessione e non la data di ingresso...

    poi dovrebbe controllare che i cinque minuti di sessione non siano passati, se sono passati, lo slogga, altrimenti resta dentro...

    ora, la domanda è.. come faccio a fare ciò ?

    e soprattutto se non faccio un refresh della pagina, come faccio a controllare secondo per secondo, se il tempo di sessione è scaduto ?

  8. #8
    Da quello che ho capito, quindi, operi sulla tabella online.
    Dunque, per prima cosa l'ora di ingresso va memorizzata nel formato timestamp in un campo varchar.

    Quando fai il refresh non fai niente. Quando, invece, un utente clicca sul link aggiungi alla fine del link, magari, una var che ti indichi che quello non è un refresh ma il click su di un link.

    il refresh lo fai con la funzione header:

    header( 'Location: pagina.php' ) ;

    il link, invece, sarà così

    pagina.php?l=y

    Ho usato delle vars fittizie che puoi modificare a piacere.

    Cmq in ogni pagina inclusi un controllo di questo tipo (mi baso sulle var che ho usato nell'esempio):

    Codice PHP:
    if ( isset( $_GET['l'] ) && $_GET['l'] == 'y' )
      {
        
    // E' un link e quindi aggiorno
        
    qui il codice per aggiornare l'ora
      } 
    Spero di essere stato chiaro! Se così non fosse dimmelo che cerco di spiegarti meglio come funziona! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    150
    ecco, ora è già più chiaro, grazie mille... vedrò di sbatterci la testa... al massimo mi ritrovi a scrivere post da principianti ;P

    ma posso postare il codice così magari se c'è qualcosa che non va, me lo dite ?

    A quanto pare per ora sono riuscito ad impostare un tempo di sessione max (30 minuti)

    ma se faccio il confronto di:

    differenza = ora attuale - ora ingresso
    se differenza > tempo di sessione massimo allora...

    mi verifica sempre la prima condizione, sia che differenza sia più che sia meno del tempo di sessione... ovvero mi dice sempre sessione scaduta...

  10. #10
    Se non scrivi quelli non potrai mai scrivere post da... esperto! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.