• User Attivo

    Fare in modo che appaiono i nomi degli utenti on-line nella mia chat

    ciao volevo sapere come potrei fare per far si che un utente che fa il log-in nella chat appaia il suo nome che è on-line, la mia chat si basa su foglio di testo ed è senza database e altresì è senza logout, come posso fare, pensavo di usare come riferimento l'indirizzo ip o ppure cosa mi consigliate?


  • User Attivo

    @giulio3x said:

    ciao volevo sapere come potrei fare per far si che un utente che fa il log-in nella chat appaia il suo nome che è on-line, la mia chat si basa su foglio di testo ed è senza database e altresì è senza logout, come posso fare, pensavo di usare come riferimento l'indirizzo ip o ppure cosa mi consigliate?

    se usi l ip funzionerebbe credo solo per chi ha indirizzi ip statici..


  • User Attivo

    @carlitos1982 said:

    se usi l ip funzionerebbe credo solo per chi ha indirizzi ip statici..

    ah dici? e allora cosa mi consiglieresti di fare, hai qualche suggerimento?


  • ModSenior

    L'ip cambia solo quando riconnetti ad internet, quindi non si presenta il problema, ma dovresti rpendere i nick delle persone che hanno aggiornato di recente e usando un file di testo non mi sembra nemmeno facile...


  • User Attivo

    @Thedarkita said:

    L'ip cambia solo quando riconnetti ad internet, quindi non si presenta il problema, ma dovresti rpendere i nick delle persone che hanno aggiornato di recente e usando un file di testo non mi sembra nemmeno facile...

    mi aiutate a scrivere del codice, mi piacerebbe tanto fare questa cosa😊


  • User Attivo

    mi aiutate a fare questa cosa? :bho:


  • User

    Ciao,
    Volevo provare ad aiutarti ma volevo capire inanzitutto che dati hai di base. Leggevo che un utente si logga ma non si slogga? cioè si autentifica per i suoi messaggi intendi giusto? Il nome dell'utente poi che si è loggato: vuol dire che hai una lista di utenti registrati nel sito?
    Cmq io farei cosi:
    File:

    1. testo_chat.txt
    2. post_utenti.txt

    Quando un utente posta qualcosa salvi il suo testo nel file che contiene i log della chat (testo_chat.txt), al tempo stesso dentro a "post_utenti.txt" salvi un record che ti identifica che quell'utente ha postato a tot ora (vedi fine post per esempio concreto). Ogni qual volta un utente posta si avvia un metodo che controlla la data e ora dell'ultimo post e se questa è > di un certo lasso di tempo cancelli il record. Il metodo deve ovviamente controllare data e ora di tutti gli utenti che trova dentro il file "post_utenti.txt".In questo modo il file conterrebbe solo gli utenti "online" (piu che altro gli utenti che han postato qualcosa nel lasso di tempo <= del lasso di tempo deciso da te). Il problema resta che se non si posta piu per un bel po' non viene chiamato il metodo di controllo e puo' sembrare che ci siano tanti utenti attivi anche se in realtà non cè nessuno 😃

    post_utenti.txt : immagino un file del tipo
    UTENTE | DATA

    Solo un'idea! Penso che con l'uso di altri linguaggi si possa fare qualcosa di molto piu serio cmq per provare va bene 😃

    Ciao!


  • Bannato User Attivo

    realizza il tuo sito con mkportal cms, è possibile in modo molto facile e potrai vedere anche la posizione dei tuoi utenti, non solo se sono in chat, ma anche se stanno controllando altre pagine o moduli.


  • User Attivo

    a me interesserebbe fare uscire sul sito il nome degli utenti connessi...
    alla fine credo sia lo stesso che per te riguardo la chat...


  • User Attivo

    @temp said:

    CiaoVolevo provare ad aiutarti ma volevo capire inanzitutto che dati hai di base. Leggevo che un utente si logga ma non si slogga? cioè si autentifica per i suoi messaggi intendi giusto? Il nome dell'utente poi che si è loggato: vuol dire che hai una lista di utenti registrati nel sito?
    Ciao!

    ciao e grazie guarda di php poco ne so per le tue domande allora si l'utente si logga ma poi non c'è il logout e si autentifica per i suoi messaggi che scrive... per via della lista si la lista deigli utenti è contenuta nel file dei dati dell'utente che contiene il nick la password e altri dati, leggendo quello che vuoi fare tu, mi pare la stessa cosa più o meno che esiste già nella mia chat solo che invece di comparire il nome delgli utenti mi appare solo il numero degli utenti on-line, adesso mi piacerebbe anche avere il nome degli utenti come si fa?: ti posto intanto il file online.txt

    [php]<html>
    <head>
    <title>Persone online</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="javascript">
    function apri(nick_ut)
    {
    window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=280, left=200");
    }
    </script>
    </head>
    <body bgcolor="#E7E9FA">
    <?
    include("config.php");
    $ar_online=file($file_online);
    $dim=count($ar_online);
    for ($i=0;$i<$dim;$i++)
    {
    $ut_online=chop($ar_online*);
    $utente=explode("|",$ut_online);
    $nick_ut=$utente[0];
    $data=$utente[1];
    $orario=$utente[2];
    $parti_data=explode("/",$data);
    $giorno=$parti_data[0];
    $mese=$parti_data[1];
    $anno=$parti_data[2];
    $parti_orario=explode(":",$orario);
    $ora=$parti_orario[0];
    $minuti=$parti_orario[1];
    $secondi=$parti_orario[2];
    $ts=mktime($ora,$minuti,$secondi,$mese,$giorno,$anno);
    $diff=time()-$ts;
    $min_trascorsi=$diff/60;
    if ($min_trascorsi<$min_online)
    {
    $array_on[]=$nick_ut;
    }
    }
    $ar_unico=array_unique($array_on);
    $dim_unico=count($ar_unico);
    echo "<font face="Verdana" size="1">$dim_unico persone online</font>";
    ?>
    </body>
    </html>
    [/php]


  • User

    Ciao 😃
    Mi pare che nel file alla fine vedo un
    $array_on[]=$nick_ut;
    Cioè $array_on è un array che contiene una lista di utenti. Ok allora se cosi è vero per test prova questo codice
    Prima o in mezzo all 'echo metti
    print_r($array_on);
    Questo metodo stampa e visualizza bene tutto l'array. Se dentro ci trovi gli utenti online il gioco è fatto! fai un ciclo for che per ogni utente nell'array stampa a video il suo nick!

    Ciao 😃


  • User Attivo

    ho controllato...


  • User Attivo

    @temp said:

    Ciao 😃
    un ciclo for che per ogni utente nell'array stampa a video il suo nick!

    Ciao 😃

    si è come dici tu....
    ehm come faccio a farlo quindi? mi aiuteresti? :mmm:

    c'è da dire però che questo modo non è che mi vada molto a genio perchè quando un utente scrive il messaggio ok è online però poi se rimane online ma non scrive più me lo da non online però, come posso fare?


  • User Attivo

    Beh ma almeno non fa refresh di una pagina come lo vedi? puoi sempre condizionare l'individuazione non alla scrittura di qualcosa ma al caricamento della pagina e cmq poi l'unico modo per tenerne traccia è impostare una sorta di time_out passato il quale l'utente si presume off-line, time-out che viene resettato ad ogni nuova cosa che scrive... poi dovresti "captare" in qualche modo quando se ne va...

    Senza un database tutta sta roba la devi salvare o in una sessione (forse la cosa migliore) o come si diceva nel log.txt, ma è un discreto sbatti... è assolutamente da escludere che implementi una chat open source già attrezzata?

    keiske


  • User Attivo

    @Privacy-Impresa said:

    Beh ma almeno non fa refresh di una pagina come lo vedi? puoi sempre condizionare l'individuazione non alla scrittura di qualcosa ma al caricamento della pagina e cmq poi l'unico modo per tenerne traccia è impostare una sorta di time_out passato il quale l'utente si presume off-line, time-out che viene resettato ad ogni nuova cosa che scrive... poi dovresti "captare" in qualche modo quando se ne va...

    keiske

    eh mi piacerebbe fare come dici ma il php non lo conosco, come devo fare per condizionare la cosa al caricamento della pagina e poi non potrei tenere conto dell'ip per vedere quando c'è o non è on-line


  • User Attivo

    Tutto dipende da cosa hai a disposizione... tecnicamente hai il supporto php? se non ce l'hai è anche inutile provare a farci qualcosa... se ce l'hai cercando un po' in rete gli script buoni per fare tutte queste cose li trovi e qui magari trovi qualche aiuto per capirci qualcosa in più...

    keiske


  • User

    Per risponderti:

    echo "<font face="Verdana" size="1">$dim_unico persone online</font>";
    Sostituisci con
    echo "<font face="Verdana" size="1">Online:";
    for($i=0;$i<count( $array_on);$i++)
    {
    echo $array_on*. ",";
    // Oppure se l'array è multidimensionale metti
    // echo $array_on*[Z];
    // con al posto di Z l'indice corretto in modo che esca il nick
    }
    echo "</font>";

    Poi discorso utente loggato che non posta : ad ogni pagina caricata nel tuo sito da un utente loggato dovresti fare il controllo se tale utente è loggato o meno..anche pagine dove cè solo da leggere nn solo la chat. Macchinoso ma mi viene in mente questo per ora.
    Per logout mi viene in mente un metodo java "OnUnload" che si innesca se un utente cambia pagina: potresti usarlo per capire quando gli utenti se ne vanno dal tuo sito e in quel caso sloggarli.


  • User Attivo

    @temp said:

    Poi discorso utente loggato che non posta : ad ogni pagina caricata nel tuo sito da un utente loggato dovresti fare il controllo se tale utente è loggato o meno..anche pagine dove cè solo da leggere nn solo la chat. Macchinoso ma mi viene in mente questo per ora.
    Per logout mi viene in mente un metodo java "OnUnload" che si innesca se un utente cambia pagina: potresti usarlo per capire quando gli utenti se ne vanno dal tuo sito e in quel caso sloggarli.

    e sapresti indicarmi come fare questa cosa?, ti dico il login lo farei solo sulla chat se mi aiuti ti ringrazio davvero tantissimo!:)


  • User Attivo

    Beh dipende da come fai il login... se il login lo fai memorizzando delle variabili di sessione basta che controlli se la sessione è attiva per quell'utente e esegui un'azione (mostri un bollino verde ad esempio) ma forse la complicazione è che le varibili di sessione (come i cookie) sono solo per chi è al pc... dovresti appoggiarti a un database mi sa, flaggando l'utente online e caricando chi è flaggato nella lista dei connessi...

    keiske


  • User Attivo

    @Privacy-Impresa said:

    Beh dipende da come fai il login... se il login lo fai memorizzando delle variabili di sessione basta che controlli se la sessione è attiva per quell'utente e esegui un'azione (mostri un bollino verde ad esempio) ma forse la complicazione è che le varibili di sessione (come i cookie) sono solo per chi è al pc... dovresti appoggiarti a un database mi sa, flaggando l'utente online e caricando chi è flaggato nella lista dei connessi...

    keiske

    questo è il codice che riguarda il login alla chat:
    [PHP]<?
    include("config.php");
    $nick=$_GET['nick'];
    $nick=strtolower($nick);
    $nick=stripslashes($nick);
    $password=$_GET['password'];
    $password=strtolower($password);
    $password_cr=crypt($password,$nick);
    $password_cr=str_replace("|","*",$password_cr);

    if (!(file_exists($file_reg)))
    {fopen($file_reg,"w");}
    $utente=$nick."|".$password;
    $utente_ok=0;
    $ut_regist=file($file_reg);
    $dim_reg=count($ut_regist);
    for ($i=0;$i<$dim_reg;$i++)
    {
    $dati_ut=explode("|",$ut_regist*);
    $nick_ut=$dati_ut[0];
    $pass_ut=$dati_ut[1];
    if (($nick==$nick_ut) & ($password_cr==$pass_ut)) $utente_ok=1;
    }
    if ($utente_ok==1)
    {
    if (!(file_exists($file_online)))
    {fopen($file_online,"w");}
    $dim_file=filesize($file_online);
    $dim_max=14000; // Dimensione in bytes massima per ricreare il file online
    if ($dim_file>$dim_max)
    fopen($file_online,"w");
    $ar_orario=getdate();
    $ora=$ar_orario['hours'];
    $minuti=$ar_orario['minutes'];
    $secondi=$ar_orario['seconds'];
    if (strlen($minuti)==1) $minuti="0".$minuti;
    if (strlen($secondi)==1) $secondi="0".$secondi;
    $data=date("d/m/Y");
    $orario=$ora.":".$minuti.":".$secondi;
    $utente=$nick."|".$data."|".$orario."\n";
    $ins_online=fopen($file_online,"a+");
    fputs($ins_online,$utente);
    fclose($ins_online);
    }
    else
    {
    echo "<center><b>E' STATO INSERITO<br>UN NICK O UNA PASSWORD<br>NON
    CORRETTI,<br>OPPURE NON SEI<br>ANCORA REGISTRATO.</b>b></i> ";
    echo "<a href="javascript:history.back();"><br><br>TORNA AL LOGIN</a></center>";
    exit;
    }
    ?>[/PHP]