- Home
- Categorie
- Coding e Sistemistica
- PHP
- script in php di messaggistica
-
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...
-
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
-
va be quello lo faccio io il resto del codice puoi aiutarmi???
-
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
-
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
-
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 forif($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]
-
che ne dite questo per ora e una prima parte del kodice
-
allora potreste aiutarmi in qualche modo anche con db in mysql basta che sia funzionante .. vi prego grazie mille..
-
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ì
-
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
-
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.
-
Concordo con Portaile84
Personalmente mi recupero i dati dalla sessione, anche perchè i *tracchiggi *di fino ancora non sono all'altezza di farli probabilmenteOT:
@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)
-
OT: Ci ragionerò un pò ma come ho già detto, ho un po' paura di fare figuracce eheh