Probleme avec mon petit chat ... (dialogue en direct)

Eléphant du PHP | 183 Messages

20 oct. 2006, 23:20

bonjour,

J'ai un petit chat en fichier texte qui me permet de papoter avec mes inscrit

cepenant dans le chat jai un probleme j'ai limiter la taille du fichier a 1000 octet qui se sommme chat.dat et mes ligne inserer sont de cette forme :

Code : Tout sélectionner

$lib="<b>" . $time . " - " . $pseudo . "</b> dit : <br /><div style=\"margin-left:50px\">" . $_POST[text] . "</div>\n{*}";
cependant je voudrais pouvoir faire en sorte que seule 10 ligne soit inscrite dans le fichier texte et que quand yen a 1 de plus la plus ancienne des ligne soit supprimer ... avec une limitation a 150 caractere a chaque envoie comme j'ai actuellement :)

Car actullement si qlq inscrit des ligne le troncage se fait defois la ou il se faut pas et sa met des chose comme ceci dans le fichier chat.dat

Code : Tout sélectionner

<b>23:16:04 - pseudotest</b> dit : <br /><div style="margin-left:50px">le texte du chat bla bla bla </div> {*}<b>23:11:11 - pseudotest</b> dit : <br /><div style="margin-left:50px">le texte du chat bla bla bla</div> {*}<b>23:07:37 - pseudotest</b> dit : <br /><div style="margin-left:50px">le texte du chat bla bla bla</div> {*}<b>23:07:35 - pseudotest[ICI TEXTE TRONQUEZ DONC PAS BON!!!]
Donc ici a la dernire ligne vous voyer bien que le troncage s'est fait la ou il fallai pas ... donc c ce probleme surtou qui me trcasse je voudrai avoir toujours en sorte que les message soit tous entier et que le fichier chat.dat ne fasse jamais plus de 1000 ko (afin de ne pas avoir un fichier de 500 MO au bon de 2 an ;) )



Voila mes code

le script avec le formulaire :

Code : Tout sélectionner

<?php function fChat ($a) { ?> <center> <iframe src="chat.php?act=1" width="96%" height="500" name="chat" SCROLLING="no" border="0" frameborder="0"></iframe></center> <? $temp= "tmp/"; $fchat=$temp . "chat.dat"; $fcom=$temp . "auto.dat"; $pseudo=$a; $capa="1564"; @chmod($fchat, 0777); @chmod($fcom, 0777); $fp = @fopen($fcom,'rt'); if ($fp) $auto=@fgets($fp, $capa); @fclose($fp); ?> <script> function clearmsg(){ document.post.text.value=""; document.post.charsleft.value="150"; document.post.text.focus(); } function ShowCharsLeft(post) { maxLength = 150 if (post.text.value.length > maxLength) { post.text.value = post.text.value.substring(0,maxLength) charleft = 0 } else { charleft = maxLength - post.text.value.length } post.charsleft.value=charleft } </script> <form method="post" target="chat" name="chat" action="chat.php?act=1#sol"> <?php if ($auto=="1") { ?> <input type="text" name="charsleft" style="text-align: center;" value="150" size="3" readonly> <input type="hidden" size="15" value="<?php print $a; ?>" name="pseudo" /> <input type="text" size="80" name="text" onClick="text.value=''" onKeyUp="ShowCharsLeft(this.form);" wrap="physical" /> <input type="submit" value="Ajouter" name="b" /> <?php } else print "Dialogue interdit"; ?> <br /> </form> <? } ?>
et le fichier de la fonction chat

Code : Tout sélectionner

<body id="bg2"> <?php define('C_ABSOLU', '/le chemin en absolu'); $temp=C_ABSOLU . "tmp/"; $fchat=$temp . "chat.dat"; $fcom=$temp . "auto.dat"; $nompage="./"; $pseudo=$_POST[pseudo]; $capa="1024"; $refresh="180"; @chmod($fchat, 0777); @chmod($fcom, 0777); $fp = @fopen($fcom,'rt'); if ($fp) $auto=@fgets($fp, $capa); @fclose($fp); if($_POST[b] && $_POST[text] && $auto=="1") { $_POST[text]=str_replace("<","<",$_POST[text]); $_POST[text]=str_replace(">",">",$_POST[text]); $fp = @fopen($fcom,'rt'); if ($fp) $autoa=@fgets($fp, $capa); @fclose($fp); if($autoa=="1") { $fp = @fopen($fchat,"r"); $OldData = @fread($fp,$capa); @fclose($fp); } $time = @date("H:i:s"); $lib="<b>" . $time . " - " . $pseudo . "</b> dit : <br /><div style=\"margin-left:50px\">" . $_POST[text] . "</div>\n{*}"; $new="$lib$OldData"; $fd = @fopen($fchat,'w+'); @fwrite($fd, $new); @fclose($fd); } if($_GET[act]=="1") { print "<META HTTP-EQUIV=\"Refresh\" content=\"" . $refresh. ";\">\n"; $fp = @fopen($fchat,"r"); $Data = @fread($fp, $capa); @fclose($fp); $Data = @stripslashes($Data); $flip=explode("{*}",$Data); $nbflip=count($flip); $nbbflip=$nbflip-15; $a=array_reverse($flip); for($i=$nbbflip; $i<=$nbflip; $i++) { print_r($a[$i]); } exit; } ?>
_________
Fabien