• User Attivo

    ahhhhh ho capito per fare una cosa seria ci vorrebbe sicuramente sql! Il problema è capire come, sicuro ci deve stare il messaggio salvato in stringa in una tabella del db che memorizza nick a cui va il messaggio, nick di chi lo manda e la stringa col messaggio...


  • User

    se si riuscisse a fare anche in mysql ti ringrazierei solo che non so farlo io in qualche maniera io preferivo in txt perchè lavoro su hosting gratuito e nn e illimitato vedi te se per caso puoi aiutarmi..


  • User Attivo

    Non ho capito cosa vuoi fare in mysql eheh:D
    Spiegati vediamo un pò...


  • User

    vorrei fare la messagistica privata come questo forum ovviamente database come vuoi tu e che nel database salva NICKMITTENTE & MESSAGGIO NICK DESTINATARIO ..ok gazie sperio i essere chiaro..


  • User

    preferirei su un file di testo grazie..e vorrei fare anche in modo che dove ci sia scritto in chat QUANDO CE NE UNO NUOVO ESCE MP[1] IN CHAT E QUANDO POI E LETTO RITORNI A ZERO COSI MP[0] e tanto difficile...


  • User Attivo

    eh non è facile, cioè piu che difficile penso sia lungo il procedimento... qualcuno ne sa di più sull'argomento?

    shokkato il problema è che sono ancora agli inizi e sinceramente non sono all'altezza, la logica penso sia quella ma purtroppo dobbiamo trovare uno più esperto 😄


  • User

    va be quello lo faccio io il resto del codice puoi aiutarmi???


  • Consiglio Direttivo

    Ciao shokkato

    lo script già non è sempplice di suo a farlo con l'appopggio di un Database, farlo con un txt non è impossibile ma diventa comunque più complicato.

    A parte questo ti servirà:
    Invio messaggio -
    -Un form per l'invio del messaggio che trasmetta nick del mittente, nick del/dei destinatario/ri, testo e data (non l'hai citata ma credo che serva, no?;))
    -Uno script che recuperi i dati di cui sopra e li trasmetta al file o al db impostando un altro "campo" su 1 (non letto)

    Avviso messaggio in arrivo per il destinatario -
    -Un div che contiene uno script php, o un Js, che periodicamente controlli che nel txt/db esistano messaggi per il destinatario specifico con il campo di lettura impostato a 1 e nel caso mandare un alert o altro.

    Lettura del messsaggio -

    • Entrando in posta in arrivo si dovranno recuperare tutti i messaggi del destinatario specifico per visualizzarli e contemporaneamente alla lettura del messaggio bisognerà impostare il campo lettura a 0

    In maniera MOLTO semplice (e spero completa almeno per il minimo indispensabile) ti servirà questo se non ho dimenticato qualcosa 😉

    :ciauz:


  • User

    e ke palle mi trova un errore qualkuno sa aiutarmi ??

    Parse error: syntax error, unexpected T_STRING in /membri/shokkatochat/chat/processomp.php on line 106


  • User

    FORM PER L'INVIO MESSAGGIO PRIVATO

    [HTML]
    <?php
    session_start();
    header("Cache-control: private");
    if(@$_SESSION["login"]){
    if(isset($_GET['dest']))
    {$dest=$_GET['dest'];}
    else{$dest="";}

    ?>
    <head>
    <title>Shokkato&Kakà10</title>
    <body bgcolor=black link=C0C0C0 text=yellow>
    </head>
    <hr>
    <form name="form1" method="post" action="processomp.php">
    <p align="center">Invia MP </p>
    <hr>
    <p align="center">
    </p>
    <hr>
    <p align="center">Destinatario:<br>
    <input name="logindest" type="text" id="nickdest" value="<?php echo $dest; ?>">
    </p>
    <p align="center">Messaggio:<br>
    <textarea name="messaggio" value="" cols="14" rows="5" class="form"></textarea> <br>
    </p>
    <hr>
    <p align="center">
    <input type="submit" name="Submit" value="Invia">
    </p>
    <hr>
    <p align="center"><a href="casellamp.php">Casella Mp</a></p>
    </form>
    </body>
    </html>
    <?php
    }
    else header("location: index.php");
    ?>
    [/HTML]

    INSERIMENTO MESSAGGIO
    [HTML]
    <?php
    session_start();
    header("Cache-control: private");
    header ("cache-control: no-cache, must-revalidate");
    header ("pragma: no-cache");
    if(@!isset($_SESSION["login"]))
    {header("location: index.php"); exit;}
    if(!isset($_POST["messaggio"]))
    {header("location: chat.php"); exit;} ?>
    <head>
    <title>Shokkato</title>
    <body>
    </head>
    <?php
    $nick=$_SESSION['login'];
    $data= date('d/m/y H:i:s');
    #prendo i dati dal modulo
    $nickdest = trim(htmlspecialchars($_POST ["nickdest"]));
    $messaggio = $_POST ["messaggio"];
    $messaggio = trim(htmlspecialchars($_POST["messaggio"]));
    if($nickdest==$nick)
    {echo "<BR>NON PUOI INVIARE MESSAGGI PRIVATI A TE STESSO<A HREF="inviamp.php"> Indietro</A>";
    exit;}

    if(empty($messaggio))
    {echo "<BR> Campo Messaggio Vuoto <A HREF="inviamp.php"> Indietro</A>";
    exit;}

    $ok=0;
    //verifico se esiste l utente
    $var=@fopen("user.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    $var2=file("user.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    $i=count($var2);//conto gli elementi nell'array
    for($a=0; $a<$i; $a++){//uso il ciclo for per guardare nell'array
    $cercanick=explode("|",$var2[$a]);
    if($cercanick[0]==$nickdest)
    {$ok=1;
    break;
    }
    }//fine ciclo for
    if($ok==0)
    {echo "<BR> Nick Inesistente<A HREF="inviamp.php"> Indietro</A>";
    exit;}

    //controllo se il destinatario ha la casella piena
    $var=@fopen("messaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    $var2=file("messaggiprivatiuser.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    $i=count($var2);//conto gli elementi nell'array

    $numero=0;

    for($a=($i-1); $a>=0; $a--){//uso il ciclo for per guardare nell'array
    $cercanick=explode("|",$var2[$a]);
    if($cercanick[1]==$nickdest)
    {$numero=$numero+1;}
    }//fine ciclo for

    if($numero>=10)
    {echo "<p align='center'>$nickdest Casella Mp Piena</p></br>";
    echo "<p align='center'><a href='inviamp.php'>Torna Indietro</a></p>";
    exit;}

    $char=explode(' ',$messaggio);
    $testo=implode('',$char);

    $spam=array('http','www','alterv','.org','.it');
    $count=count ($spam);
    for($i=0; $i<($count+1); $i++)
    {
    $key=stristr($testo,$spam*);
    if(!empty($key))
    {
    $messaggioadminspam=$messaggio;
    $messaggio="SPAM";}

    }

    $nickmitt = $nick;

    #controllo che l'utente abbia inserito tutti i dati
    $errore=false;

    if (( $nickdest == "" ) || ( $messaggio == "" ) || ( $nickmitt == "" )) {
    $errore=true;
    }
    if ($errore) {
    echo "Errore nei campi";
    exit;
    }
    else{

    #inserisco il messaggio
    $variabile=$nickmitt."|".$nickdest."|".$messaggio."|".$data."|0;

    $var=@fopen("messaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$variabile."\n");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt

    //New mp nulli default per tutti
    $newmp=0;
    $newmpadmin=0;
    //recupero newmp
    $var=@fopen("newmessaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    $var2=file("newmessaggiprivatiuser.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    $i=count($var2);//conto gli elementi nell'array
    for($a=0; $a<$i; $a++){//uso il ciclo for per guardare nell'array
    $cercanick=explode("|",$var2[$a]);
    if($cercanick[0]==$nickdest)
    {$newmp=$cercanick[1];
    break;}
    }//fine ciclo for

    $newmpadmin=0;
    //recupero newmp
    $var=@fopen("newmessaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    $var2=file("newmessaggiprivatiuser.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    $i=count($var2);//conto gli elementi nell'array
    for($a=0; $a<$i; $a++){//uso il ciclo for per guardare nell'array
    $cercanick=explode("|",$var2[$a]);
    if($cercanick[0]==$admin)
    {$newmpadmin=$cercanick[1];
    break;}
    }//fine ciclo for

    $newmp=$newmp+1;
    $newmpadmin=$newmpadmin+1;

    #cancello newmp

    $righe = file("newmessaggiprivatiuser.txt");

    foreach ($righe AS $key => $riga)
    {
    list($a, $b) = explode("|", $riga);
    if ($a == $nickdest)
    unset($righe[$key]);
    }
    $fp = fopen("messaggiprivatiuser.txt", "w+");
    foreach ($righe AS $key => $riga)
    fputs($fp, $riga);
    fclose($fp);

    $righe = file("newmessaggiprivatiuser.txt");

    foreach ($righe AS $key => $riga)
    {
    list($a, $b) = explode("|", $riga);
    if ($a == $admin)
    unset($righe[$key]);
    }
    $fp = fopen("newmessaggiprivatiuser.txt", "w+");
    foreach ($righe AS $key => $riga)
    fputs($fp, $riga);
    fclose($fp);

    $variabile5=$nickdest."|".$newmp;
    $variabile6=$admin."|".$newmpadmin;

    $var=@fopen("newmessaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$variabile5."\n");//scrivo la variabile del form nel file .txt
    @fwrite($var,$variabile6."\n");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt ?>

    <p align="center">Messaggio inviato con successo a <?php echo $logindest; ?></p>
    <p align="center"><a href="chat.php">CHAT</a></p>
    </a></p>
    </body>
    </html>
    <?php

    }

    else
    {

    $variabile=$nickmitt."|".$nickdest."|".$messaggio."|".$data."|0;
    $var=@fopen("messprivateuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$variabile."\n");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt

    //New mp nulli default per tutti
    $newmp=0;
    $newmpadmin=0;
    //recupero newmp
    $var=@fopen("newmessaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    $var2=file("newmessaggiprivatiuser.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    $i=count($var2);//conto gli elementi nell'array
    for($a=0; $a<$i; $a++){//uso il ciclo for per guardare nell'array
    $cercanick=explode("|",$var2[$a]);
    if($cercanick[0]==$nickdest)
    {$newmp=$cercanick[1];
    break;}
    }//fine ciclo for

    $newmp=$newmp+1;

    $righe = file("newmessaggiprivatiuser.txt");

    foreach ($righe AS $key => $riga)
    {
    list($a, $b) = explode("|", $riga);
    if ($a == $nickdest)
    unset($righe[$key]);
    }
    $fp = fopen("newmessaggiprivatiuser.txt", "w+");
    foreach ($righe AS $key => $riga)
    fputs($fp, $riga);
    fclose($fp);

    $variabile5=$nickdest."|".$newmp;

    $var=@fopen("newmessaggiprivatiuser.txt","a+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$variabile5."\n");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt
    ?>

    <p align="center">Messaggio Privato Inviato a <?php echo $logindest; ?></p>
    <p align="center"><a href="chat.php">CHAT</a></p>
    </a></p>
    </body>
    </html>
    <?php
    }
    } //end else
    ?>
    [/HTML]


  • User

    che ne dite questo per ora e una prima parte del kodice


  • User

    allora potreste aiutarmi in qualche modo anche con db in mysql basta che sia funzionante .. vi prego grazie mille..


  • Consiglio Direttivo

    Beh, creati una tabella co i campi che ti servono

    id, mittente, destinatario, testo, data, letto

    ed una volta recuperati i dati li lavori così come hai fatto per l'esempio sopra ed alla fine per scriverlo sul Db utilizzi:
    [php]$sql="INSERT INTO table_pm (mittente, destinatario, testo, data, letto) VALUES ('$mittente', '$destinatario', '$testo', '$data', 1)"; // 1 equivarrà a non letto
    $query= @mysql_query($sql, $conn) or die (mysql_error());[/php]
    fatta sempliciotta la cosa dovrebbe andare così 😉


  • Bannato User Attivo

    a freddo ti dico come potresti utilizzare il db. è un esempio

    • tabella con: nickname mittente e nickname destinatario.. poi altro che non tratterò come messaggio data ecc..
    • la query salva tutto nel db
    • adesso al login del detinatario la sua query sarà cosi... select form messaggi Where id = $_GET[id], questa è un estrazione personalizata per ogni singolo utente.non è difficilissimo creare applicazioni con mysql, basta applicarsi un attimo ed informarsi, magari con un ottimo manuale risolvi ogn iccolo problema.

    il mio intervento è voluto solamente per darti una idea non per risolverti il problema, a volte basta poco per accendere la lampadina.. spero di esser riuscito nell'intento. ciao e buon lavoro


  • Bannato User Attivo

    Se posso esprimere la mia:

    Trattandosi di una sezione privata, dove le transazioni devono riguardare solo destinatario e mittente reale (detto in parole povere: cani e porci non devono poter visualizzare messaggi altrui) io eviterei l'estrazione dei messaggi dove l'Id dell'autore viene preso tramite una APERTISSIMA _GET

    Piuttosto, visto che sicuramente questa sezione sarà accessibile esclusivamente dietro login, io utilizzerei un COOKIE e vari controlli per verificare che effettivamente l'utente possa richiedere ciò che chiede al sistema.

    Ad esempio facendo un paragone parallelo fra id della sessione memorizzata da qualche parte e id dell'utente associato a quella sessione...

    Le soluzioni sono molte... ma una _GET la trovo poco consigliabile. 😄


  • Consiglio Direttivo

    Concordo con Portaile84 😉
    Personalmente mi recupero i dati dalla sessione, anche perchè i *tracchiggi *di fino ancora non sono all'altezza di farli probabilmente 😄

    OT:
    @Portaile84, per mia curiosità e credo anche di altri, ti andrebbe di aprire un thread per spiegare un buon metodo di verifica e controllo per come descrivi? (sono faccia tosta lo so :D)


  • Bannato User Attivo

    OT: Ci ragionerò un pò 😛 ma come ho già detto, ho un po' paura di fare figuracce 😄 eheh