Visualizzazione risultati 1 fino 12 di 12

Discussione: sapere chi è online

  1. #1
    Guest

    Cool sapere chi è online

    ho visto ke nei forum quando 1 è loggato, compare in una lista(tipo AV)...volevo mettere 1 cosa del genere in un area privata, ma per questo c'è bisogno di sessioni oppure posso lavorare su IP?

    PS: mi serve anke qualcuno ke mi faccia il tutto!

    AUGURI!

  2. #2
    Guest

    Predefinito

    per fare quello devi aggiungere l'utente in un file di testo o in un database con il suo timestamp ogni volta ke va su una pagina poi controlli se il timestamp dell'utente è maggiore del timestamp corrente meno i minuti ke vuoi far rimanere l'utente tra quelli online, se è cosi lo aggiugni alla lista...

    lo so x te è un po complicato ora vedro ke posso fare ma cmq devi modificare almeno qualche pagina del tuo sito xke cosi l'utente invia il suo timestamp da ogni pagina del sito...

    ciao ^__^
    Ultima modifica di jostock : 25-12-2005 alle ore 11.29.59

  3. #3
    Guest

    Cool

    grazie grande capo! sei il migliore...allora aspetto te!
    ...byex!

  4. #4
    Guest

    Predefinito

    ecco ho finito ora dopo qualche ritocco...

    file: online.php
    Codice PHP:
    <?
    $max
    = 10;//minuti di tempo online
    $filename = "online.txt";

    function
    user()
    {
    global
    $max, $filename;
    $max *= 60;
    if(
    file_exists($filename) == false )
    {
    $fo = fopen($filename, 'w');
    fclose($fo);
    }
    $file = file($filename);
    $file = array_reverse($file);
    for(
    $i = 0; $i < count($file); $i++)
    {
    list(
    $usr, $time, $date) = explode('|', $file[$i]);
    if(
    $time >= ( time() - $max ) )
    {
    add(ip(), $date);
    }
    }
    $fp = fopen($filename, 'a+');
    if(
    $fp == false )
    {
    die(
    'File non trovato');
    }
    fwrite($fp, ip() . '|' . time() . '|' . date('d-m-y H:i') . "\n" );
    fclose($fp);
    }

    function
    ip()
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    list(
    $a, $b, $c, $d) = explode('.', $ip);
    $return = $a . '.' . $b . '.' . $c . '.';
    $len = strlen($d);
    for(
    $i = 1; $i <= $len; $i++)
    {
    $return .= 'x';
    }
    return
    $return;
    }

    function
    add($ip, $data)
    {
    global
    $archive;
    $ip = ip();
    $archive = array();
    if(
    in_array($ip, $archive) == false )
    {
    $archive[] = array($ip, $data);
    }
    }

    function
    show()
    {
    global
    $archive;
    echo
    "<table align=\"center\">\n";
    foreach(
    $archive as $k => $v)
    {
    echo
    "<tr>
    <td>
    $v[0]
    </td>
    <td>
    $v[1]
    </td>
    </tr>\n"
    ;
    }
    echo
    "</table>\n";
    }
    ?>
    poi trasformi le tue pagine in .php e ad ogni pagina dove vuoi far registrare gli utenti nel file metti:

    Codice PHP:
    include('online.php');
    user();
    invece dove vuoi far vedere gli utenti online

    Codice PHP:
    include('online.php');
    show();
    ciao ^__^
    Ultima modifica di jostock : 25-12-2005 alle ore 19.36.50

  5. #5
    Guest

    Cool

    a me non funzia!

  6. #6
    Guest

    Predefinito

    ho rivisto ora lo script questo va di sicuro:
    Codice PHP:
    <?
    $max
    = 10;//minuti di tempo online
    $filename = "online.txt";

    function
    user()
    {
    global
    $max, $filename;
    $max *= 60;
    if(
    file_exists($filename) == false )
    {
    $fo = fopen($filename, 'w');
    fclose($fo);
    }
    $file = file($filename);
    $file = array_reverse($file);
    for(
    $i = 0; $i < count($file); $i++)
    {
    list(
    $usr, $time, $date) = explode('|', $file[$i]);
    if(
    $time >= ( time() - $max ) )
    {
    add(ip(), $date);
    }
    }
    $fp = fopen($filename, 'a+');
    if(
    $fp == false )
    {
    die(
    'File non trovato');
    }
    fwrite($fp, ip() . '|' . time() . '|' . date('d-m-y H:i') . "\n" );
    fclose($fp);
    }

    function
    ip()
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    list(
    $a, $b, $c, $d) = explode('.', $ip);
    $return = $a . '.' . $b . '.' . $c . '.';
    $len = strlen($d);
    for(
    $i = 1; $i <= $len; $i++)
    {
    $return .= 'x';
    }
    return
    $return;
    }

    function
    add($ip, $data)
    {
    global
    $archive;
    $archive[] = array($ip, $data);
    }

    function
    show()
    {
    global
    $archive;
    echo
    "<table align=\"center\">\n";
    foreach(
    $archive as $k => $v)
    {
    echo
    "<tr>
    <td>
    $v[0]
    </td>
    <td>
    $v[1]
    </td>
    </tr>\n"
    ;
    }
    echo
    "</table>\n";
    }
    ?>
    cmq devi richiamare la pagina dove hai fatto l'include nn quella dove c'è lo script riprova anke il primo xke in locale a me funziano tutti e 2.
    la differenza cmq sta nel fatto ke il primo mostra solo 1 volta gli ultimi ip senza ripeterli invece il secondo mostra tutti gli ip

    ciao ^__^
    Ultima modifica di jostock : 25-12-2005 alle ore 19.36.40

  7. #7
    Guest

    Lightbulb

    Prova con questa classe ^^
    Codice PHP:
    <?php
    if(!function_exists('file_get_contents')) {
    function
    file_get_contents($file, $include_path) {
    return @
    implode("", @file($file, $include_path));
    }
    }
    class
    usersOnline {
    var
    $users_file;
    var
    $timeout;
    var
    $timestamp;
    var
    $ip;
    function
    usersOnline($file_, $timeout_) {
    global
    $_SERVER;
    $this->timestamp = time();
    $ip_ = ($_SERVER['REMOTE_ADDR'] != "" && preg_match("/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/", $_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : "non rilevato";
    $this->ip = $ip_;
    $this->users_file = $file_;
    $this->timeout = $timeout_;
    $this->newUser();
    $this->deleteUser();
    }
    function
    newUser() {
    $content = file_get_contents($this->users_file);
    $lines = file($this->users_file);
    foreach(
    $lines as $line) {
    $linea = explode("|", $line);
    if(
    $linea[0] == $this->ip) {
    return;
    }
    }
    $ip = $this->ip;
    $timestamp = $this->timestamp;
    $content .= "\n$ip|$timestamp";
    $this->writeFile($this->users_file, trim($content));
    }
    function
    deleteUser() {
    $file = file($this->users_file);
    foreach(
    $file as $key => $line) {
    $linea = explode("|", $line);
    $aa = $this->timestamp - $this->timeout;
    if(
    $linea[1] < $aa && $linea[0] != $this->ip) {
    unset(
    $file[$key]);
    }
    }
    $this->writeFile($this->users_file, trim(str_replace("\n\n", "\n", implode("\n", $file))));
    }
    function
    countVisits() {
    return
    count(file($this->users_file));
    }
    function
    writeFile($file, $content) {
    $fp = @fopen($file, "w");
    flock($fp, LOCK_EX);
    fwrite($fp, $content);
    flock($fp, LOCK_UN);
    fclose($fp);
    }
    }
    ?>
    l'ho scritta io :O
    Per usarla fai così:
    Codice PHP:
    <?php
    require ("file_della_classe.class.php");
    $users_online = new usersOnline("online.txt", 3*60);
    $count = $users_online->countVisits();
    echo
    $count > 1 ? "Ci sono $count visitatore online." : "Abbiamo $count visitatore online.";
    ?>
    dove "online.txt" è il file degli utenti e "3*60" è il timeout (che 3x60 => 3 minuti)
    Ciao
    Ultima modifica di kyogrepage : 26-12-2005 alle ore 19.42.24

  8. #8
    Guest

    Predefinito

    ma ogni quel tempo che cosa fa di preciso?

    controlla se tutti gli utenti sono ancora online?

    non si capisce bene

  9. #9
    Guest

    Predefinito

    questo script serve per vedere gli utenti online, cioè quanti utenti sono collegati al tuo sito!
    ogni 10 minuti, lo script controlla quanti user si sono aggiunti al tuo sito, e quanti si sono scollegati da esso...

  10. #10
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    x TurkoSoft: oggi sono pigro e non ho voglia di mettermi a provare... alla fine hai usato il codice di jostock o di kyogrepage?


    -- Aut Roma Aut Nihil!

  11. #11
    Guest

    Cool

    @ seneca: alla fine non ho usato ne l'uno ne l'altro(non mi serviva +)...cmq ti consiglio quello di Jostock(qnd l'ho provato funzionava)
    ...byex!

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da TurkoSoft
    questo script serve per vedere gli utenti online, cioè quanti utenti sono collegati al tuo sito!
    ogni 10 minuti, lo script controlla quanti user si sono aggiunti al tuo sito, e quanti si sono scollegati da esso...
    si grazie alla fine poi capendolo l'ho riadattato e riutilizzato per le mie necessità... volevo capire bene quand'è che toglieva e inseriva utenti in modo da fare alcune modifiche da altre parti nel mio db e se faceva al caso mio

    grazie ancora

Regole di scrittura

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