Salve a tutti.
Da un po' di tempo sto lavorando su una chat scaricata da freephp: LSPhpChat1.1
Sono riuscito a modificarla in varie parti, inserendo messaggi speciali, modificandola nella configurazione generale e quant'altro finora mi sia stato possibile fare.
Una cosa che non sono riuscito a fare è però quella di insrire una stringa che mi permetta di inviare messaggi privati agli utenti presenti nella chat. Messaggi privati che però siano visualizzabili all'interno della pagina stessa e non in una form a parte.
Qualcosa che compaia solo all'utente destinatario del messaggio e che si presenti più o meno in questo modo:
-Messaggio privato da Tizio-
Ehi ciao come stai?
Quindi sostanzialmente qualcosa che si sviluppi su due righe: quella superiore che contanga la specifica "-Messaggio privato da $nick-"; quello inferiore in cui compare il contenuto del messaggio, privo di nick, di orario e quant'altro. Solo il testo.
Se fosse possibile non mi dispiacerebbe che anche il mittente del messaggio possa visualizzare quanto ha scritto. In questo modo può seguire meglio la conversazione e rendersi conto di quel che ha scritto. Una cosa tipo:
-Hai scritto a Tizio-
Ehi ciao come stai?
Il destinatario visualizzerà il primo messaggio, il mittente il secondo. Ed entrambi potranno continuare a seguire la chat senza bisogno di ricorrere ad altre finestre aggiuntive.
Poi un'ultima cosa.
LsphpChat ha una modalità di scrolling e aggiornamento del testo in senso ascensionale. Quindi i nuovi messaggi tendono a salire anzicché scendere e l'aggiornamento automatico mi riporta sempre alla parte superiore della pagina.
Io invece vorrei invertire il flusso e far sì che il testo scorra verso il basso e che l'aggiornamento avvenga a fondo pagina e non a inizio pagina.
Tempo fa boomboom69 mi consigliò di sostituire questa stringa:
codice:
$contenuto = $testa.$nuovo_mex.$vecchi_mexx.$coda;
con questa:
codice:
$contenuto = $testa.$vecchi_mexx.$nuovo_mex.$coda;
ed effettivamente in questo modo il testo si succede a scendere e non a salire. L'unico problema è che l'aggiornamento riporta la pagina, creando problemi con l'uso della chat.
Ho provato a modificare le stringhe che mi sembravano più pertinenti, ma non ho mai ottenuto risultati. Sapreste darmi qualche consiglio?
Per comodità riporto tutto il codice della chat, magari voi riuscite a vedere meglio di me dove mettere mano.
Grazie a tutti
codice:
<?php
//--Srtart code --//
////////////questa varibile si può modificare//////////////////////////
require("config.inc.php");
//////////////////////////////////
/*Non è necessario modificare nient'altro*/
///////////////////////////////////
$ora = date("H:i:s");
$ip = getenv(REMOTE_ADDR);
$now = time();
$testa = "<html><head><meta http-equiv=\"refresh\" content=\"$time_refresh\"></head><body bgcolor=\"$bgcolor\">\n";
$coda = "<!--LsPhpChat http://www.latoserver.com--></body></html>\n";
$err_mess = "Impossbile scrivere o trovare il file $pat.
Assicuarsi che la cartella abbia i permessi di scrittura attivi (CHMOD 777) o verificare la variabile ".'$path';
if ($messaggio == $special_word){
clear();
}
if (!empty($nick) && !empty($messaggio)){
$vecchi_mex = @file($path) or die ($err_mess);
$nline = count($vecchi_mex);
for ($i = 1; $i < $max_mex; $i++){
if ($i < $nline-1){
eregi("(.*)",$vecchi_mex[$i],$nick_old);
eregi("",$vecchi_mex[$i],$ip_old);
eregi("",$vecchi_mex[$i],$time_out);
if ($nick == $nick_old[1] && $ip != $ip_old[1]){
$nick = $nick."_".mt_rand(0,10);
}
//echo $time_out[1];
if ($time_out[1]+($time_limit * 60) > $now ){
$vecchi_mexx .= $vecchi_mex[$i];
}
}
}
if (!isset($lschat) || $lschat != $nick){
setcookie("lschat",$nick,time()+360000);
}
$messaggio = htmlspecialchars($messaggio);
while (list($char,$rep) = each($emotion) ){
$messaggio = str_replace($char, "<img src=\"".$rep."\">", $messaggio );
}
if ($moderate == "y"){
for ($i = 0; $i < count($badwords);$i++){
$messaggio = ereg_replace (strtoupper($badwords[$i]), str_repeat("x",strlen($badwords[$i])), strtoupper($messaggio));
}
$messaggio = strtolower($messaggio);
}
//Per il corretto funzionamento del programma lasciare inalterate le sringe di commento////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$nuovo_mex = "<font face=\"$font_face\" size=\"$font_size\" color=\"$fontcolor\">[$ora] - $nick:</font> <font face=\"$font_face\" size=\"$font_size\" color=\"$font_color\">".$messaggio."</font>
\n";
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$contenuto = $testa.$nuovo_mex.$vecchi_mexx.$coda;
$contenuto=stripslashes($contenuto);
$fp = @fopen($path,"w") or die ($err_mess);
$len = strlen($contenuto);
fwrite($fp,$contenuto,$len);
fclose($fp);
header("Location: $form_file");
}else{
header("Location: $form_file");
}
function clear(){
global $testa;
global $path;
global $coda;
global $form_file;
$contenuto = $testa.$coda;
$contenuto = stripslashes($contenuto);
$fp = @fopen($path,"w");
$len = strlen($contenuto);
fwrite($fp,$contenuto,$len);
fclose($fp);
header("Location: $form_file");
exit();
}
/*--End code--*/
?>
PS. Per ragioni di spazio qui non ho riportato le stringhe di commento relative alla licenza d'uso della chat, ma nel file originale le ho lasciate intatte.