Indviklet problem med chat!
Jeg er igang med at tilpasse en chat og mangler én side.Jeg får alle chat-beskeder langt ind i filen history.dat og i den kan der forekomme tegnet ::-> hvor der før tegnet vil være et id og efter tegnet vil der være en chat-besked.
Dette bruges til personlige beskeder og skal derfor kun vises til vedkommende der har id'et som findes før tegnet.
Når man er logget ind vil ens id findes i en session.
Mit problem er den nedenstående "meget lange og uoverskuelige" kode. Det jeg prøver på er at holde en connection åben så chatten fungerer uden refresh osv. Altså en slags server-push tek.
Er der nogen der kan ordne koden så den vil fungerer!
Når jeg kører den så går browseren bare i stå.
-------------Kode--------------------------------
<script language='JavaScript' type='text/javascript'>
function move() {
self.scrollBy(0,999999); }
</script>
</head>
<body>
<?
set_time_limit(0);
ignore_user_abort(1);
ob_implicit_flush(1);
$history = "history.dat";
function glmsg() {
global $history;
$charr = file($history);
$last_msgc = count($charr)-1;
$last_msg = $charr[$last_msgc];
return trim($last_msg); }
function cmpmsg($inp) {
global $history;
$charr = file($history);
$last_msgc = count($charr)-1;
for ($i=0; $i<=$last_msgc; $i++) {
$charr[$i] = trim($charr[$i]);
if ($inp==$charr[$i]) {
$toreturn = $i+1;
for ($ri=$toreturn; $ri<=$last_msgc; $ri++)
{ $retmsg .= $charr[$ri]."\n"; }}}
return $retmsg; }
$count=0;
while(connection_status()===0) {
$mm = glmsg();
sleep(1);
//usleep(500000);
$mm2 = cmpmsg($mm);
$count++;
$check=($count % 30);
if ($check==0) { echo " "; }
if ($mm2!="") {
$ds = explode("\n", $mm2);
$dc = count($ds)-1;
for ($i=0; $i<$dc; $i++) {
if (ereg("<!--(.+)-->([a-zA-Z0-9à-ÿÀ-ß_\-]+)::([a-zA-Z0-9à-ÿÀ-ß_\-]+)::([^<]*)<br>", $ds[$i], $nk)) {
$nk[4] = smiles($nk[4], $nk[2]);
if ($nickname==$nk[2]) { echo "<b>$personalfor $nk[3]:</b> ". stripslashes($nk[4]). "<script>move();</script><br>"; }
if ($nickname==$nk[3]) { echo "<b>$personalfrom $nk[2]:</b> ". stripslashes($nk[4]). "<script>move();</script><br>"; }
} else {
$fk = ereg("<!--(.+)--><font color=[^>]+>([a-zA-Z0-9à-ÿÀ-ß_\-]+)</font>", $ds[$i], $nk);
$ds[$i] = smiles($ds[$i], $nk[2]);
echo stripslashes($ds[$i])."<script>move();</script>"; }
//if $mm2
}
//while
}
exit;
?>
</body>
