Dunque, dato che la chattata è solitamente molto lunga, ho preferito metterla in un iFrame in modo da poterla fare scorrere in automatico verso il basso, ovvero verso l'ultimo messaggio.
Attenzione, creo 2 file
message.txt
message.php
Nel primo metterò semplicemente il testo, nel secondo il codice che poi mi restituirà la pagina in iFrame.
Codice PHP:
//Definisco l'iframe
print "<iframe src=\"messages.php\" width=\"820\" height=\"420\">";
print "</iframe></div>\n";
//Modulo di invio messaggio
echo <<<FORM1
<font size="-1"> //questo puoi toglierlo, l'ho messo per esigenze mie!
<form name="chat" method="post" action="questofile.php">
<input type="text" name="message" size="70">
<input type="submit" value="Invia"></form></font>
FORM1;
//HEADER E FOOTER
$header = "<html><head>\n".
//faccio il refresh ogni 10 secondi
"<meta http-equiv=\"refresh\" content=\"10\">\n".
"</head>\n".
//ad ogni refresh la pagina si sposta verso il basso, ovvero verso
//l'ultimo messaggio, così:
"<body bgcolor=\"#B9DFFF\" text=\"#000000\" onload=\"location.href='#bottom'\">\n";
//riferimento del 'location', deve stare in fondo alla pagina
$footer = "<a name=\"bottom\"> </a>\n</body>\n</html>";
//PREPARAZIONE MESSAGGIO
$message = htmlspecialchars($message);
$message = trim($message);
$new_message = "<font size=\"2\" color=\"#000000\">".
//se vuoi mettere l'ora accanto al nick in ogni messaggio
"[$variabiletime -]".
"<font size=\"3\" color=\"#000080\">[b] $nick: [/b]".
"<font color=\"#000000\">$message</font>
";
//SCRIVE SU FILE
$filename = "messages.txt";
//se il messaggio è vuoto non lo invia
if ($message != ""){
$open_text = fopen($filename, "a");
//[U]"a"[/U] apre in scrittura senza cancellare, posizionandoti direttamente alla fine del testo presente
//scrivo il nuovo messaggio in fondo alla pagina, ovvero per ultimo
fputs($open_text, $new_message);
fclose($open_text);
}
//una volta aggiunto il nuovo messaggio, riapro il file in lettura,
//per prenderne tutto il contenuto
$fd = fopen ($filename, "r");
//metto nella variabile $new_text tutto il contenuto del file
$new_text = fread ($fd, filesize ($filename));
fclose ($fd);
//adesso apro in scrittura il file message.php (e non .txt!)
//Quando apri un file con "w" puoi scriverci dentro, ma questo ti
//cancellerà tutto il testo che era precedentemente presente
//nel file! Quindi...
$open_file = fopen("messages.php", "w");
//Riscrivo l'Header
fputs($open_file, $header);
//Scrivo il nuovo testo (intero, non solo $new_message!)
fputs($open_file, $new_text);
//Riscrivo il Footer
fputs($open_file, $footer);
fclose($open_file);
C'è un problema che però non ho risolto. I caratteri
'
"
\
mi vengono scritti con la barra, ovvero
\'
\"
\\
Se riesci a risolvere questa situazione (tu o chiunque altro) fammelo sapere. Sono sicuro che è una cavolata... ma io programmo in php da due settimane, comprendimi!