Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [PHP+SQL]Utenti Online

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    42

    [PHP+SQL]Utenti Online

    Ciao a tutti,
    ho creato questo script per visualizzare le informazioni di utenti online entro un determinato lasso di tempo.

    Codice PHP:
        //IMPOSTO IL NUMERO DI UTENTI DA CERCARE PER PAGINA
        
    $primo=0;
        
    $per_page25;

        
    // IMPOSTO IL DELAY
        
    $delay3000;
        
    $sess_online=0;


        
    // FACCIO UNA SELEZIONE UNIVOCA DI TUTTI GLI ID PRESENTI NELLA TABELLA SESSIONI
        
    $query_online=mysql_query("SELECT DISTINCT creation_date, user_id FROM sessioni GROUP BY user_id ORDER BY creation_date DESC LIMIT $primo$per_page");
        while (
    $cerca=mysql_fetch_array($query_online)){

            
    //SELEZIONO LE INFORMAZIONI CHE MI INTERESSANO DI OGNI UTENTE CHE MI VIENE RESTITUITO DALLA QUERY PRECEDENTE
            
    $queryb=mysql_query("SELECT timestamp, username, avatar, sesso FROM utenti WHERE id=$cerca[user_id] ORDER BY timestamp DESC");
                while (
    $cercab=mysql_fetch_array($queryb)){

                
    // OTTENGO L'ULTIMO TIMESTAMP DELL'UTENTE
                    
    $check_sess$timestamp $cercab["timestamp"];

                
    // SE L'UTENTE E' ONLINE INCREMENTA IL NUMERO
                        
    if ($check_sess <= $delay){
                        
    $sess_online++;

    //PER OGNI UTENTE ONLINE CREO UN DIV CON LE SUE INFO
    echo"<div class='div_avatar2' align='left'>
        <a href='messaggi.php?id=
    $cerca[user_id]'>
        [img]utenti/
    $cerca[user_id]/mini/$cercab[avatar][/img]
        [b]<u>
    $cercab[username]</u>[/b] </a>

        [url='messaggi.php?id=
    $cerca[user_id]'][img]img/mail.png[/img][/url]
        [url='profilo.php?id=
    $cerca[user_id]'][img]img/foto.png[/img][/url]

        </div>"
    ;


                        }
                    }
                } 
    Il campo creation_date viene aggiornato ad ogni azione dell'utente sul sito con l'ultimo timestamp.

    Il problema è che ho diversi errori, da un numero errato di utenti, a utenti ripetuti due volte, e addirittura non ordinati per creation_date desc, ma alla rinfusa...

    avete idee?

    Grazie

  2. #2
    Codice PHP:
        function show_online()
        {
            
    $timeout 600;
            
    $sqldel "DELETE FROM dt_it_online WHERE UNIX_TIMESTAMP(NOW()) > timeout";
            
    $dsqldel mysql_query($sqldel$this->cdb);
            
    $sqlonl "SELECT * FROM dt_it_online WHERE ip = '".$_SERVER["REMOTE_ADDR"]."'";
            
    $dsqlonl mysql_query($sqlonl$this->cdb);
            
    $nsqlonl mysql_num_rows($dsqlonl);
            if(
    $nsqlonl 0)
            {    
                
    $sqlmesess "UPDATE dt_it_online SET timeout = UNIX_TIMESTAMP(NOW())+".$timeout." WHERE ip = '".$_SERVER["REMOTE_ADDR"]."'";
            }
            else
            {
                
    $sqlmesess "INSERT INTO dt_it_online (ip,stato,ora,timeout) VALUES ('".$_SERVER["REMOTE_ADDR"]."','0',UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW())+".$timeout.")";
            }
            
    $dsqlmesess mysql_query($sqlmesess$this->cdb);
            
    $sqlconl "SELECT COUNT(*) AS online FROM dt_it_online";
            
    $dsqlconl mysql_query($sqlconl$this->cdb);
            
    $onl mysql_fetch_array($dsqlconl);
            return 
    $onl["online"];
        } 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    42
    Ciao n0t,
    grazie per aver risposto

    Ho dato un occhiata veloce al codice... mi viene però subito un dubbio:
    All'inizio si cancellano le sessioni inferiori ad un determinato gap, percui se uno rientra da un altro pc dove si era già loggato... non entra in automatico ma deve riloggarsi, giusto?

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.