Ciao a tutti.
Ho scaricato una chat semplice semplice, senza bisogno di registrasi, scritta in php. Ha un file htm un file di testo dove archivia le discussioni, un file di testo per archiviare i login, e 3 file in php: login, logout, e chat.
Prima di riportarli qui premetto che mi piacerebbe modificare i codici per poter ottenere:
- che venga scritta l'ora in cui un nuovo entrato posti il suo primo messaggio (invece ho solo l'ora di entrata e uscita dalla chat).
- purtroppo se uno non fà logout, ma chiude la finestra di explorer, non risulta mai uscito dalla chat nel file di testo. Si puo evitare?
- come si puo ottenere che un nuovo entrato non visualizzi tutto ciò che è stato 'chattato' prima della sua entrata?
c'è qualcuno che ha voglia di buttarci unn occhio?
riporto i codici
login.php:
[php] <?php
$chat_lenght = 100; // numero max di messaggi presenti nel file
$max_single_msg_lenght = 1000; // max caratteri di un singolo messaggio
$chat_file = "login.txt"; // nome del file di testo in cui scrivere
header("Expires: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
<?php
$nickname = str_replace ("\n"," ", $nickname);
$nickname = str_replace ("<", "<", $nickname);
$nickname = str_replace (">", ">", $nickname);
$nickname = stripslashes ($nickname);
?>
&login=
<?php
$date = date( "d.F.y. H:i:s T O");
settype($msg, 'string');
$lines = file($chat_file);
$l = nl2br(join('\n',$lines));
$lines = explode("<br />", $l);
if (count($lines) >= $chat_lenght) {
//echo count($lines)/2;
$diff = count($lines)/2 - $chat_lenght;
for($i=0; $i<$diff+2; $i++) {
array_pop($lines);
}
}
$msg = "$date - $nickname enters";
$countsleep = 0;
if ($nickname != ""){
array_unshift($lines, "$msg\r\r");
$fp = @fopen($chat_file, 'w', 't');
while ($fp === FALSE) {
++$countsleep;
clearstatcache();
usleep(rand(5,70));
$fp = @fopen($chat_file, 'w', 't');
if($countsleep>50) {
break;
}
}
if($fp) {
$fw = fwrite($fp, join('',$lines));
fclose($fp);
}
}
$lines = file($chat_file);
echo join('',$lines);
?>[/php]logout.php:
[php] <?php
$chat_lenght = 100; // numero max di messaggi presenti nel file
$max_single_msg_lenght = 1000; // max caratteri di un singolo messaggio
$chat_file = "login.txt"; // nome del file di testo in cui scrivere
header("Expires: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
<?
$nickname = str_replace ("\n"," ", $nickname);
$nickname = str_replace ("<", "<", $nickname);
$nickname = str_replace (">", ">", $nickname);
$nickname = stripslashes ($nickname);
?>
&login=
<?php
$date = date( "d.F.y. H:i:s");
settype($msg, 'string');
$lines = file($chat_file);
$l = nl2br(join('\n',$lines));
$lines = explode("<br />", $l);
if (count($lines) >= $chat_lenght) {
//echo count($lines)/2;
$diff = count($lines)/2 - $chat_lenght;
for($i=0; $i<$diff+2; $i++) {
array_pop($lines);
}
}
$msg = "$date - $nickname exits";
$countsleep = 0;
if ($nickname != ""){
array_unshift($lines, "$msg\r\r");
$fp = @fopen($chat_file, 'w', 't');
while ($fp === FALSE) {
++$countsleep;
clearstatcache();
usleep(rand(5,70));
$fp = @fopen($chat_file, 'w', 't');
if($countsleep>50) {
break;
}
}
if($fp) {
$fw = fwrite($fp, join('',$lines));
fclose($fp);
}
}
$lines = file($chat_file);
echo join('',$lines);
?>[/php]chat.php:
[php]<?php
$chat_lenght = 100; // numero max di messaggi presenti nel file
$max_single_msg_lenght = 1000; // max caratteri di un singolo messaggio
$chat_file = "chat.txt"; // nome del file di testo in cui scrivere
header("Expires: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
<?php
/* Modified By CgiXp Team : http://www.cgixp.tk /
/ Original script by Nicola Delbono [email protected] */
?>
<?
$nickname = str_replace ("\n"," ", $nickname);
$nickname = str_replace ("<", "<", $nickname);
$nickname = str_replace (">", ">", $nickname);
$nickname = stripslashes ($nickname);
$message = str_replace ("<", "<", $message);
$message = str_replace (">", ">", $message);
$message = escapeshellcmd($message);
?>
&output=
<?php
settype($msg, 'string');
$lines = file($chat_file);
$l = nl2br(join('\n',$lines));
$lines = explode("<br />", $l);
if (count($lines) >= $chat_lenght) {
//echo count($lines)/2;
$diff = count($lines)/2 - $chat_lenght;
for($i=0; $i<$diff+2; $i++) {
// elimina messaggi in eccesso
array_pop($lines);
}
}
$msg = stripslashes ($message);
if(strlen($msg)>$max_single_msg_lenght) {
$msg = substr($msg, 0, $max_single_msg_lenght);
}
$countsleep = 0;
if ($msg != ""){
// aggiunge nuovo messaggio
array_unshift($lines, "$nickname : $msg\r\r");
$fp = @fopen($chat_file, 'w', 't');
while ($fp === FALSE) {
++$countsleep;
clearstatcache();
usleep(rand(5,70));
$fp = @fopen($chat_file, 'w', 't');
if($countsleep>50) {
break;
}
}
if($fp) {
$fw = fwrite($fp, join('',$lines));
fclose($fp);
}
}
$lines = file($chat_file);
echo join('',$lines);
?>[/php]