Visualizzazione risultati 1 fino 12 di 12

Discussione: Chat messaggio privato

  1. #1
    Guest

    Predefinito Chat messaggio privato

    Ciao a tutti sto creando una chat,
    vorrei fare in modo che due utenti potessero inviarsi un messaggio tramite la chat ma solo loro possono vedere i messaggi che si scambiano...

    pensavo una cosa del genere...
    [ventriloquo=paolo]Ciao[/ventriloquo]

    cioè solo l'utente di nome paolo vede il messaggio ciao...
    come posso fare secondo voi...^^

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Bhe... io credo che sarebbe più facile se il messaggio lo impostassi in questo modo:

    Codice:
    @paolo@ciao
    Non saprei come fare nel modo in qui te scrivi il messaggio, io in questo modo farei cosi:

    Codice PHP:
    <?php
    /* Produco un'array ( con explode() e separatore @ ) dopo aver recuperato il messaggio */
    $arr = explode("@", $messaggio );

    // Prendo il secondo elemento, il primo se non sbaglio e vuoto.
    $nome = $arr[1];

    /* Controllo se il $nome corrisponde con la propria sessione ( se corrisponde il messaggio e privato e per te ) */
    if ($nome = $_SESSION["nome"]) {
    // Visualizzo l'ultimo elemento ( $arr[2], contenente il messaggio )
    }
    ?>
    Non lo provato, ma dovrebbe andare.
    Ultima modifica di sevenjeak : 24-11-2010 alle ore 17.18.59

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    non funziona perché devo fare che mi visualizza tutti i messaggi giusto, ma i messaggi che iniziano come dici tu lo deve vedere solo quel utente...
    @paolo@ciao

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Scusa, mi sono sbagliato, nell'ultima if, dove c'è scritto appunto che il messaggio lo deve vedere solo paolo metti un doppio uguale ( == ) al posto dell'uguale ( = ).

    Ovviamente, devi usare le sessione, e paolo deve avere una sessione registrato contenente il suo nome, identico al nome contenente dopo la prima @ nel messaggio.

    P.S.: Se dopo questo il codice non funziona ancora posta il tuo codice qui.
    Ultima modifica di sevenjeak : 25-11-2010 alle ore 11.59.22

    Sevenjeak
    Software developer and much more

  5. #5
    Guest

    Predefinito

    Ti posto il codice ok:

    Codice PHP:
    <?php
    include 'impostazioni/config.php';

    $messaggi = mysql_query("SELECT * FROM chat_messaggi");
    while(
    $messaggio = mysql_fetch_array($messaggi)){
    $utenti_online = mysql_fetch_array(mysql_query("SELECT nickname,livello FROM chat_utenti WHERE nickname = '$messaggio[1]'"));
    if(
    $messaggio[1] == 'Chat'){ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $messaggio[3]; ?></div>
    <?php }else{
    $livello = mysql_query("SELECT nickname,livello FROM chat_admin WHERE nickname = 'Admin'");
    $livello2 = mysql_fetch_array($livello);
    $arr = explode("@",$messaggio[3]);
    $nome = $arr[1];
    if(
    $nome == $_SESSION["nickname"]){ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$arr[2])); ?></div>
    <?php }else{ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$messaggio[3])); ?></div>
    <?php }}} ?>

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Non saprei che dire, il codice a me mi pare apposto, forse ho sbagliato io a scrive qualche cosa, hai provato a vedere cosa ti stampa $arr[1]?

    Se ti viene stampato il nome e sicuro che sia identico ( mailscole e minuscole uguali ) della sessione nickname?

    Nel file che include nella prima riga hai aperto le sessioni vero?

    Sevenjeak
    Software developer and much more

  7. #7
    Guest

    Predefinito

    Credo di aver capito l'errore, ma il problema che non so come risolverlo...
    ti spiego se un utente invia un messaggio privato es.
    @Paolo@ciao
    se l'utente si chiama Paolo visualizza ciao, se l'utente non si chiama Paolo visualizza
    @Paolo@ciao
    capito il problema sta qua credo...
    Codice PHP:
    <?php
    if($nome == $_SESSION["nickname"]){ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$arr[2])); ?></div>
    <?php }else{ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$messaggio[3])); ?></div>
    <?php }}} ?>
    come posso risolvere questa cosa...

  8. #8
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Non saprei,forse mi sono sbagliato io, hai provato ha stampare la variabile $nome e ha vedere se contiene lo stesso valore della sessione?
    Ultima modifica di sevenjeak : 28-11-2010 alle ore 20.19.17

    Sevenjeak
    Software developer and much more

  9. #9
    Guest

    Predefinito

    funziona perchè lo provato...
    Ma non funziona la cosa che solo lui lo può vedere...
    Qualcuno sa darmi una mano...

  10. #10
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    L'array $arr e la sessione nickname cosa contiene?

    Sevenjeak
    Software developer and much more

  11. #11
    Guest

    Predefinito

    la sessione nickname, contiene il nome del utente...
    $arr[1] il nome del utente
    $arr[2] il messaggio per l'utente
    come mi ha detto tu di fare

  12. #12
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Mmm.. mi pare strano, prova modificando il codice cosi:

    Codice PHP:
    include 'impostazioni/config.php';

    $messaggi = mysql_query("SELECT * FROM chat_messaggi");
    while($messaggio = mysql_fetch_array($messaggi)) {
    $utenti_online = mysql_fetch_array(mysql_query("SELECT nickname,livello FROM chat_utenti WHERE nickname = '$messaggio[1]'"));
    if($messaggio[1] == 'Chat'){ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $messaggio[3]; ?></div>
    <?php }else{
    $livello = mysql_query("SELECT nickname,livello FROM chat_admin WHERE nickname = 'Admin'");
    $livello2 = mysql_fetch_array($livello);
    $arr = explode("@",$messaggio[3]);
    if(
    $arr == $_SESSION["nickname"]){ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$arr[2])); ?></div>
    <?php }else{ ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font>
    <font class="livello<?php echo $livello2[2]; ?>"><?php echo $messaggio[1]; ?></font>: <?php echo str_replace($emoticons,$images,preg_replace($pattern,$replacements,$messaggio[3])); ?></div>
    <?php }}} ?>
    Se questo non funziona non saprei proprio, anche perché mi pare strano che tutto ciò non funziona, visto che la if si esegue solamente quando $arr[1] e la sessione nickname sono uguali, come effettivamente hai detto di averli te.

    EDIT:

    Credo di aver capito il problema, credo che il problema sia chè, ti ho fatto scrivere, che i messaggi privati, vengono solo considerati tali ( come messaggi private ) se l'utente entra come admin.

    Premetto che il codice era parecchio impicciato, senza offesa naturalmente ( non ci capivo quasi niente ), ma prova a modificare in questo modo:
    Codice PHP:
    <?php
    include 'impostazioni/config.php';

    $messaggi = mysql_query("SELECT * FROM chat_messaggi");
    while(
    $messaggio = mysql_fetch_array($messaggi)) {
    $utenti_online = mysql_fetch_array(mysql_query("SELECT nickname,livello FROM chat_utenti WHERE nickname = '$messaggio[1]'"));
    if(
    $messaggio[1] == 'Chat'){
    $arr = explode("@",$messaggio[3]);
    $nome = $arr[1];
    if(
    $arr[1] == $_SESSION["nickname"]){
    ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $arr[2]; ?></div>
    <?php
    }else {
    ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $messaggio[3]; ?></div>
    <?php
    }
    }else {
    $livello = mysql_query("SELECT nickname,livello FROM chat_admin WHERE nickname = 'Admin'");
    $livello2 = mysql_fetch_array($livello);
    if(
    $arr[1] == $_SESSION["nickname"]){
    ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $arr[2]; ?></div>
    <?php
    }else {
    ?>
    <div><font class="data">(<?php echo date("H:i:s",$messaggio[4]); ?>)</font> <?php echo $messaggio[3]; ?></div>
    <?php
    }
    }
    }
    ?>
    Ultima modifica di sevenjeak : 01-12-2010 alle ore 23.01.04

    Sevenjeak
    Software developer and much more

Regole di scrittura

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