Folgendes Problem stört mich seit ettlichen wochen und verfolgt mich regelrecht.
Ich bin gerade dabei einen kleinen Chat für meine Klasse zu erstellen es geht um den Punkt der Benutzerliste.
Ich schaff es zwar bei Login einen Benutzernamen in die SQL-DB zu speichern und es bei Allen eingeloggten Usern am Browser aktualisiert wird jedoch nicht, das gegenteil
Also wenn sich jemand ausloggt wird zwar der Datensatz in der Datenbank gelöscht allerdings refresht bei keinem der eingeloggten User die Seite sodass der User immer als eingeloggt angezeigt ist. Sobald sich ein neuer User einloggt bleibt der alte (schon ausgeloggte User) immernoch stehen und der Browser fügt quasi nur den neuen Benutzer auf dem Browser ein aber aktualisiert nicht wirklich..
Folgenden Code verwende ich:
Code: Alles auswählen
<?php
function getNewMessagesSince($timestamp, $limit) {
$lastupdate = array();
$html = '';
if($timestamp == -1) {
$sql = 'SELECT id, user FROM chat_online ORDER BY id ASC LIMIT '.intval($limit);
}
else {
$sql = 'SELECT id, user FROM chat_online WHERE id > '.intval($timestamp).' ORDER BY id ASC LIMIT '.intval($limit);
}
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res)) {
$lastupdate[] = $row['id'];
$user_db = $row['user'];
html. = '<div style="font-family : arial, tahoma, verdana, helvetica, sans-serif;"> ' .htmlentities($row['user'], ENT_QUOTES, 'ISO8859-15'). '</div>';
}
if(count($lastupdate)) {
rsort($lastupdate);
return array(
'lastupdate' => array_shift($lastupdate),
'html' => $html
);
}
return false;
}
$lastupdate = isset($_POST['lastupdate']) ? $_POST['lastupdate'] : null;
$limit = isset($_POST['limit']) ? $_POST['limit'] : 10;
$timeout = time() + 10;
while(!($row = getNewMessagesSince($lastupdate, $limit)) && time() < $timeout) {
usleep(200000);
}
echo json_encode($row);
?>
Also wenn der Browser geschlossen wird, die Seasson zerstört wird ist der Nutzername immernoch in der Datenbank. Ich hab keine ahnung wie ich das realisieren soll

Bitte um Hilfe
Bones van Helghast