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

    [PHP & MySQL] Funzione scadenza sessione

    Ciao a tutti,

    Non ho le idee ben in chiaro per come fare questo ve lo posso confermare!

    se mi loggo sul mio sito nel db viene inserito 1 per utente loggato e 0 per non loggato e fin qui tutto bene, quando faccio il logout in modo corretto mi aggiorna 1 a 0 cioé non loggato, e fin qui tutto bene.

    Ora però se per esempio l'utente chiude il browser senza fare il logout mi rimane impostato su 1 che é sbagliato, come posso fare per risolvere questo problema?

    1. All'accesso del login devo impostare l'ora che si é connesso
    2. Devo dare una scadenza per esempio 5 minuti
    3. se non ha piu navigato nel sito per 5 minuti, eseguo un update alla tabella e imposto su 0

    È giusto il mio ragionamento?

    Qualcuno mi da una mano gentilmente?

    Questa é la mia struttura del db:

    CREATE TABLE `tb_login` (
    `lg_id` int(11) NOT NULL auto_increment,
    `lg_usr` varchar(10) collate latin1_general_ci NOT NULL,
    `lg_pwd` varchar(50) collate latin1_general_ci NOT NULL,
    `lg_session` varchar(32) collate latin1_general_ci NOT NULL,
    `lg_expire` varchar(5) collate latin1_general_ci NOT NULL,
    `lg_timeLogin` time NOT NULL,
    `lg_first` datetime NOT NULL,
    `lg_last` datetime NOT NULL,
    `lg_useronline` int(11) NOT NULL,
    PRIMARY KEY (`lg_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7
    ;
    INSERT INTO `tb_login` VALUES (5, 'Mich', 'fe6255b76b901e7ae1c757db234337d3', '', '5', '00:00:00', '2007-06-06 15:20:31', '2007-06-06 15:23:37', 0);
    E questa la funzione che fara ridere tutti ma che sto cercando di provare a fare! Non é completa sono degli esperimenti che sto provando ma la mia testa non ci arriva!

    Codice PHP:
    function checkUserOnline() {
        include
    "config.inc.php";
        
    // leggo i dati
        
    mysql_select_db($database_name$conn) or die (mysql_error());
        
    $sql "SELECT * FROM tb_login WHERE lg_usr = 'Admin'";
        
    $query mysql_query($sql) or die (mysql_error());
        
    $result mysql_fetch_assoc($query);
        
        
    $loggato time($result['lg_timeLogin']);
        
    $ora date("$loggato");
        
    $scadenza $loggato $result['lg_expire'];
        
        echo 
    $loggato " " $ora;
        echo
    "
    $scadenza;
        
        } 
    Grazie Michel
    PHP THE BEST

  2. #2
    Qualcuno mi da una mano a capire i procedimenti che devo eseguire pf?

    Grazie Michel
    PHP THE BEST

  3. #3
    Codice PHP:
    // Funzione controllo utenti online

    function checkUserOnline() {
        include
    "config.inc.php";
        
    mysql_select_db($database_name$conn) or die (mysql_error());
        
    $sql "SELECT * FROM tb_login WHERE lg_id = '".$_GET['usr']."'";
        
    $query mysql_query($sql) or die (mysql_error());
        
    $result mysql_fetch_assoc($query);
        
        
        
    // Prendo dal db l'ora di login
        
        
    $loggato time($result['lg_timeLogin']);
        
        
    // Prendo dal db il tempo di scadenza
        
        
    $scadenza mktime(0,$result['lg_expire']);
        
        
    // Qui dovrei fare il controllo ma non so come, se per esempio chiude la pagina senza fare il logout, al prossimo login deve verificare i login scaduti e aggiornare nel db i relativi dati!
        
        
    if($loggato $loggato+$scadenza) {
        echo 
    "update se é loggato e naviga nel sito aggiorno lora dell'utente";
        } else { 
        echo 
    "update al lgoin di qualsiasi utente se il tempo e scaduto,  qui dovrebbe togliere la sessione e settare user online su 0 di tutti gli utenti con tempo scaduto";
        }
        
        echo 
    $loggato " " $loggatoora;
        echo 
    "
    $scadenza;
        
        } 
    Qalcuno mi da una manina gentilmente? Grazie
    PHP THE BEST

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    questa potrebbe darti un ottimo spunto!

    http://it.php.net/manual/en/function...on-aborted.php
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Se usi le sessioni di php tanto vale che imposti il tuo tempo di scadenza e su db ci metti solo l'ora di accesso.... i calcoli della validita' della sessione li fara il php per conto suo basandosi sull'ora dell'ultimo accesso al file di sessione.

    ini_set('session.gc_maxlifetime', '300');

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

  6. #6
    Originariamente inviato da dottwatson
    questa potrebbe darti un ottimo spunto!

    http://it.php.net/manual/en/function...on-aborted.php
    eccezziunale veramente ...
    I know why nobody can use the functions connection_XXX(). If the php code do not send anything to buffer, the php dont check the connection, so, the connection_timeout will still NORMAL and will not be ABORTED.

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

  7. #7
    Come avete notato non sono per niente in chiaro, mi dareste una mano gentilmente se volete vedere cosa sto tentando di fare potete vederlo qui

    Nome Utente : Mich
    Passowrd : mich70

    il mio problema é che se uno chiude il browser mi rimane l'utente loggato, e devo fare in modo che al login di qualsiasi utente quelli loggati da tot tempo vengano aggiornati e messi non loggati!
    PHP THE BEST

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Very very useful!
    I was building a chat and I wanted my script to detect when the browser was closed, so the user could be deleted from the online_users table.

    <?
    echo str_repeat(" ",300);
    ignore_user_abort(true); //this way, the user can stop the output, but not the script.
    while (true) {
    echo "test
    \n";
    flush();
    sleep(2);
    if (connection_status()!=0){
    include ('dbconnect.inc');
    $sql="delete from online_users where online_user=$user";
    $sql_exec=pg_exec($vChatDB, $sql);
    die(); //kills the script
    }
    }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Ho provato cosi ma non funziona!

    Codice PHP:
    // Funzione controllo utenti online

    function checkUserOnline() {
        echo 
    str_repeat(" ",300);
    ignore_user_abort(true); //this way, the user can stop the output, but not the script.
    while (true) {
    echo 
    "test
    \n"
    ;
    flush();
    sleep(2);
    if (
    connection_status()!=0){
    include (
    'config.inc.php');
    mysql_select_db($database_name$conn) or die (mysql_error());
    $sql="UPDATE tb_login SET lg_session = '', lg_useronline = '0'";
    $query mysql_query($sql) or die (mysql_error());

    die(); 
    //kills the script
    }
    }

    PHP THE BEST

  10. #10
    Alla fine ho trovato qualcosina ma che pero non riesco a fare funzionare ed é questo:

    Codice PHP:
    function checkUserOnline() {
    include
    "config.inc.php";
    mysql_select_db($database_name$conn) or die (mysql_error());
    $sql "SELECT * FROM tb_login";
    $query mysql_query($sql) or die (mysql_error());
    $result mysql_fetch_assoc($query);

    // Momento in cui si logga un client

    $time time();

    $session_limit $result['lg_expire']; // impostato a 1 minuto per test

    $scadenza $time - ($session_limit*60);

    if(
    $time $scadenza) {
    echo 
    "scaduto";
    } else {
    echo 
    "aggiorna";


    in poche parole se la sessione e scaduta mi deve fare un update che mi imposti 0 per gli utenti rimasti connessi alla chiusura del browser, mentre se il tempo non é scaduto aggiornare l'ora di scadenza!

    Ma sono molto confuso su come si fa`!!

    Mi date una mano gentilmente-.
    PHP THE BEST

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.