Visualizzazione risultati 1 fino 2 di 2

Discussione: [PHP] Utenti collegati, check tramite IP

  1. #1
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito [PHP] Utenti collegati, check tramite IP

    Salve amici, oggi sono qui per illustrarvi un semplicissimo script, facile all'uso e all'installazione!
    Lo script di cui voglio parlarvi è uno script che segna gli utenti collegati tramite il controllo degli indirizzi ip che salva su file di testo.
    Quindi niente SQL.
    Per cominciare vi mostro il codice:
    Codice PHP:
    <?
    #CLASSI.PHP BY PEO (SCRIPT_PRESENZE OPEN SOURCE) http://leo91.altervista.org
    class Ospite{
        function 
    Aggiorna(){//Funzione che serve ogni volta che l'ospite fa qualcosa. Aggiorna il suo dato di vita
            
    $ip $_SERVER['REMOTE_ADDR'];
            
    $file file("logged.txt");
            foreach(
    $file as $rigo) {
                
    $ex explode("|",$rigo);
                if(
    $ex[0] == $ip) {
                    
    $w[] = "$ip|".(time()+120)."|\n";
                }else{
                    
    $w[] = $rigo;
                }
            }
            
    $ok implode("",$w);
            
    $fp fopen("logged.txt","w+");
            
    fwrite($fp,$ok);
            
    fclose($fp);
        }
        function 
    Guarda(){//Funzione di controllo che serve alla funzione seguente
            
    $ip $_SERVER['REMOTE_ADDR'];
            
    $file file("logged.txt");
            foreach(
    $file as $rigo){
                
    $ex explode("|",$rigo);
                if(
    $ex[0] == $ip) {
                    return 
    "falso";
                }
            }
        }
        function 
    Inserisci(){
            
    $ip $_SERVER['REMOTE_ADDR'];
            
    $pro $this->Guarda();
            if(
    $pro != "falso") {
                
    $fp fopen("logged.txt","a+");
                
    fwrite($fp,"$ip|".(time()+120)."|\n");//Inserisco un massimo di 120 secondi prima che l'ospite non venga più contato
                
    fclose($fp);
            }
        }
            
        function 
    Check(){//Serve a cancellare gli ospiti disconnessi(che non fanno azioni prima di 120 sec.)
            
    $file file("logged.txt");
            
    $tempo time();
            foreach(
    $file as $rigo) {
                
    $ex explode("|",$rigo);
                if(
    $ex[1] < $tempo){
                    
    $w[] = "";
                }else{
                    
    $w[] = $rigo;
                }
            }
            
    $ok implode("",$w);
            
    $fp fopen("logged.txt","w+");
            
    fwrite($fp,$ok);
            
    fclose($fp);
        }
        function 
    Mostra(){//Serve a mostrare gli utenti connessi
            
    $file file("logged.txt");
            
    $quanti count($file);
            if(
    $quanti == "") {$quanti "0";}
            echo 
    "<a href='http://leo91.altervista.org'>Utenti connessi: $quanti</a>";//MOSTRA "Utenti connessi: *numutenti*"
        
    }
    }
    ?>
    Questa è l'importante pagina classi.php dove è contenuta la classe Ospite che si occupa di tutto lo script.
    Questo codice è molto lungo, ma l'unica cosa che vi serve a modificare questo script sta nell'intervallo di tempo il quale l'utente deve considerarsi scollegato.
    In parole povere vi basti modificare, dove lo trovate, il numero 120 che sta ad indicare i secondi, cioè 2 minuti.
    Cambiando quel numero potrete decidere quando considerare l'utente on-line e off-line. Consiglio comunque di non abbassarlo sotto il minuto (60).
    Potete modificare un'altra cosa, ovvero l'output che visualizza "Utenti connessi:" che è nella terzultima riga. Li potete scrivere la frase da visualizzare, ma non modificate il nome della variabile ($quanti).
    Potete naturalmente mettere codice html come ad esempio per visualizzare una scritta rossa modificherete così:
    Codice PHP:
    <?
    #ALTRO CODICE
    echo "<font color='red'>Utenti connessi: $quanti</font>";
    #ALTRO CODICE
    ?>
    E ora che avete fatto la vostra bella classe, richiamatela dove volete visualizzare il numero di utenti connessi in questo modo:
    Codice PHP:
    <?
    include("classi.php");
    $tutto = new Ospite();
    $tutto->Aggiorna();//Aggiorna lo stato dell'utente
    $tutto->Inserisci();//Inserisce se ip nuovo
    $tutto->Check();//Controllo sugli utenti (disconn/conn)
    $tutto->Mostra();//Mostra infine il risultato
    ?>
    Fatto, ora il vostro counter per gli utenti on-line funziona!
    Ultima modifica di Leo91 : 05-02-2008 alle ore 14.34.46

  2. #2
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Contatore online tramite IP: aggiornamento "semplicità!".

    Codice PHP:
    <?php
        session_start
    ();
        
        
    $ip $_SERVER["REMOTE_ADDR"]; $ip str_replace("."""$ip); //Tolgo i puntini dall'ip, per comodità.
        
    if(!$_SESSION["Visita"]) //Se non c'è alcuna sessione "Visita" da parte del visitatore...
        
    {
            
    $_SESSION["Visita"] = array("tempo" => time(), "id" => $ip); //...gliene assegno una!
        
    }
        
        function 
    check()
        {
            
    $file file("online.txt"); //File che contiene i visitatori attivi.
                
    $tempo_online 600//Il tempo dopo il quale il visitatore è da considerarsi off-line.
            
    foreach($file as $riga)
            {
                
    $ix explode("|"$riga);
                if(
    time() >= $ix[1])
                {
                    
    $w[] = "";
                    
    $b 1;
                }
                else
                {
                    
    $w[] = $riga;
                }
            }
            if(
    $b)
            {
                
    $w implode(""$w);
                
    $fu fopen("online.txt""w+");
                
    fwrite($fu$w);
                
    fclose($fu);
            }
        }
        function 
    online($tipo)
        {
            
    $tempo_online 600//Il tempo dopo il quale il visitatore è da considerarsi off-line.
            
    $file file("online.txt");
            foreach(
    $file as $rigo)
            {
                
    $ex explode("|",$rigo);
                if(
    $ex[0] == $_SESSION["Visita"]["id"])
                {
                    
    $w[] = $ex[0]."|".($_SESSION["Visita"]["tempo"] + $tempo_online)."|\n";
                    
    $a 1;
                }
                else
                {
                    
    $w[] = $rigo;
                }
            }
            
            if(!
    $a//Nuova visita.
            
    {
                
    $fp fopen("online.txt""a+");
                
    fwrite($fp$_SESSION["Visita"]["id"]."|".($_SESSION["Visita"]["tempo"] + $tempo_online)."|\n");
                
    fclose($fp);
            }
            else 
    //Visita aggiornata.
            
    {
                
    $w implode(""$w);
                
    $fp fopen("online.txt""w+");
                
    fwrite($fp$w);
                
    fclose($fp);
            }
            
    check(); //controllo se qualche sessione è scaduta.
            
    $agg file("online.txt"); //Rileggo il file.
            
    if($agg[0] != "")
            {
                
    $n_online count($agg);
            }
            else
            {
                
    $n_online 0;
            }
            if(!
    $tipo)
            {
                return 
    "Utenti connessi: ".$n_online//Mostra: Utenti connessi: #
            
    }
            else
            {
                return 
    "document.write('Utenti connessi: ".$n_online."');";
            }
        }
    ?>
    Per far funzionare lo script vi basta scrivere:

    . In pagine .php
    Codice PHP:
    #codice
    echo online(0);
    #codice 
    . In pagine .html, .html o comunque non dinamiche
    Codice HTML:
    <!-- Codice -->
    <script type="text/javascript" src="pagina.php"></script>
    <!-- Codice -->
    e pagina.php dovrà essere:
    Codice PHP:
    <?php
      
    include("online.php"); //online.php è la pagina con il codice dello script
      
    echo online(1);
    ?>
    Esempio [.php] QUI
    Esempio [.html] QUI
    Ultima modifica di Leo91 : 30-01-2008 alle ore 18.55.46

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •