Visualizzazione dei risultati da 1 a 10 su 10

Discussione: utenti in linea

  1. #1

    utenti in linea

    Qualcuno sa dirmi come posso sapere in php gli utenti attualmente loggati nel mio sito?

  2. #2
    una soluzione potrebbe essere creare una tabella mysql che salvi ip, ora dell'ultimo click dell'utente. Se invece gli utenti sono registrati potresti pensare anche ad implementare la tabella con eventuali nick o userid... Vedi un po' tu...
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Se vuoi ho uno scriptino pronto che si appoggia a file TXT.

    Codice PHP:
    <?
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////// FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function chk_session($file)
    {
        
    $sid session_id();
        
    $a file($file);
        
    $content $a[0];
        
    $content substr($content0strlen($content));
        
    $b explode("-"$content);
        
    $found 0;
        for(
    $i=0;$i<count($b);$i++)
        {
            list(
    $fsid$ftime) = explode(","$b[$i]);
            if(
    $fsid == $sid)
            {
                
    $b[$i] = $sid.",".time();
                
    $found 1;
            }
            if(!
    chk_session_time($ftime))
            {
                unset(
    $b[$i]);
            }
        }
        
        if(
    $found == 1)
        {
            
    $rs = @fopen($file"w+");
            
    $content implode("-"$b);
            
    fwrite($rs$content);
            return 
    true;
        }    
        else
        {
            return 
    false;
        }
    }

    function 
    add_session($file)
    {
        
    $rs = @fopen($file"a");
        
    $a file($file);
        if(
    count($a) == 0)
            
    fwrite($rssession_id().",".time());
        else
            
    fwrite($rs"-".session_id().",".time());
    }

    function 
    chk_session_time($time)
    {
        
    $timeouts 180;
        
    $timeout time() - $timeouts;
        if(
    $time $timeout)
            return 
    false;
        else
            return 
    true;
    }

    function 
    chk_session_number($file)
    {
        
    $a file($file);
        
    $content $a[0];
        
    $b explode("-"$content);
        
    $n count($b);
        return 
    $n;
    }

    function 
    chk_session_file($file)
    {
        if(!
    file_exists($file))
        {
            if(!
    fopen($file"w+"))
                echo 
    "Si è verificato un errore durante la creazione del file. Verificare i diritti di scrittura.";
        }
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //// END FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    if(!session_id()) { session_start(); } // faccio partire la sessione nel caso non fosse gia' attiva

    $filename "./session.txt"// definisco con che nome e dove salvare il file txt

    chk_session_file($filename); // controllo che il file esista altrimenti mi assicuro di crearlo

    if(!chk_session($filename)) // controllo se la sessione è presente. In caso la aggiungo alla lista (nel frattempo elimino quelle scadute)
    {
        
    add_session($filename); // aggiungo la sessione alla lista
    }

    echo 
    chk_session_number($filename)." utenti stanno visitando il sito"// stampo quante sessioni sono attive al momento.

    ?>
    In ogni caso si tratta di registrare quante sessioni sono partite e cancellarle se risultano scadute.


  4. #4
    eheheh io e il drugo stiamo guardando le stesse conversazioni
    eheheh lui te l'ha proposto su file invece
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  5. #5
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    ehehe si.

    Cmq nonostante lo script che ho postato, ovviamente appoggio la soluzione su database, come detto da iraiscoming223.


  6. #6

    tabella di appoggio

    puoi creare una tabella di appoggio chiamata per esempio

    user_online

    codice:
    CREATE TABLE `user_online` (
      `IDuser` int(10) unsigned NOT NULL auto_increment,
      `IDsession` varchar(255) NOT NULL default '0',
      `stato` text NOT NULL,
      `user` varchar(45) NOT NULL default '0',
      `data` datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (`IDuser`)
    ) ENGINE=MyISAM AUTO_INCREMENT=49 DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;
    e crei una pagina di login, ovviamente devi mettere la stringa di connessione

    $conn = mysql_conn ...

    codice:
    //starto la session
    session_start();
    
    //pulisco la tabella nel caso l' utente non abbia eseguito correttamente il logout
    mysql_select_db($database_conn, $conn);
    $data = date("Y-m-d");
    $pulisco = "DELETE FROM user_online WHERE data < '$data'";
    mysql_query($pulisco, $conn) or die(mysql_error());
    
    //autenticazione e creazione var di sessione
    $user = $_REQUEST['username'];	
    $pass = $_REQUEST['password'];
    
    //controllo e autorizzo
    mysql_select_db($database_conn, $conn);
    $query_login = "SELECT count(user) as controllo FROM user WHERE user = '$user' AND pass = '$pass' and attivo = 'Y'";
    $login = mysql_query($query_login, $conn) or die(mysql_error());
    $row_login = mysql_fetch_assoc($login);
    $totalRows_login = mysql_num_rows($login);
    	
    if($row_login['controllo'] == 1)
    	{
    	//controllo e autorizzo
    	mysql_select_db($database_conn, $conn);
    	$query_welcome = "SELECT IDuser, alias, sesso FROM user WHERE user = '$user' AND pass = '$pass'";
    	$welcome = mysql_query($query_welcome, $conn) or die(mysql_error());
    	$row_welcome = mysql_fetch_assoc($welcome);
    	$totalRows_welcome = mysql_num_rows($welcome);	
    	
    	$_SESSION['login'] = $user;
    	$_SESSION['IDuser'] = $row_welcome['IDuser'];
    	$IDs = session_id();
    	$data_login = date("Y/m/d");
    	
    	//scrivo l' accesso nella tabella USER ONLINE
    	$insertSQL = "INSERT INTO user_online (IDsession, stato, user, data) VALUES ('$IDs', 'OnLine', '$user', '$data_login')";
    	
    	mysql_select_db($database_conn, $conn);
    	$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());
    	
    	}
    	
    	else
    	
    	{
    	
    	$result = "Le credenziali di accesso fornite non sono corrette o non hai ancora attivato il tuo account.
    
    Non sei registrato?? Clicca qui!" ;
    	
    	}
    questo è uno script che gia avevo fatto, lo devi personalizzare!

    ciao!

    Fabio

  7. #7
    Ma mi sembrano soluzioni che non danno una verifica sicura degli utenti on-line, non c'è modo di reperire il tracciato di un utente da server in modo da capire se è ancora presente?

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    uhm? Lo script che ti ho postato controlla la presenza dell'utente...la registra...e se resta inattivo per più di 30 secondi lo cancella...

    Più veritiero di cosi

  9. #9
    si fa quel che si puo

  10. #10
    Scusate ma non ho capito come lo script cancellerebbe gli user che ormai si sono staccati.

    Non mi perviene il passaggio in cui accade tale magia

    grazie
    Perchè uso Maxthon? | Mi piace questa chat

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.